Skip to content

Commit 6947dd6

Browse files
committed
added all changes requested, hw bridge issue persists
1 parent 541583d commit 6947dd6

File tree

1 file changed

+36
-36
lines changed

1 file changed

+36
-36
lines changed

libs/can/src/CANInterface.cpp

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -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

104104
void CANInterface::txProcessorPeriodic(void) {

0 commit comments

Comments
 (0)