Changes between Version 9 and Version 10 of Docs/825gen2/Dev/Devices/USB


Ignore:
Timestamp:
01/18/24 15:27:08 (10 months ago)
Author:
Don Wilson
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Docs/825gen2/Dev/Devices/USB

    v9 v10  
    160160
    161161}}}
     162
     163
     164To programmatically detect what is plugged into each port a structure such as this may be created
     165{{{
     166typedef struct
     167{
     168        const char* portName;
     169        const char* sysfsPath;
     170        const char* usb2sysfsPath;
     171
     172} USBPortInfo_t;
     173
     174const USBPortInfo_t usbPortInfo[] = {
     175                { "USB2",       "/sys/bus/usb/devices/1-1.4",   NULL },
     176                { "USB3-1",     "/sys/bus/usb/devices/2-1.1",   "/sys/bus/usb/devices/1-1.1" },
     177                { "USB3-2",     "/sys/bus/usb/devices/2-1.2",   "/sys/bus/usb/devices/1-1.2" },
     178                { "USB-C",      "/sys/bus/usb/devices/4-1",     NULL },
     179};
     180
     181void ScanUSBports(void)
     182{
     183   int n;
     184   char tmp[100];
     185   struct stat st;
     186   FILE* file;
     187   const char* pathFound;
     188
     189   typedef enum { noUsb, usbFound, usb2Found } USBFound_t;
     190
     191   USBFound_t found = noUsb;
     192
     193   for(n = 0; n < ARRAY_ELEMS(usbPortInfo); n++) {
     194      if(stat(usbPortInfo[n].sysfsPath, &st) == 0) {
     195        found = usbFound;
     196        pathFound = usbPortInfo[n].sysfsPath;
     197      } else if((usbPortInfo[n].usb2sysfsPath != NULL) && (stat(usbPortInfo[n].usb2sysfsPath, &st) == 0)) {
     198        found = usb2Found;
     199        pathFound = usbPortInfo[n].usb2sysfsPath;
     200      } else {
     201        found = noUsb;
     202      }
     203
     204      if(found != noUsb) {
     205         sprintf_s(tmp, "%s/product", pathFound);
     206         file = fopen(tmp, "r");
     207         if(file != NULL) {
     208            if(found == usb2Found) {
     209               strcpy(tmp, "*USB2* ");
     210               fgets(tmp + 7, sizeof(tmp) - 7, file);
     211            } else {
     212               fgets(tmp, sizeof(tmp), file);
     213            }
     214            printf("%s [%s]\r\n", usbPortInfo[n].portName, tmp);
     215            fclose(file);
     216        }
     217       
     218    }
     219
     220}}}