diff --git a/right/src/usb_interfaces/usb_interface_basic_keyboard.c b/right/src/usb_interfaces/usb_interface_basic_keyboard.c index a8431f3..05c2d61 100644 --- a/right/src/usb_interfaces/usb_interface_basic_keyboard.c +++ b/right/src/usb_interfaces/usb_interface_basic_keyboard.c @@ -23,6 +23,9 @@ void ResetActiveUsbBasicKeyboardReport(void) usb_status_t UsbBasicKeyboardAction(void) { + if (!UsbCompositeDevice.attach) + return kStatus_USB_Error; // The device is not attached + if (((usb_device_hid_struct_t *)UsbCompositeDevice.basicKeyboardHandle)->interruptInPipeBusy) { ((usb_device_hid_struct_t *)UsbCompositeDevice.basicKeyboardHandle)->interruptInPipeBusy = 0; return USB_DeviceCancel(((usb_device_hid_struct_t *)UsbCompositeDevice.basicKeyboardHandle)->handle, diff --git a/right/src/usb_interfaces/usb_interface_generic_hid.c b/right/src/usb_interfaces/usb_interface_generic_hid.c index 1fcfe51..38e0f05 100644 --- a/right/src/usb_interfaces/usb_interface_generic_hid.c +++ b/right/src/usb_interfaces/usb_interface_generic_hid.c @@ -7,6 +7,9 @@ uint8_t GenericHidOutBuffer[USB_GENERIC_HID_OUT_BUFFER_LENGTH]; static usb_status_t UsbReceiveData(void) { + if (!UsbCompositeDevice.attach) + return kStatus_USB_Error; // The device is not attached + return USB_DeviceHidRecv(UsbCompositeDevice.genericHidHandle, USB_GENERIC_HID_ENDPOINT_OUT_INDEX, GenericHidInBuffer, diff --git a/right/src/usb_interfaces/usb_interface_media_keyboard.c b/right/src/usb_interfaces/usb_interface_media_keyboard.c index b286f99..bd6eb04 100644 --- a/right/src/usb_interfaces/usb_interface_media_keyboard.c +++ b/right/src/usb_interfaces/usb_interface_media_keyboard.c @@ -21,6 +21,9 @@ void ResetActiveUsbMediaKeyboardReport(void) usb_status_t UsbMediaKeyboardAction(void) { + if (!UsbCompositeDevice.attach) + return kStatus_USB_Error; // The device is not attached + if (((usb_device_hid_struct_t *)UsbCompositeDevice.mediaKeyboardHandle)->interruptInPipeBusy) return kStatus_USB_Busy; // The previous report has not been sent yet diff --git a/right/src/usb_interfaces/usb_interface_mouse.c b/right/src/usb_interfaces/usb_interface_mouse.c index 200899b..059b92d 100644 --- a/right/src/usb_interfaces/usb_interface_mouse.c +++ b/right/src/usb_interfaces/usb_interface_mouse.c @@ -21,6 +21,9 @@ void ResetActiveUsbMouseReport(void) usb_status_t usbMouseAction(void) { + if (!UsbCompositeDevice.attach) + return kStatus_USB_Error; // The device is not attached + if (((usb_device_hid_struct_t *)UsbCompositeDevice.mouseHandle)->interruptInPipeBusy) return kStatus_USB_Busy; // The previous report has not been sent yet diff --git a/right/src/usb_interfaces/usb_interface_system_keyboard.c b/right/src/usb_interfaces/usb_interface_system_keyboard.c index fd19699..90788d6 100644 --- a/right/src/usb_interfaces/usb_interface_system_keyboard.c +++ b/right/src/usb_interfaces/usb_interface_system_keyboard.c @@ -21,6 +21,9 @@ void ResetActiveUsbSystemKeyboardReport(void) usb_status_t UsbSystemKeyboardAction(void) { + if (!UsbCompositeDevice.attach) + return kStatus_USB_Error; // The device is not attached + if (((usb_device_hid_struct_t *)UsbCompositeDevice.systemKeyboardHandle)->interruptInPipeBusy) return kStatus_USB_Busy; // The previous report has not been sent yet