diff --git a/Tools/AP_Periph/can.cpp b/Tools/AP_Periph/can.cpp index 8cc86cc400..e129a306d7 100644 --- a/Tools/AP_Periph/can.cpp +++ b/Tools/AP_Periph/can.cpp @@ -813,7 +813,14 @@ static void can_rxfull_cb(CANDriver *canp, uint32_t flags) static void processRx(void) { CANRxFrame rxmsg; - while (rxbuffer.pop(rxmsg)) { + while (true) { + bool have_msg; + chSysLock(); + have_msg = rxbuffer.pop(rxmsg); + chSysUnlock(); + if (!have_msg) { + break; + } CanardCANFrame rx_frame {}; //palToggleLine(HAL_GPIO_PIN_LED);