Compare commits

...

7 commits

Author SHA1 Message Date
Jack Humbert
4a62ff5f9a unify blank reports into one case 2021-10-14 12:35:16 -04:00
Jack Humbert
56ec2854a8
use keyboard report size ref
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2021-10-14 09:43:11 -04:00
Jack Humbert
e52eabe8fa
use the console's ep size ref
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2021-10-14 09:41:35 -04:00
Jack Humbert
9917211afe add mouse to shared interface response 2021-10-13 23:00:45 -04:00
Jack Humbert
eb4793b188 lint ppd 2021-10-13 20:40:04 -04:00
Jack Humbert
41ccca96b7 add more cases for KEYBOARD_SHARED_EP 2021-10-13 20:26:15 -04:00
Jack Humbert
d6cc57f0f1 add back some get_report code for responsiveness 2021-10-13 18:41:31 -04:00

View file

@ -73,12 +73,24 @@ static virtual_timer_t keyboard_idle_timer;
static void keyboard_idle_timer_cb(void *arg);
report_keyboard_t keyboard_report_sent = {{0}};
#ifdef MOUSE_ENABLE
report_mouse_t mouse_report_blank = {0};
#endif /* MOUSE_ENABLE */
report_mouse_t mouse_report_sent = {0};
union {
uint8_t report_id;
report_keyboard_t keyboard;
#ifdef EXTRAKEY_ENABLE
uint8_t extra_report_blank[3] = {0};
#endif /* EXTRAKEY_ENABLE */
report_extra_t extra;
#endif
#ifdef MOUSE_ENABLE
report_mouse_t mouse;
#endif
#ifdef DIGITIZER_ENABLE
report_digitizer_t digitizer;
#endif
#ifdef JOYSTICK_ENABLE
joystick_report_t joystick;
#endif
} universal_report_blank = {0};
/* ---------------------------------------------------------
* Descriptors and USB driver objects
@ -103,7 +115,7 @@ static const USBDescriptor *usb_get_descriptor_cb(USBDriver *usbp, uint8_t dtype
static USBDescriptor desc;
uint16_t wValue = ((uint16_t)dtype << 8) | dindex;
desc.ud_string = NULL;
desc.ud_size = get_usb_descriptor(wValue, wIndex, (const void **const) & desc.ud_string);
desc.ud_size = get_usb_descriptor(wValue, wIndex, (const void **const)&desc.ud_string);
if (desc.ud_string == NULL)
return NULL;
else
@ -566,20 +578,38 @@ static bool usb_request_hook_cb(USBDriver *usbp) {
switch (usbp->setup[1]) { /* bRequest */
case HID_GET_REPORT:
switch (usbp->setup[4]) { /* LSB(wIndex) (check MSB==0?) */
#ifndef KEYBOARD_SHARED_EP
case KEYBOARD_INTERFACE:
usbSetupTransfer(usbp, (uint8_t *)&keyboard_report_sent, sizeof(keyboard_report_sent), NULL);
return TRUE;
break;
#if defined(MOUSE_ENABLE) && !defined(MOUSE_SHARED_EP)
case MOUSE_INTERFACE:
usbSetupTransfer(usbp, (uint8_t *)&mouse_report_blank, sizeof(mouse_report_blank), NULL);
usbSetupTransfer(usbp, (uint8_t *)&keyboard_report_sent, KEYBOARD_REPORT_SIZE, NULL);
return TRUE;
break;
#endif
#if defined(MOUSE_ENABLE) && !defined(MOUSE_SHARED_EP)
case MOUSE_INTERFACE:
usbSetupTransfer(usbp, (uint8_t *)&mouse_report_sent, sizeof(mouse_report_sent), NULL);
return TRUE;
break;
#endif
#ifdef SHARED_EP_ENABLE
case SHARED_INTERFACE:
# ifdef KEYBOARD_SHARED_EP
if (usbp->setup[2] == REPORT_ID_KEYBOARD) {
usbSetupTransfer(usbp, (uint8_t *)&keyboard_report_sent, KEYBOARD_REPORT_SIZE, NULL);
return TRUE;
break;
}
# endif
# ifdef MOUSE_SHARED_EP
if (usbp->setup[2] == REPORT_ID_MOUSE) {
usbSetupTransfer(usbp, (uint8_t *)&mouse_report_sent, sizeof(mouse_report_sent), NULL);
return TRUE;
break;
}
# endif
#endif /* SHARED_EP_ENABLE */
default:
usbSetupTransfer(usbp, NULL, 0, NULL);
universal_report_blank.report_id = usbp->setup[2];
usbSetupTransfer(usbp, (uint8_t *)&universal_report_blank, usbp->setup[6], NULL);
return TRUE;
break;
}
@ -888,6 +918,7 @@ void send_mouse(report_mouse_t *report) {
}
}
usbStartTransmitI(&USB_DRIVER, MOUSE_IN_EPNUM, (uint8_t *)report, sizeof(report_mouse_t));
mouse_report_sent = *report;
osalSysUnlock();
}