Przeglądaj źródła

Workaround corrupted USB packets when status shows ready too soon

main
PaulStoffregen 5 lat temu
rodzic
commit
9026659eaa
4 zmienionych plików z 4 dodań i 0 usunięć
  1. +1
    -0
      teensy4/usb_joystick.c
  2. +1
    -0
      teensy4/usb_keyboard.c
  3. +1
    -0
      teensy4/usb_mouse.c
  4. +1
    -0
      teensy4/usb_touch.c

+ 1
- 0
teensy4/usb_joystick.c Wyświetl plik

if (!usb_configuration) return -1; if (!usb_configuration) return -1;
yield(); yield();
} }
delayNanoseconds(30); // TODO: why is status ready too soon?
uint8_t *buffer = txbuffer + head * TX_BUFSIZE; uint8_t *buffer = txbuffer + head * TX_BUFSIZE;
memcpy(buffer, usb_joystick_data, JOYSTICK_SIZE); memcpy(buffer, usb_joystick_data, JOYSTICK_SIZE);
usb_prepare_transfer(xfer, buffer, JOYSTICK_SIZE, 0); usb_prepare_transfer(xfer, buffer, JOYSTICK_SIZE, 0);

+ 1
- 0
teensy4/usb_keyboard.c Wyświetl plik

if (!usb_configuration) return -1; if (!usb_configuration) return -1;
yield(); yield();
} }
delayNanoseconds(30); // min req'd 11 ns, TODO: why is status ready too soon?
uint8_t *buffer = txbuffer + head * TX_BUFSIZE; uint8_t *buffer = txbuffer + head * TX_BUFSIZE;
memcpy(buffer, data, len); memcpy(buffer, data, len);
usb_prepare_transfer(xfer, buffer, len, 0); usb_prepare_transfer(xfer, buffer, len, 0);

+ 1
- 0
teensy4/usb_mouse.c Wyświetl plik

if (!usb_configuration) return -1; if (!usb_configuration) return -1;
yield(); yield();
} }
delayNanoseconds(30); // TODO: why is status ready too soon?
uint8_t *buffer = txbuffer + head * TX_BUFSIZE; uint8_t *buffer = txbuffer + head * TX_BUFSIZE;
memcpy(buffer, data, len); memcpy(buffer, data, len);
usb_prepare_transfer(xfer, buffer, len, 0); usb_prepare_transfer(xfer, buffer, len, 0);

+ 1
- 0
teensy4/usb_touch.c Wyświetl plik

if (status & 0x68) { if (status & 0x68) {
// TODO: what if status has errors??? // TODO: what if status has errors???
} }
delayNanoseconds(30); // TODO: is this needed? (probably not)
uint8_t *buffer = txbuffer + head * TX_BUFSIZE; uint8_t *buffer = txbuffer + head * TX_BUFSIZE;
memcpy(buffer, data, MULTITOUCH_SIZE); memcpy(buffer, data, MULTITOUCH_SIZE);
usb_prepare_transfer(xfer, buffer, MULTITOUCH_SIZE, 0); usb_prepare_transfer(xfer, buffer, MULTITOUCH_SIZE, 0);

Ładowanie…
Anuluj
Zapisz