Fix chibios when mouse and nkro disabled (#7312)

This commit is contained in:
Joel Challis 2019-11-10 17:02:46 +00:00 committed by Drashna Jaelre
parent 60e4921378
commit 1d4287cb95

View file

@ -379,7 +379,6 @@ static void set_led_transfer_cb(USBDriver *usbp) {
/* Callback for SETUP request on the endpoint 0 (control) */ /* Callback for SETUP request on the endpoint 0 (control) */
static bool usb_request_hook_cb(USBDriver *usbp) { static bool usb_request_hook_cb(USBDriver *usbp) {
const USBDescriptor *dp; const USBDescriptor *dp;
int has_report_id;
/* usbp->setup fields: /* usbp->setup fields:
* 0: bmRequestType (bitmask) * 0: bmRequestType (bitmask)
@ -432,26 +431,17 @@ static bool usb_request_hook_cb(USBDriver *usbp) {
switch (usbp->setup[1]) { /* bRequest */ switch (usbp->setup[1]) { /* bRequest */
case HID_SET_REPORT: case HID_SET_REPORT:
switch (usbp->setup[4]) { /* LSB(wIndex) (check MSB==0 and wLength==1?) */ switch (usbp->setup[4]) { /* LSB(wIndex) (check MSB==0 and wLength==1?) */
case KEYBOARD_INTERFACE:
#if defined(SHARED_EP_ENABLE) && !defined(KEYBOARD_SHARED_EP) #if defined(SHARED_EP_ENABLE) && !defined(KEYBOARD_SHARED_EP)
case SHARED_INTERFACE: case SHARED_INTERFACE:
usbSetupTransfer(usbp, set_report_buf, sizeof(set_report_buf), set_led_transfer_cb);
return TRUE;
break;
#endif #endif
case KEYBOARD_INTERFACE:
/* keyboard_led_stats = <read byte from next OUT report> /* keyboard_led_stats = <read byte from next OUT report>
* keyboard_led_stats needs be word (or dword), otherwise we get an exception on F0 */ * keyboard_led_stats needs be word (or dword), otherwise we get an exception on F0 */
has_report_id = 0; usbSetupTransfer(usbp, (uint8_t *)&keyboard_led_stats, 1, NULL);
#if defined(SHARED_EP_ENABLE)
if (usbp->setup[4] == SHARED_INTERFACE) {
has_report_id = 1;
}
#endif
if (usbp->setup[4] == KEYBOARD_INTERFACE && !keyboard_protocol) {
has_report_id = 0;
}
if (has_report_id) {
usbSetupTransfer(usbp, set_report_buf, sizeof(set_report_buf), set_led_transfer_cb);
} else {
usbSetupTransfer(usbp, (uint8_t *)&keyboard_led_stats, 1, NULL);
}
return TRUE; return TRUE;
break; break;
} }