Merge "More fine-grained exception handling so we can still use non-excepting descriptors." into oc-dr1-dev
am: 84a60bf9e8
Change-Id: Ica095cfa4d341916fdb3ab1f9948c693c9471733
This commit is contained in:
@@ -118,8 +118,7 @@ public class UsbDescriptorParser {
|
|||||||
/**
|
/**
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public boolean parseDescriptors(byte[] descriptors) {
|
public void parseDescriptors(byte[] descriptors) {
|
||||||
try {
|
|
||||||
mDescriptors.clear();
|
mDescriptors.clear();
|
||||||
|
|
||||||
ByteStream stream = new ByteStream(descriptors);
|
ByteStream stream = new ByteStream(descriptors);
|
||||||
@@ -127,18 +126,20 @@ public class UsbDescriptorParser {
|
|||||||
UsbDescriptor descriptor = allocDescriptor(stream);
|
UsbDescriptor descriptor = allocDescriptor(stream);
|
||||||
if (descriptor != null) {
|
if (descriptor != null) {
|
||||||
// Parse
|
// Parse
|
||||||
|
try {
|
||||||
descriptor.parseRawDescriptors(stream);
|
descriptor.parseRawDescriptors(stream);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Log.e(TAG, "Exception parsing USB descriptors.", ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Its OK to add the invalid descriptor as the postParse()
|
||||||
|
// routine will mark it as invalid.
|
||||||
mDescriptors.add(descriptor);
|
mDescriptors.add(descriptor);
|
||||||
|
|
||||||
// Clean up
|
// Clean up
|
||||||
descriptor.postParse(stream);
|
descriptor.postParse(stream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
} catch (Exception ex) {
|
|
||||||
Log.e(TAG, "Exception parsing USB descriptors.", ex);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -146,7 +147,11 @@ public class UsbDescriptorParser {
|
|||||||
*/
|
*/
|
||||||
public boolean parseDevice(String deviceAddr) {
|
public boolean parseDevice(String deviceAddr) {
|
||||||
byte[] rawDescriptors = getRawDescriptors(deviceAddr);
|
byte[] rawDescriptors = getRawDescriptors(deviceAddr);
|
||||||
return rawDescriptors != null && parseDescriptors(rawDescriptors);
|
if (rawDescriptors != null) {
|
||||||
|
parseDescriptors(rawDescriptors);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native byte[] getRawDescriptors(String deviceAddr);
|
private native byte[] getRawDescriptors(String deviceAddr);
|
||||||
|
|||||||
Reference in New Issue
Block a user