void hub_client2(char **tabcmd, t_client clt) { if (ft_strcmp(tabcmd[0], "lls") == 0) lls(tabcmd); else if (ft_strcmp(tabcmd[0], "lpwd") == 0) ft_putendl(getcwd(NULL, 0)); else if (ft_strcmp(tabcmd[0], "lcd") == 0) lcd(tabcmd, clt); else if (ft_strcmp(tabcmd[0], "put") == 0) put_hub(tabcmd, clt); else if (ft_strcmp(tabcmd[0], "get") == 0) get_hub(tabcmd, clt); else parse_error(tabcmd[0]); }
int main (int argc, const char *argv[]) { int busnum = 0, devnum = 0; int cmd = COMMAND_SET_NONE; int port = 1; int value = 0; int request, feature, index; int result = 0; int listing = 0; int verbose = 0; int hub = -1; libusb_device_handle *uh = NULL; int i; if (argc == 1) listing = 1; for (i = 1; i < argc; i++) if (argv[i][0] == '-') switch (argv[i][1]) { case 'h': if (++i >= argc || busnum > 0 || devnum > 0) exit_with_usage (argv[0]); hub = atoi (argv[i]); break; case 'b': if (++i >= argc || hub >= 0) exit_with_usage (argv[0]); busnum = atoi (argv[i]); break; case 'd': if (++i >= argc || hub >= 0) exit_with_usage (argv[0]); devnum = atoi (argv[i]); break; case 'P': if (++i >= argc) exit_with_usage (argv[0]); port = atoi (argv[i]); break; case 'l': if (cmd != COMMAND_SET_NONE) exit_with_usage (argv[0]); if (++i < argc) value = atoi (argv[i]); else value = HUB_LED_GREEN; cmd = COMMAND_SET_LED; break; case 'p': if (cmd != COMMAND_SET_NONE) exit_with_usage (argv[0]); if (++i < argc) value = atoi (argv[i]); else value= 0; cmd = COMMAND_SET_POWER; break; case 'v': verbose = 1; if (argc == 2) listing = 1; break; default: exit_with_usage (argv[0]); } else exit_with_usage (argv[0]); if ((busnum > 0 && devnum <= 0) || (busnum <= 0 && devnum > 0)) /* BUS is specified, but DEV is'nt, or ... */ exit_with_usage (argv[0]); /* Default is the hub #0 */ if (hub < 0 && busnum == 0) hub = 0; /* Default is POWER */ if (cmd == COMMAND_SET_NONE) cmd = COMMAND_SET_POWER; libusb_init ( &ctx ); libusb_set_debug( ctx, 3 ); if (usb_find_hubs (listing, verbose, busnum, devnum, hub) <= 0) { fprintf (stderr, "No hubs found.\n"); libusb_exit( ctx ); exit (1); } if (listing){ libusb_exit( ctx ); exit (0); } if (hub < 0) hub = get_hub (busnum, devnum); if (hub >= 0 && hub < number_of_hubs_with_feature){ if ( libusb_open (hubs[hub].dev, &uh ) || uh == NULL) { fprintf (stderr, "Device not found.\n"); result = 1; } else { if (cmd == COMMAND_SET_POWER){ if (value){ request = LIBUSB_REQUEST_SET_FEATURE; feature = USB_PORT_FEAT_POWER; index = port; }else{ request = LIBUSB_REQUEST_CLEAR_FEATURE; feature = USB_PORT_FEAT_POWER; index = port; } }else{ request = LIBUSB_REQUEST_SET_FEATURE; feature = USB_PORT_FEAT_INDICATOR; index = (value << 8) | port; } if (verbose) printf ("Send control message (REQUEST=%d, FEATURE=%d, INDEX=%d)\n", request, feature, index); /* if(libusb_detach_kernel_driver( uh, 0 )) perror("libusb_detach_kernel_driver"); if(libusb_claim_interface( uh, 0 )) perror("libusb_claim_interface"); */ if (libusb_control_transfer (uh, USB_RT_PORT, request, feature, index, NULL, 0, CTRL_TIMEOUT) < 0) { perror ("failed to control.\n"); result = 1; } if (verbose) hub_port_status (uh, hubs[hub].nport, hubs[hub].usb3); /* libusb_release_interface( uh,0 ); libusb_attach_kernel_driver( uh, 0); */ libusb_close (uh); } } libusb_exit( ctx ); exit (result); }
int usb_hub_port1_power_ctr(int value) //main (int argc, const char *argv[]) { int busnum = 0, devnum = 0; int cmd = COMMAND_SET_NONE; int port = 1; //int value = 0; int request, feature, index; int result = 0; int listing = 0; int verbose = 0; int hub = -1; usb_dev_handle *uh = NULL; int i; #if 0 if (argc == 1) listing = 1; for (i = 1; i < argc; i++) if (argv[i][0] == '-') switch (argv[i][1]) { case 'h': if (++i >= argc || busnum > 0 || devnum > 0) exit_with_usage (argv[0]); hub = atoi (argv[i]); break; case 'b': if (++i >= argc || hub >= 0) exit_with_usage (argv[0]); busnum = atoi (argv[i]); break; case 'd': if (++i >= argc || hub >= 0) exit_with_usage (argv[0]); devnum = atoi (argv[i]); break; case 'P': if (++i >= argc) exit_with_usage (argv[0]); port = atoi (argv[i]); break; case 'l': if (cmd != COMMAND_SET_NONE) exit_with_usage (argv[0]); if (++i < argc) value = atoi (argv[i]); else value = HUB_LED_GREEN; cmd = COMMAND_SET_LED; break; case 'p': if (cmd != COMMAND_SET_NONE) exit_with_usage (argv[0]); if (++i < argc) value = atoi (argv[i]); else value= 0; cmd = COMMAND_SET_POWER; break; case 'v': verbose = 1; if (argc == 2) listing = 1; break; default: exit_with_usage (argv[0]); } else exit_with_usage (argv[0]); if ((busnum > 0 && devnum <= 0) || (busnum <= 0 && devnum > 0)) /* BUS is specified, but DEV is'nt, or ... */ exit_with_usage (argv[0]); #else listing = 1; int return_busnum, return_devnum ; int *p_return_busnum = & return_busnum ; int *p_return_devnum = & return_devnum ; #endif /* Default is the hub #0 */ if (hub < 0 && busnum == 0) hub = 0; /* Default is POWER */ if (cmd == COMMAND_SET_NONE) cmd = COMMAND_SET_POWER; usb_init (); usb_find_busses (); usb_find_devices (); if ( usb_find_hubs ( p_return_busnum,p_return_devnum ,listing, verbose, busnum, devnum, hub) //usb_find_hubs (listing, verbose, busnum, devnum, hub) <= 0) { fprintf (stderr, "No hubs found.\n"); exit (1); } else { //printf ("Hub %d:%d\n",return_busnum,return_devnum); busnum=return_busnum; devnum=return_devnum; } #if 0 if (listing) exit (0); #endif if (hub < 0) hub = get_hub (busnum, devnum); if (hub >= 0 && hub < number_of_hubs_with_feature) uh = usb_open (hubs[hub].dev); if (uh == NULL) { fprintf (stderr, "Device not found.\n"); result = 1; } else { if (cmd == COMMAND_SET_POWER) if (value) { request = USB_REQ_SET_FEATURE; feature = USB_PORT_FEAT_POWER; index = port; } else { request = USB_REQ_CLEAR_FEATURE; feature = USB_PORT_FEAT_POWER; index = port; } else { request = USB_REQ_SET_FEATURE; feature = USB_PORT_FEAT_INDICATOR; index = (value << 8) | port; } if (verbose) printf ("Send control message (REQUEST=%d, FEATURE=%d, INDEX=%d)\n", request, feature, index); if (usb_control_msg (uh, USB_RT_PORT, request, feature, index, NULL, 0, CTRL_TIMEOUT) < 0) { perror ("failed to control.\n"); result = 1; } if (verbose) hub_port_status (uh, hubs[hub].nport); usb_close (uh); } //exit (result); return (result); }