Browse Source

Fix hub debounce timer port status requests

main
PaulStoffregen 7 years ago
parent
commit
920f71e768
2 changed files with 6 additions and 3 deletions
  1. +4
    -2
      hub.cpp
  2. +2
    -1
      k66_usbhost.ino

+ 4
- 2
hub.cpp View File

{ {
if (port > numports) return; if (port > numports) return;
if (can_send_control_now()) { if (can_send_control_now()) {
println("getstatus, port = ", port);
println("getstatus, port = ", port);
mk_setup(setup, ((port > 0) ? 0xA3 : 0xA0), 0, 0, port, 4); mk_setup(setup, ((port > 0) ? 0xA3 : 0xA0), 0, 0, port, 4);
queue_Control_Transfer(device, &setup, &statusbits, this); queue_Control_Transfer(device, &setup, &statusbits, this);
send_pending_getstatus &= ~(1 << port); send_pending_getstatus &= ~(1 << port);
} else { } else {
println("deferred getstatus, port = ", port);
send_pending_getstatus |= (1 << port); send_pending_getstatus |= (1 << port);
} }
} }
println(", timer = ", (uint32_t)timer, HEX); println(", timer = ", (uint32_t)timer, HEX);
if (timer == &debouncetimer) { if (timer == &debouncetimer) {
uint32_t in_use = debounce_in_use; uint32_t in_use = debounce_in_use;
println("ports in use bitmask = ", in_use, HEX);
if (in_use) { if (in_use) {
for (uint32_t i=1; i < numports; i++) {
for (uint32_t i=1; i <= numports; i++) {
if (in_use & (1 << i)) send_getstatus(i); if (in_use & (1 << i)) send_getstatus(i);
} }
debouncetimer.start(20000); debouncetimer.start(20000);

+ 2
- 1
k66_usbhost.ino View File

USBHub hub1; USBHub hub1;
USBHub hub2; USBHub hub2;
USBHub hub3; USBHub hub3;
KeyboardController keyboard;
KeyboardController keyboard1;
KeyboardController keyboard2;
MIDIDevice midi1; MIDIDevice midi1;


void setup() void setup()

Loading…
Cancel
Save