diff --git a/firmware/hw_layer/drivers/gpio/can_gpio.cpp b/firmware/hw_layer/drivers/gpio/can_gpio.cpp index 3371916b0bd..9de09a00ddf 100644 --- a/firmware/hw_layer/drivers/gpio/can_gpio.cpp +++ b/firmware/hw_layer/drivers/gpio/can_gpio.cpp @@ -415,10 +415,15 @@ CanListener* MsIoBox::request(void) { static MsIoBox instance[BOARD_CAN_GPIO_COUNT]; void initCanGpio() { + if (engineConfiguration->msIoBox0.id == MsIoBoxId::OFF) { + return; + } // CAN_PIN_0 for (size_t i = 0; i < BOARD_CAN_GPIO_COUNT; i++) { - /* TODO: pick can bus, base CAN ID (and refresh rate) from settings */ - if (instance[i].config(0, CAN_IOBOX_BASE1, 20) == 0) { + uint32_t can_id = CAN_IOBOX_BASE1 + 0x20 * (static_cast(engineConfiguration->msIoBox0.id) - static_cast(MsIoBoxId::ID200)); + + /* TODO: pick can bus and refresh rate from settings */ + if (instance[i].config(0, can_id, 20) == 0) { registerCanListener(instance[i]); } }