diff --git a/app/src/main/java/com/openipc/pixelpilot/UsbDeviceFilter.java b/app/src/main/java/com/openipc/pixelpilot/UsbDeviceFilter.java index f59ecfd9..ebcd1b6f 100644 --- a/app/src/main/java/com/openipc/pixelpilot/UsbDeviceFilter.java +++ b/app/src/main/java/com/openipc/pixelpilot/UsbDeviceFilter.java @@ -31,8 +31,8 @@ public static List parseXml(Context context, int resourceId) String vendorIdString = parser.getAttributeValue(null, "vendor-id"); String productIdString = parser.getAttributeValue(null, "product-id"); - int vendorId = Integer.parseInt(vendorIdString, 16); - int productId = Integer.parseInt(productIdString, 16); + int vendorId = parseHexId(vendorIdString); + int productId = parseHexId(productIdString); UsbDeviceFilter device = new UsbDeviceFilter(vendorId, productId); devices.add(device); @@ -42,4 +42,12 @@ public static List parseXml(Context context, int resourceId) } return devices; } + + private static int parseHexId(String value) { + if (value == null) { + throw new IllegalArgumentException("USB ID is missing"); + } + String normalized = value.trim().replaceFirst("^0[xX]", ""); + return Integer.parseInt(normalized, 16); + } } diff --git a/app/src/main/java/com/openipc/pixelpilot/WfbLinkManager.java b/app/src/main/java/com/openipc/pixelpilot/WfbLinkManager.java index 8580be69..f8175fd8 100644 --- a/app/src/main/java/com/openipc/pixelpilot/WfbLinkManager.java +++ b/app/src/main/java/com/openipc/pixelpilot/WfbLinkManager.java @@ -97,8 +97,8 @@ public Map getAttachedAdapters() { try { filters = UsbDeviceFilter.parseXml(context, R.xml.usb_device_filter); } catch (Exception e) { - e.printStackTrace(); - return null; + Log.e(TAG, "Unable to parse USB device filter", e); + return new HashMap<>(); } Map res = new HashMap<>(); diff --git a/app/src/main/res/xml/usb_device_filter.xml b/app/src/main/res/xml/usb_device_filter.xml index d3c40a60..1774817c 100644 --- a/app/src/main/res/xml/usb_device_filter.xml +++ b/app/src/main/res/xml/usb_device_filter.xml @@ -1,45 +1,73 @@ + product-id="0x8812" + vendor-id="0x0BDA" /> + product-id="0x881A" + vendor-id="0x0BDA" /> + product-id="0x881B" + vendor-id="0x0BDA" /> + product-id="0x0101" + vendor-id="0x2357" /> + product-id="0x0103" + vendor-id="0x2357" /> + product-id="0x010D" + vendor-id="0x2357" /> + product-id="0x010E" + vendor-id="0x2357" /> + product-id="0x17D2" + vendor-id="0x0B05" /> + product-id="0x0012" + vendor-id="0x2604" /> + product-id="0x0408" + vendor-id="0x0409" /> + product-id="0x3426" + vendor-id="0x0586" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + product-id="0xA81A" + vendor-id="0x0BDA" /> + product-id="0xA82A" + vendor-id="0x0BDA" /> + product-id="0xE822" + vendor-id="0x0BDA" />