From 01b12248b73d5ef77304803d33ebcb86bb7d0ff1 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Mon, 16 Oct 2023 12:08:17 +0200 Subject: [PATCH 1/2] Fix: we do not need to transport the full CAN frame every-time, just the payload that matters. --- src/can.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/can.c b/src/can.c index 4f934bc..b6c9d34 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, + DATA, + 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, + DATA, + X8H7_CAN_HEADER_SIZE + msg.field.len, + msg.buf); } } From e776efaa718aabcabd56f3b267a9af669fdf50d0 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Mon, 16 Oct 2023 12:10:28 +0200 Subject: [PATCH 2/2] Define separate opcode for received CAN frames. Note: this is not an functional change. --- include/peripherals.h | 1 + src/can.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) 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 b6c9d34..03ec6c2 100644 --- a/src/can.c +++ b/src/can.c @@ -258,7 +258,7 @@ void can_handle_data() if (can_read(&fdcan_1, &msg)) { enqueue_packet(PERIPH_FDCAN1, - DATA, + CAN_RX_FRAME, X8H7_CAN_HEADER_SIZE + msg.field.len, msg.buf); } @@ -266,7 +266,7 @@ void can_handle_data() if (can_read(&fdcan_2, &msg)) { enqueue_packet(PERIPH_FDCAN2, - DATA, + CAN_RX_FRAME, X8H7_CAN_HEADER_SIZE + msg.field.len, msg.buf); }