|
|
|
|
|
|
|
|
|
|
|
|
|
|
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; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|