listusb: display USB vendor and devices names based on usb.ids

* download usb.ids, processed like pci.ids to generate a header.
* best would be to load and parse the file at runtime with shared code.
This commit is contained in:
Jérôme Duval
2012-02-18 14:25:10 +01:00
parent c3f7a9bca5
commit 4ea3e0d3b8
6 changed files with 154 additions and 26 deletions
+14 -14
View File
@@ -1,23 +1,25 @@
/*
* Copyright 2008, Haiku, Inc. All Rights Reserved.
* Copyright 2008-2012, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* Jérôme Duval
*/
#include <stdio.h>
#include "usbdevs.h"
#include "usbdevs_data.h"
#include "usbhdr.h"
void
usb_get_vendor_info(uint16 vendorID, const char **vendorName)
{
int i;
for (i = 0; usb_knowndevs[i].vendor != 0; i++) {
if (usb_knowndevs[i].vendor == vendorID) {
*vendorName = usb_knowndevs[i].vendorname;
for (i = 0; i < (int)USB_VENTABLE_LEN; i++) {
if (UsbVenTable[i].VenId == vendorID) {
*vendorName = UsbVenTable[i].VenName && UsbVenTable[i].VenName[0]
? UsbVenTable[i].VenName : NULL;
return;
}
}
@@ -26,18 +28,16 @@ usb_get_vendor_info(uint16 vendorID, const char **vendorName)
void
usb_get_vendor_device_info(uint16 vendorID, uint16 deviceID, const char **vendorName, const char **deviceName)
usb_get_device_info(uint16 vendorID, uint16 deviceID, const char **deviceName)
{
int i;
for (i = 0; usb_knowndevs[i].vendor != 0; i++) {
if (usb_knowndevs[i].vendor == vendorID
&& usb_knowndevs[i].product == deviceID
&& usb_knowndevs[i].flags != USB_KNOWNDEV_NOPROD) {
*deviceName = usb_knowndevs[i].productname;
*vendorName = usb_knowndevs[i].vendorname;
// search for the device
for (i = 0; i < (int)USB_DEVTABLE_LEN; i++) {
if (UsbDevTable[i].VenId == vendorID && UsbDevTable[i].DevId == deviceID ) {
*deviceName = UsbDevTable[i].ChipDesc && UsbDevTable[i].ChipDesc[0]
? UsbDevTable[i].ChipDesc : NULL;
return;
}
}
*vendorName = NULL;
*deviceName = NULL;
}