|
|
@ -119,7 +119,6 @@ void ZCanReceiver::registerListener(IZCanReceiverListener *listener) { m_listene |
|
|
|
// return buf;
|
|
|
|
// }
|
|
|
|
void ZCanReceiver::sendPacket(uint8_t *packet, size_t len) { |
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief |
|
|
|
*/ |
|
|
@ -342,6 +341,7 @@ void ZCanReceiver::STM32_HAL_onCAN_RxFifo0MsgPending(CAN_HandleTypeDef *canHandl |
|
|
|
rxbuf->m_canPacketNum++; |
|
|
|
} |
|
|
|
if (nframe == frameId + 1) { |
|
|
|
rxbuf->m_npacket = nframe; |
|
|
|
rxbuf->dataIsReady = true; |
|
|
|
} |
|
|
|
} |
|
|
@ -357,16 +357,21 @@ void ZCanReceiver::STM32_HAL_onCAN_Error(CAN_HandleTypeDef *canHandle) { |
|
|
|
void ZCanReceiver::loop() { |
|
|
|
CanPacketRxBuffer *rxbuf = &m_canPacketRxBuffer[0]; |
|
|
|
if (rxbuf->dataIsReady) { |
|
|
|
int dataoff = 0; |
|
|
|
for (size_t i = 0; i < rxbuf->m_canPacketNum; i++) { |
|
|
|
memcpy(rxbuf->rxdata + dataoff, rxbuf->m_canPacket[i].aData, rxbuf->m_canPacket[i].dlc); |
|
|
|
dataoff += rxbuf->m_canPacket[i].dlc; |
|
|
|
} |
|
|
|
rxbuf->rxdataSize = dataoff; |
|
|
|
// ZLOGI(TAG,"rx packet");
|
|
|
|
for (auto &var : m_listenerList) { |
|
|
|
if (var) var->onRceivePacket(rxbuf->get_cmdheader(), rxbuf->get_params(), rxbuf->get_params_len()); |
|
|
|
if (rxbuf->m_canPacketNum != rxbuf->m_npacket) { |
|
|
|
ZLOGE(TAG, "lost packet"); |
|
|
|
} else { |
|
|
|
int dataoff = 0; |
|
|
|
for (size_t i = 0; i < rxbuf->m_canPacketNum; i++) { |
|
|
|
memcpy(rxbuf->rxdata + dataoff, rxbuf->m_canPacket[i].aData, rxbuf->m_canPacket[i].dlc); |
|
|
|
dataoff += rxbuf->m_canPacket[i].dlc; |
|
|
|
} |
|
|
|
rxbuf->rxdataSize = dataoff; |
|
|
|
// ZLOGI(TAG,"rx packet");
|
|
|
|
for (auto &var : m_listenerList) { |
|
|
|
if (var) var->onRceivePacket(rxbuf->get_cmdheader(), rxbuf->get_params(), rxbuf->get_params_len()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
rxbuf->dataIsReady = false; |
|
|
|
} |
|
|
|
} |
|
|
|