Skip to content

Commit 6f9495b

Browse files
committed
Initialize filters with caution
1 parent 4c4bc98 commit 6f9495b

File tree

2 files changed

+19
-17
lines changed

2 files changed

+19
-17
lines changed

hal/transport/CAN/MyTransportCAN.cpp

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -45,21 +45,25 @@ typedef struct {
4545
CAN_Packet packets[CAN_BUF_SIZE];
4646

4747
//filter incoming messages (MCP2515 feature)
48-
void _initFilters() {
49-
if (!canInitialized)
50-
return;
51-
CAN0.setMode(MODE_CONFIG);
52-
CAN0.init_Mask(0,1,0x0000FF00); // Init first mask. Only destination address will be used to filter messages
53-
CAN0.init_Filt(0,1,BROADCAST_ADDRESS<<8); // Init first filter. Accept broadcast messages.
54-
CAN0.init_Filt(1,1,_nodeId<<8); // Init second filter. Accept messages send to this node.
48+
bool _initFilters() {
49+
if (!canInitialized) {
50+
return false;
51+
}
52+
uint8_t err=0;
53+
err+=CAN0.setMode(MODE_CONFIG);
54+
55+
err+=CAN0.init_Mask(0,1,0x0000FF00); // Init first mask. Only destination address will be used to filter messages
56+
err+=CAN0.init_Filt(0,1,BROADCAST_ADDRESS<<8); // Init first filter. Accept broadcast messages.
57+
err+=CAN0.init_Filt(1,1,_nodeId<<8); // Init second filter. Accept messages send to this node.
5558
//second mask and filters need to be set. Otherwise all messages would be accepted.
56-
CAN0.init_Mask(1,1,0xFFFFFFFF); // Init second mask.
57-
CAN0.init_Filt(2,1,0xFFFFFFFF); // Init third filter.
58-
CAN0.init_Filt(3,1,0xFFFFFFFF); // Init fourth filter.
59-
CAN0.init_Filt(4,1,0xFFFFFFFF); // Init fifth filter.
60-
CAN0.init_Filt(5,1,0xFFFFFFFF); // Init sixth filter.
61-
CAN0.setMode(MCP_NORMAL);
59+
err+=CAN0.init_Mask(1,1,0xFFFFFFFF); // Init second mask.
60+
err+=CAN0.init_Filt(2,1,0xFFFFFFFF); // Init third filter.
61+
err+=CAN0.init_Filt(3,1,0xFFFFFFFF); // Init fourth filter.
62+
err+=CAN0.init_Filt(4,1,0xFFFFFFFF); // Init fifth filter.
63+
err+=CAN0.init_Filt(5,1,0xFFFFFFFF); // Init sixth filter.
64+
err+=CAN0.setMode(MCP_NORMAL);
6265
hwPinMode(CAN_INT, INPUT);
66+
return err <= 0;
6367
}
6468
bool transportInit(void)
6569
{
@@ -73,9 +77,7 @@ bool transportInit(void)
7377
for (uint8_t i = 0; i < CAN_BUF_SIZE; i++) {
7478
_cleanSlot(i);
7579
}
76-
_initFilters();
77-
return true;
78-
80+
return _initFilters();
7981
}
8082

8183
//clear single slot in buffer.

hal/transport/CAN/MyTransportCAN.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
void _initFilters();
1+
bool _initFilters();
22

33
bool transportInit(void);
44

0 commit comments

Comments
 (0)