usb-enum: refactor enum

parent ecc9481a
......@@ -17,26 +17,38 @@ struct oua_usb_dev {
char busnum[6];
char devnum[6];
char portnum[6];
char busport[16];
char devno[10];
char serial[256];
};
static struct oua_usb_dev usb_dev[MAX_OUA];
static struct oua_devlist {
struct oua_devlist {
struct oua_usb_dev *devs;
int ndevs;
} devlist = { usb_dev, -1, };
};
void oua_display_devlist(struct oua_devlist *ls)
{
int i;
for (i = 0; i < ls->ndevs; i++) {
struct oua_usb_dev *entry = &ls->devs[i];
printf("%d: busdev:%s:%s bus-port:%s devno:%s serial:%s devpath:%s\n",
i, entry->busnum, entry->devnum,
entry->busport, entry->devno, entry->serial, entry->path);
}
}
static int oua_enumerate(char *vendor_id, char *device_id);
static struct oua_usb_dev usb_dev[MAX_OUA];
static struct oua_devlist devlist = { usb_dev, -1, };
static int oua_enumerate(char *vendor_id, char *device_id)
static struct oua_devlist *oua_enumerate(char *vendor_id, char *device_id)
{
struct udev *udev = udev_new();
struct udev_enumerate *enumerate = udev_enumerate_new(udev);
struct udev_list_entry *devs, *ptr, *ptr2;
int found_devs = 0;
//udev_enumerate_add_match_subsystem(enumerate, "tty");
udev_enumerate_add_match_property(enumerate, "ID_VENDOR_ID", vendor_id);
udev_enumerate_add_match_property(enumerate, "ID_MODEL_ID", device_id);
udev_enumerate_scan_devices(enumerate);
......@@ -53,30 +65,24 @@ static int oua_enumerate(char *vendor_id, char *device_id)
strcpy(entry->devnum, udev_device_get_sysattr_value(dev, "devnum"));
strcpy(entry->devno, udev_device_get_sysattr_value(dev, "dev"));
strcpy(entry->serial, udev_device_get_sysattr_value(dev, "serial"));
strcpy(entry->busport, rindex(entry->path, '/') + 1);
found_devs++;
udev_device_unref(dev);
}
out:
udev_enumerate_unref(enumerate);
return found_devs;
devlist.ndevs = found_devs;
return &devlist;
}
int main(int argc, char *argv[])
{
int i, devs;
struct oua_devlist *list;
devs = oua_enumerate(ID_VENDOR_ID, ID_DEVICE_ID);
for (i = 0; i < devs; i++) {
struct oua_usb_dev *entry = &usb_dev[i];
char busport[16];
list = oua_enumerate(ID_VENDOR_ID, ID_DEVICE_ID);
oua_display_devlist(list);
strcpy(busport, rindex(entry->path, '/') + 1);
printf("bus:dev %03ld:%03ld, bus-port %s, devno: %s, serial: %s, devpath=[%s]\n",
strtoul(entry->busnum, NULL, 0),
strtoul(entry->devnum, NULL, 0),
busport, entry->devno, entry->serial, entry->path);
}
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment