int main (int argc, char **argv) { int fd, c, i; /* random initial serial number */ srand ((int) time (0)); for (i = 0; i < sizeof serial - 1; ) { c = rand () % 127; if ((('a' <= c && c <= 'z') || ('0' <= c && c <= '9'))) serial [i++] = c; } source_thread = simple_source_thread; sink_thread = simple_sink_thread; while ((c = getopt (argc, argv, "I:a:i:o:p:r:s:v")) != EOF) { switch (c) { #ifdef AIO /* "-s1020 -I0 -a20" does ~1K/usec, 20 usecs buffered */ case 'I': /* ISO */ iso = 1; /* interval is log2(period-in-frames); it's * ignored if high bandwidth could kick in */ interval = atoi (optarg); source_thread = aio_in_thread; sink_thread = aio_out_thread; continue; case 'a': /* aio IN/OUT qlen */ aio_in = aio_out = atoi (optarg); source_thread = aio_in_thread; sink_thread = aio_out_thread; continue; case 'i': /* aio IN qlen */ aio_in = atoi (optarg); source_thread = aio_in_thread; continue; case 'o': /* aio OUT qlen */ aio_out = atoi (optarg); sink_thread = aio_out_thread; continue; case 's': /* iso buffer size */ /* for iso, "-s 1025" and higher is high bandwidth */ bufsize = atoi (optarg); continue; #endif case 'p': /* i/o pattern */ pattern = atoi (optarg); continue; case 'r': /* nonrandom serial */ strncpy (serial, optarg, sizeof serial - 1); continue; case 'v': /* verbose */ verbose++; continue; } fprintf (stderr, "usage: %s " #ifdef AIO "[-I interval] [-a num] [-s iso_size] " #endif "[-p pattern] [-r serial] [-v]\n", argv [0]); return 1; } if (chdir ("/dev/gadget") < 0) { perror ("can't chdir /dev/gadget"); return 1; } fd = init_device (); if (fd < 0) return 1; fprintf (stderr, "/dev/gadget/%s ep0 configured\nserial=\"%s\"\n", DEVNAME, serial); fflush (stderr); (void) ep0_thread (&fd); return 0; }
int main (int argc, char **argv) { /*printf("%s:%d\n", __FILE__, __LINE__);*/ int fd, c, i; struct gengetopt_args_info cmdline; /* Parse command line */ if (cmdline_parser (argc, argv, &cmdline) != 0) exit(1); doiintf = cmdline.interface_arg; productid = cmdline.product_arg; vendorid = cmdline.vendor_arg; verbose = cmdline.verbose_given; doint = cmdline.interrupt_flag; gadgetfs = cmdline.gadgetfs_arg; if (cmdline.info_flag) return print_avail(verbose); if (ccid_initialize(cmdline.reader_arg, verbose) < 0) { fprintf (stderr, "Can't initialize ccid\n"); return 1; } if (chdir (gadgetfs) < 0) { fprintf (stderr, "Error changing directory to %s\n", gadgetfs); return 1; } if (strncmp(cmdline.serial_arg, "random", strlen("random")) == 0) { /* random initial serial number */ srand ((int) time (0)); for (i = 0; i < sizeof serial - 1; ) { c = rand () % 127; if ((('a' <= c && c <= 'z') || ('0' <= c && c <= '9'))) serial [i++] = c; } if (verbose) fprintf (stderr, "serial=\"%s\"\n", serial); } else { for (i=0; i<sizeof stringtab/sizeof(struct usb_string); i++) { if (stringtab[i].id == STRINGID_SERIAL) { stringtab[i].s = cmdline.serial_arg; break; } } if (verbose) fprintf (stderr, "serial=\"%s\"\n", cmdline.serial_arg); } if (doiintf) { for (i=0; i<sizeof stringtab/sizeof(struct usb_string); i++) { if (stringtab[i].id == STRINGID_INTERFACE) { stringtab[i].s = doiintf; break; } } } fd = init_device (); if (fd < 0) return 1; if (debug) fprintf (stderr, "%s%s ep0 configured\n", gadgetfs, DEVNAME); fflush (stdout); fflush (stderr); (void) ep0_thread (&fd); cmdline_parser_free(&cmdline); return 0; }