소스 검색

Handle disconnect device from hub

main
PaulStoffregen 7 년 전
부모
커밋
98701a268f
1개의 변경된 파일18개의 추가작업 그리고 2개의 파일을 삭제
  1. +18
    -2
      hub.cpp

+ 18
- 2
hub.cpp 파일 보기

@@ -362,6 +362,7 @@ void USBHub::new_port_status(uint32_t port, uint32_t status)
port_doing_reset = port;
}
} else {
stop_debounce_timer(port);
state = PORT_DISCONNECT;
}
break;
@@ -375,11 +376,26 @@ void USBHub::new_port_status(uint32_t port, uint32_t status)
else if (status & 0x0400) speed = 2;
port_doing_reset_speed = speed;
resettimer.start(25000);
} else if (!(status & 0x0001)) {
send_clearstatus_connect(port);
USBHub::reset_busy = false;
state = PORT_DISCONNECT;
}
break;
case PORT_RECOVERY:
if (!(status & 0x0001)) {
send_clearstatus_connect(port);
USBHub::reset_busy = false;
state = PORT_DISCONNECT;
}
break;
case PORT_ACTIVE:
if (!(status & 0x0001)) {
disconnect_Device(devicelist[port-1]);
devicelist[port-1] = NULL;
send_clearstatus_connect(port);
state = PORT_DISCONNECT;
}
break;
}
}
@@ -428,8 +444,8 @@ void USBHub::timer_event(USBDriverTimer *timer)
}

// 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)

Loading…
취소
저장