Commit 57d692145dda563e40da293efb5cbb415d563c33

Authored by Chris Burton
1 parent d3760e11

Add option to look for CM with specific USB path.

Showing 1 changed file with 17 additions and 3 deletions
... ... @@ -22,6 +22,7 @@ int overlay = 0;
22 22 long delay = 500;
23 23 char * directory = NULL;
24 24 char pathname[18] = {0};
  25 +char * targetpathname = NULL;
25 26 uint8_t targetPortNo = 99;
26 27  
27 28 int out_ep;
... ... @@ -60,6 +61,7 @@ void usage(int error)
60 61 fprintf(dest, " -v : Verbose\n");
61 62 fprintf(dest, " -s : Signed using bootsig.bin\n");
62 63 fprintf(dest, " -0/1/2/3/4/5/6 : Only look for CMs attached to USB port number 0-6\n");
  64 + fprintf(dest, " -p [pathname] : Only look for CM with USB pathname\n");
63 65 fprintf(dest, " -h : This help\n");
64 66  
65 67 exit(error ? -1 : 0);
... ... @@ -87,7 +89,7 @@ libusb_device_handle * LIBUSB_CALL open_device_with_vid(
87 89 if (r < 0)
88 90 goto out;
89 91  
90   - if(overlay || verbose == 2)
  92 + if(overlay || verbose == 2 || targetpathname!=NULL)
91 93 {
92 94 r = libusb_get_port_numbers(dev, path, sizeof(path));
93 95 len = snprintf(&pathname[len], 18-len, "%d", libusb_get_bus_number(dev));
... ... @@ -165,7 +167,8 @@ libusb_device_handle * LIBUSB_CALL open_device_with_vid(
165 167 ///////////////////////////////////////////////////////////////////////
166 168 // Check if we should match against a specific port number
167 169 ///////////////////////////////////////////////////////////////////////
168   - if (targetPortNo == 99 || portNo == targetPortNo)
  170 + if ((targetPortNo == 99 || portNo == targetPortNo) &&
  171 + (targetpathname==NULL||strcmp(targetpathname,pathname)==0))
169 172 {
170 173 if(verbose) printf("Device located successfully\n");
171 174 found = dev;
... ... @@ -174,7 +177,7 @@ libusb_device_handle * LIBUSB_CALL open_device_with_vid(
174 177 else
175 178 {
176 179 if(verbose == 2)
177   - printf("...Wrong Port, Trying again\n");
  180 + printf("...Wrong Port/Path, Trying again\n");
178 181 }
179 182 }
180 183 }
... ... @@ -307,6 +310,13 @@ void get_options(int argc, char *argv[])
307 310 usage(1);
308 311 directory = *argv;
309 312 }
  313 + else if(strcmp(*argv, "-p") == 0)
  314 + {
  315 + argv++; argc--;
  316 + if(argc < 1)
  317 + usage(1);
  318 + targetpathname = *argv;
  319 + }
310 320 else if(strcmp(*argv, "-h") == 0 || strcmp(*argv, "--help") == 0)
311 321 {
312 322 usage(0);
... ... @@ -381,6 +391,10 @@ void get_options(int argc, char *argv[])
381 391 {
382 392 usage(1);
383 393 }
  394 + if((targetPortNo != 99) && (targetpathname != NULL))
  395 + {
  396 + usage(1);
  397 + }
384 398 }
385 399  
386 400 boot_message_t boot_message;
... ...