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)
{
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,

View File

@@ -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,

View File

@@ -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

View File

@@ -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

View File

@@ -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