Make sure the device is attached before sending the report

This commit is contained in:
Kristian Sloth Lauszus
2018-06-30 16:52:39 +02:00
parent 11a8ffbaf5
commit b9b5eb2c76
5 changed files with 15 additions and 0 deletions

View File

@@ -23,6 +23,9 @@ void ResetActiveUsbBasicKeyboardReport(void)
usb_status_t UsbBasicKeyboardAction(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) { if (((usb_device_hid_struct_t *)UsbCompositeDevice.basicKeyboardHandle)->interruptInPipeBusy) {
((usb_device_hid_struct_t *)UsbCompositeDevice.basicKeyboardHandle)->interruptInPipeBusy = 0; ((usb_device_hid_struct_t *)UsbCompositeDevice.basicKeyboardHandle)->interruptInPipeBusy = 0;
return USB_DeviceCancel(((usb_device_hid_struct_t *)UsbCompositeDevice.basicKeyboardHandle)->handle, return USB_DeviceCancel(((usb_device_hid_struct_t *)UsbCompositeDevice.basicKeyboardHandle)->handle,

View File

@@ -7,6 +7,9 @@ uint8_t GenericHidOutBuffer[USB_GENERIC_HID_OUT_BUFFER_LENGTH];
static usb_status_t UsbReceiveData(void) static usb_status_t UsbReceiveData(void)
{ {
if (!UsbCompositeDevice.attach)
return kStatus_USB_Error; // The device is not attached
return USB_DeviceHidRecv(UsbCompositeDevice.genericHidHandle, return USB_DeviceHidRecv(UsbCompositeDevice.genericHidHandle,
USB_GENERIC_HID_ENDPOINT_OUT_INDEX, USB_GENERIC_HID_ENDPOINT_OUT_INDEX,
GenericHidInBuffer, GenericHidInBuffer,

View File

@@ -21,6 +21,9 @@ void ResetActiveUsbMediaKeyboardReport(void)
usb_status_t UsbMediaKeyboardAction(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) if (((usb_device_hid_struct_t *)UsbCompositeDevice.mediaKeyboardHandle)->interruptInPipeBusy)
return kStatus_USB_Busy; // The previous report has not been sent yet return kStatus_USB_Busy; // The previous report has not been sent yet

View File

@@ -21,6 +21,9 @@ void ResetActiveUsbMouseReport(void)
usb_status_t usbMouseAction(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) if (((usb_device_hid_struct_t *)UsbCompositeDevice.mouseHandle)->interruptInPipeBusy)
return kStatus_USB_Busy; // The previous report has not been sent yet return kStatus_USB_Busy; // The previous report has not been sent yet

View File

@@ -21,6 +21,9 @@ void ResetActiveUsbSystemKeyboardReport(void)
usb_status_t UsbSystemKeyboardAction(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) if (((usb_device_hid_struct_t *)UsbCompositeDevice.systemKeyboardHandle)->interruptInPipeBusy)
return kStatus_USB_Busy; // The previous report has not been sent yet return kStatus_USB_Busy; // The previous report has not been sent yet