| port_doing_reset = port; | port_doing_reset = port; | ||||
| } | } | ||||
| } else { | } else { | ||||
| stop_debounce_timer(port); | |||||
| state = PORT_DISCONNECT; | state = PORT_DISCONNECT; | ||||
| } | } | ||||
| break; | break; | ||||
| else if (status & 0x0400) speed = 2; | else if (status & 0x0400) speed = 2; | ||||
| port_doing_reset_speed = speed; | port_doing_reset_speed = speed; | ||||
| resettimer.start(25000); | resettimer.start(25000); | ||||
| } else if (!(status & 0x0001)) { | |||||
| send_clearstatus_connect(port); | |||||
| USBHub::reset_busy = false; | |||||
| state = PORT_DISCONNECT; | |||||
| } | } | ||||
| break; | break; | ||||
| case PORT_RECOVERY: | case PORT_RECOVERY: | ||||
| if (!(status & 0x0001)) { | |||||
| send_clearstatus_connect(port); | |||||
| USBHub::reset_busy = false; | |||||
| state = PORT_DISCONNECT; | |||||
| } | |||||
| break; | break; | ||||
| case PORT_ACTIVE: | case PORT_ACTIVE: | ||||
| if (!(status & 0x0001)) { | |||||
| disconnect_Device(devicelist[port-1]); | |||||
| devicelist[port-1] = NULL; | |||||
| send_clearstatus_connect(port); | |||||
| state = PORT_DISCONNECT; | |||||
| } | |||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| // TODO: testing only!!! | // TODO: testing only!!! | ||||
| static uint32_t count=0; | |||||
| if (++count > 36) while (1) ; // stop here | |||||
| //static uint32_t count=0; | |||||
| //if (++count > 36) while (1) ; // stop here | |||||
| } | } | ||||
| void USBHub::start_debounce_timer(uint32_t port) | void USBHub::start_debounce_timer(uint32_t port) |