@@ -53,52 +53,52 @@ void CANInterface::rxClientPeriodic(void) {
5353 // Check if a message has arrived:
5454 mail = m_rxMailbox.try_get ();
5555
56- MBED_ASSERT (mail != nullptr );
56+ if (mail != nullptr ) {
57+ // Extract message
58+ CANMsg msg = *mail;
59+ MBED_ASSERT (m_rxMailbox.free (mail) == osOK);
5760
58- // Extract message
59- CANMsg msg = *mail;
60- MBED_ASSERT (m_rxMailbox.free (mail) == osOK);
61-
62- // Check if message is intended to be received by this node
63- m_rxMutex.lock ();
64- bool validMsgReceived = (m_rxMsgMap != nullptr ) && m_rxMsgMap->contains (msg.getID ());
65- m_rxMutex.unlock ();
66-
67- if (validMsgReceived) {
68- HWBRIDGE::CANMsgData_t msgData;
69- msg.getPayload (msgData);
70-
71- // Extract message signals and put into RX message map
61+ // Check if message is intended to be received by this node
7262 m_rxMutex.lock ();
73- bool msgUnpacked = HWBRIDGE::unpackCANMsg (msgData. raw , msg.getID (), m_rxMsgMap );
63+ bool validMsgReceived = (m_rxMsgMap != nullptr ) && m_rxMsgMap-> contains ( msg.getID ());
7464 m_rxMutex.unlock ();
7565
76- if (msgUnpacked) {
77- // If message is one-shot, process message
78- if ((m_rxOneShotMsgHandler != nullptr ) && m_rxOneShotMsgHandler->contains (msg.getID ())) {
79- if (m_rxOneShotMsgHandler->at (msg.getID ())() != MBED_SUCCESS) {
80- MBED_WARNING (MBED_MAKE_ERROR (MBED_MODULE_PLATFORM, MBED_ERROR_CODE_FAILED_OPERATION),
81- " Failed to process CAN message" );
66+ if (validMsgReceived) {
67+ HWBRIDGE::CANMsgData_t msgData;
68+ msg.getPayload (msgData);
69+
70+ // Extract message signals and put into RX message map
71+ m_rxMutex.lock ();
72+ bool msgUnpacked = HWBRIDGE::unpackCANMsg (msgData.raw , msg.getID (), m_rxMsgMap);
73+ m_rxMutex.unlock ();
74+
75+ if (msgUnpacked) {
76+ // If message is one-shot, process message
77+ if ((m_rxOneShotMsgHandler != nullptr ) && m_rxOneShotMsgHandler->contains (msg.getID ())) {
78+ if (m_rxOneShotMsgHandler->at (msg.getID ())() != MBED_SUCCESS) {
79+ MBED_WARNING (MBED_MAKE_ERROR (MBED_MODULE_PLATFORM, MBED_ERROR_CODE_FAILED_OPERATION),
80+ " Failed to process CAN message" );
81+ }
82+ m_numOneShotMsgsReceived++;
8283 }
83- m_numOneShotMsgsReceived++;
84- }
85- // Otherwise message is streamed
86- else {
87- m_numStreamedMsgsReceived++;
84+ // Otherwise message is streamed
85+ else {
86+ m_numStreamedMsgsReceived++;
87+ }
88+ } else {
89+ MBED_WARNING (MBED_MAKE_ERROR (MBED_MODULE_PLATFORM, MBED_ERROR_CODE_INVALID_DATA_DETECTED),
90+ " CAN RX message unpacking failed" );
91+ m_numCANRXFaults++;
8892 }
89- } else {
93+ }
94+
95+ // Otherwise invalid message was received
96+ else {
9097 MBED_WARNING (MBED_MAKE_ERROR (MBED_MODULE_PLATFORM, MBED_ERROR_CODE_INVALID_DATA_DETECTED),
91- " CAN RX message unpacking failed " );
98+ " Invalid CAN message received " );
9299 m_numCANRXFaults++;
93100 }
94101 }
95-
96- // Otherwise invalid message was received
97- else {
98- MBED_WARNING (MBED_MAKE_ERROR (MBED_MODULE_PLATFORM, MBED_ERROR_CODE_INVALID_DATA_DETECTED),
99- " Invalid CAN message received" );
100- m_numCANRXFaults++;
101- }
102102}
103103
104104void CANInterface::txProcessorPeriodic (void ) {
0 commit comments