diff --git a/src/generic/usb_canbus.c b/src/generic/usb_canbus.c index 9d09adf9..9c2893bf 100644 --- a/src/generic/usb_canbus.c +++ b/src/generic/usb_canbus.c @@ -244,9 +244,9 @@ usbcan_task(void) // Send any previous echo frames if (host_status) { - if (UsbCan.usb_send_busy) + if (UsbCan.notify_local || UsbCan.usb_send_busy) // Don't send echo frame until other traffic is sent - return; + break; int ret = usb_send_bulk_in(gs, sizeof(*gs)); if (ret < 0) return; @@ -281,6 +281,8 @@ canbus_send(struct canbus_msg *msg) int ret = send_frame(msg); if (ret < 0) goto retry_later; + if (UsbCan.notify_local && UsbCan.host_status) + canbus_notify_tx(); UsbCan.notify_local = 0; return msg->dlc; retry_later: