Skip to content

Commit 9d1d4a0

Browse files
wdfk-progRbb666
authored andcommitted
feat:[stm32][can]: Validate CAN filter bank settings and skip invalid items
1 parent 17d026c commit 9d1d4a0

File tree

1 file changed

+9
-0
lines changed
  • bsp/stm32/libraries/HAL_Drivers/drivers

1 file changed

+9
-0
lines changed

bsp/stm32/libraries/HAL_Drivers/drivers/drv_can.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,10 @@ static rt_err_t _can_control(struct rt_can_device *can, int cmd, void *arg)
330330
else
331331
{
332332
filter_cfg = (struct rt_can_filter_config *)arg;
333+
if (!IS_CAN_FILTER_BANK_DUAL(drv_can->FilterConfig.SlaveStartFilterBank))
334+
{
335+
LOG_W("can%s invalid SlaveStartFilterBank=%d", drv_can->name, drv_can->FilterConfig.SlaveStartFilterBank);
336+
}
333337
/* get default filter */
334338
for (int i = 0; i < filter_cfg->count; i++)
335339
{
@@ -351,6 +355,11 @@ static rt_err_t _can_control(struct rt_can_device *can, int cmd, void *arg)
351355
{
352356
/* use user-defined filter bank settings */
353357
drv_can->FilterConfig.FilterBank = filter_cfg->items[i].hdr_bank;
358+
}
359+
if (!IS_CAN_FILTER_BANK_DUAL(drv_can->FilterConfig.FilterBank))
360+
{
361+
LOG_W("can%s invalid FilterBank=%d, skip item %d", drv_can->name, drv_can->FilterConfig.FilterBank, i);
362+
continue;
354363
}
355364
/**
356365
* ID | CAN_FxR1[31:24] | CAN_FxR1[23:16] | CAN_FxR1[15:8] | CAN_FxR1[7:0] |

0 commit comments

Comments
 (0)