@@ -73,8 +73,9 @@ static uint8_t hex_to_nibble(char c) {
73
73
static void process_slcan_cmd (struct slcan_instance_s * instance , size_t cmd_len ) {
74
74
// Unsupported commands that are just ACKed
75
75
switch (instance -> cmd_buf [0 ]) {
76
- case 'S' : // Set bitrate
77
76
case 'C' : // Close CAN channel
77
+ can_set_filtering_enabled (instance .can_instance , true);
78
+ case 'S' : // Set bitrate
78
79
case 'M' :
79
80
case 'm' : {
80
81
chnWriteTimeout (& SDU1 , (uint8_t * )"\r" , 1 , TIME_IMMEDIATE );
@@ -88,16 +89,19 @@ static void process_slcan_cmd(struct slcan_instance_s* instance, size_t cmd_len)
88
89
switch (instance -> cmd_buf [0 ]) {
89
90
case 'L' : { // Open CAN channel in silent mode
90
91
instance -> loopback_enable = false;
92
+ can_set_filtering_enabled (instance .can_instance , false);
91
93
chnWriteTimeout (& SDU1 , (uint8_t * )"\r" , 1 , TIME_IMMEDIATE );
92
94
return ;
93
95
}
94
96
case 'O' : { // Open CAN channel in normal mode
95
97
instance -> loopback_enable = false;
98
+ can_set_filtering_enabled (instance .can_instance , false);
96
99
chnWriteTimeout (& SDU1 , (uint8_t * )"\r" , 1 , TIME_IMMEDIATE );
97
100
return ;
98
101
}
99
102
case 'l' : {
100
103
instance -> loopback_enable = true;
104
+ can_set_filtering_enabled (instance .can_instance , false);
101
105
chnWriteTimeout (& SDU1 , (uint8_t * )"\r" , 1 , TIME_IMMEDIATE );
102
106
return ;
103
107
}
0 commit comments