mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-01-29 14:52:12 +01:00
f4 usb: don't skip yield from ISR
Function was returning prior to the code that might need to yield from within the ISR.
This commit is contained in:
parent
d299230db8
commit
91cffb1809
@ -502,13 +502,17 @@ static bool PIOS_USB_HID_EP_OUT_Callback(uint32_t usb_hid_id, uint8_t epnum, uin
|
|||||||
uint16_t max_payload_length = PIOS_USB_BOARD_HID_DATA_LENGTH - 2;
|
uint16_t max_payload_length = PIOS_USB_BOARD_HID_DATA_LENGTH - 2;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
bool rc;
|
||||||
if (headroom >= max_payload_length) {
|
if (headroom >= max_payload_length) {
|
||||||
/* We have room for a maximum length message */
|
/* We have room for a maximum length message */
|
||||||
return true;
|
PIOS_USBHOOK_EndpointRx(usb_hid_dev->cfg->data_rx_ep,
|
||||||
|
usb_hid_dev->rx_packet_buffer,
|
||||||
|
sizeof(usb_hid_dev->rx_packet_buffer));
|
||||||
|
rc = true;
|
||||||
} else {
|
} else {
|
||||||
/* Not enough room left for a message, apply backpressure */
|
/* Not enough room left for a message, apply backpressure */
|
||||||
usb_hid_dev->rx_active = false;
|
usb_hid_dev->rx_active = false;
|
||||||
return false;
|
rc = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(PIOS_INCLUDE_FREERTOS)
|
#if defined(PIOS_INCLUDE_FREERTOS)
|
||||||
@ -516,6 +520,8 @@ static bool PIOS_USB_HID_EP_OUT_Callback(uint32_t usb_hid_id, uint8_t epnum, uin
|
|||||||
vPortYieldFromISR();
|
vPortYieldFromISR();
|
||||||
}
|
}
|
||||||
#endif /* PIOS_INCLUDE_FREERTOS */
|
#endif /* PIOS_INCLUDE_FREERTOS */
|
||||||
|
|
||||||
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* PIOS_INCLUDE_USB_HID */
|
#endif /* PIOS_INCLUDE_USB_HID */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user