diff --git a/include/peripherals.h b/include/peripherals.h index 721e27c..72b89cd 100644 --- a/include/peripherals.h +++ b/include/peripherals.h @@ -68,6 +68,7 @@ enum Opcodes_RTC { enum Opcodes_CAN { CAN_TX_FRAME = 0x01, + CAN_RX_FRAME = 0x01, CAN_STATUS = 0x40, CAN_FILTER = 0x50, }; diff --git a/src/can.c b/src/can.c index 4f934bc..03ec6c2 100644 --- a/src/can.c +++ b/src/can.c @@ -255,12 +255,20 @@ void can_handle_data() { union x8h7_can_frame_message msg; - if (can_read(&fdcan_1, &msg)) { - enqueue_packet(PERIPH_FDCAN1, DATA, sizeof(msg.buf), msg.buf); + if (can_read(&fdcan_1, &msg)) + { + enqueue_packet(PERIPH_FDCAN1, + CAN_RX_FRAME, + X8H7_CAN_HEADER_SIZE + msg.field.len, + msg.buf); } - if (can_read(&fdcan_2, &msg)) { - enqueue_packet(PERIPH_FDCAN2, DATA, sizeof(msg.buf), msg.buf); + if (can_read(&fdcan_2, &msg)) + { + enqueue_packet(PERIPH_FDCAN2, + CAN_RX_FRAME, + X8H7_CAN_HEADER_SIZE + msg.field.len, + msg.buf); } }