From 11a8ffbaf58342d1f9599178997f5b2f3ad75dd3 Mon Sep 17 00:00:00 2001 From: Kristian Sloth Lauszus Date: Sat, 30 Jun 2018 16:48:25 +0200 Subject: [PATCH] Make sure the composite device is attached before setting the kStatus_USB_Success flag --- right/src/usb_interfaces/usb_interface_basic_keyboard.c | 4 +++- right/src/usb_interfaces/usb_interface_generic_hid.c | 4 ++++ right/src/usb_interfaces/usb_interface_media_keyboard.c | 4 +++- right/src/usb_interfaces/usb_interface_mouse.c | 4 +++- right/src/usb_interfaces/usb_interface_system_keyboard.c | 4 +++- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/right/src/usb_interfaces/usb_interface_basic_keyboard.c b/right/src/usb_interfaces/usb_interface_basic_keyboard.c index 058ccd7..a8431f3 100644 --- a/right/src/usb_interfaces/usb_interface_basic_keyboard.c +++ b/right/src/usb_interfaces/usb_interface_basic_keyboard.c @@ -48,7 +48,9 @@ usb_status_t UsbBasicKeyboardCallback(class_handle_t handle, uint32_t event, voi switch (event) { // This report is received when the report has been sent case kUSB_DeviceHidEventSendResponse: - error = kStatus_USB_Success; + if (UsbCompositeDevice.attach) { + error = kStatus_USB_Success; + } break; case kUSB_DeviceHidEventRecvResponse: case kUSB_DeviceHidEventGetReport: diff --git a/right/src/usb_interfaces/usb_interface_generic_hid.c b/right/src/usb_interfaces/usb_interface_generic_hid.c index 446821e..1fcfe51 100644 --- a/right/src/usb_interfaces/usb_interface_generic_hid.c +++ b/right/src/usb_interfaces/usb_interface_generic_hid.c @@ -18,7 +18,11 @@ usb_status_t UsbGenericHidCallback(class_handle_t handle, uint32_t event, void * usb_status_t error = kStatus_USB_Error; switch (event) { + // This report is received when the report has been sent case kUSB_DeviceHidEventSendResponse: + if (UsbCompositeDevice.attach) { + error = kStatus_USB_Success; + } break; case kUSB_DeviceHidEventRecvResponse: UsbProtocolHandler(); diff --git a/right/src/usb_interfaces/usb_interface_media_keyboard.c b/right/src/usb_interfaces/usb_interface_media_keyboard.c index aa7e74e..b286f99 100644 --- a/right/src/usb_interfaces/usb_interface_media_keyboard.c +++ b/right/src/usb_interfaces/usb_interface_media_keyboard.c @@ -42,7 +42,9 @@ usb_status_t UsbMediaKeyboardCallback(class_handle_t handle, uint32_t event, voi switch (event) { // This report is received when the report has been sent case kUSB_DeviceHidEventSendResponse: - error = kStatus_USB_Success; + if (UsbCompositeDevice.attach) { + error = kStatus_USB_Success; + } break; case kUSB_DeviceHidEventRecvResponse: case kUSB_DeviceHidEventGetReport: diff --git a/right/src/usb_interfaces/usb_interface_mouse.c b/right/src/usb_interfaces/usb_interface_mouse.c index 89e9ddb..200899b 100644 --- a/right/src/usb_interfaces/usb_interface_mouse.c +++ b/right/src/usb_interfaces/usb_interface_mouse.c @@ -42,7 +42,9 @@ usb_status_t UsbMouseCallback(class_handle_t handle, uint32_t event, void *param switch (event) { // This report is received when the report has been sent case kUSB_DeviceHidEventSendResponse: - error = kStatus_USB_Success; + if (UsbCompositeDevice.attach) { + error = kStatus_USB_Success; + } break; case kUSB_DeviceHidEventRecvResponse: case kUSB_DeviceHidEventGetReport: diff --git a/right/src/usb_interfaces/usb_interface_system_keyboard.c b/right/src/usb_interfaces/usb_interface_system_keyboard.c index 10ca8d9..fd19699 100644 --- a/right/src/usb_interfaces/usb_interface_system_keyboard.c +++ b/right/src/usb_interfaces/usb_interface_system_keyboard.c @@ -42,7 +42,9 @@ usb_status_t UsbSystemKeyboardCallback(class_handle_t handle, uint32_t event, vo switch (event) { // This report is received when the report has been sent case kUSB_DeviceHidEventSendResponse: - error = kStatus_USB_Success; + if (UsbCompositeDevice.attach) { + error = kStatus_USB_Success; + } break; case kUSB_DeviceHidEventRecvResponse: case kUSB_DeviceHidEventGetReport: