| void USBHub::disconnect() | void USBHub::disconnect() | ||||
| { | { | ||||
| // TODO: free resources | |||||
| // disconnect all downstream devices, which may be more hubs | |||||
| for (uint32_t i=0; i < numports; i++) { | |||||
| if (devicelist[i]) disconnect_Device(devicelist[i]); | |||||
| } | |||||
| numports = 0; | |||||
| changepipe = NULL; | |||||
| changebits = 0; | |||||
| sending_control_transfer = 0; | |||||
| port_doing_reset = 0; | |||||
| memset(portstate, 0, sizeof(portstate)); | |||||
| memset(devicelist, 0, sizeof(devicelist)); | |||||
| send_pending_poweron = 0; | |||||
| send_pending_getstatus = 0; | |||||
| send_pending_clearstatus_connect = 0; | |||||
| send_pending_clearstatus_enable = 0; | |||||
| send_pending_clearstatus_suspend = 0; | |||||
| send_pending_clearstatus_overcurrent = 0; | |||||
| send_pending_clearstatus_reset = 0; | |||||
| send_pending_setreset = 0; | |||||
| debounce_in_use = 0; | |||||
| } | } | ||||