From dd6a8b5eab299160c2a2a16a8da470ad422e9be9 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Wed, 8 Nov 2023 12:30:45 +0100 Subject: [PATCH] Fix: do not automatically assume a MTU != CANARD_MTU_CAN_CLASSIC (8) is CAN_FD, do a dedicated check instead. (#260) --- src/CanRxQueueItem.hpp | 3 +-- src/Node.cpp | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/CanRxQueueItem.hpp b/src/CanRxQueueItem.hpp index 011caee5..b76c753f 100644 --- a/src/CanRxQueueItem.hpp +++ b/src/CanRxQueueItem.hpp @@ -31,8 +31,7 @@ namespace cyphal template class CanRxQueueItem { - static_assert((MTU_BYTES - == CANARD_MTU_CAN_CLASSIC) || (MTU_BYTES == CANARD_MTU_CAN_FD), + static_assert((MTU_BYTES == CANARD_MTU_CAN_CLASSIC) || (MTU_BYTES == CANARD_MTU_CAN_FD), "CanRxQueueItem can only have an MTU size of either 8 (CANARD_MTU_CAN_CLASSIC) or 64 (CANARD_MTU_CAN_FD)."); public: CanRxQueueItem() diff --git a/src/Node.cpp b/src/Node.cpp index 91c90229..e9b10006 100644 --- a/src/Node.cpp +++ b/src/Node.cpp @@ -116,7 +116,7 @@ void Node::onCanFrameReceived(CanardFrame const & frame) CanRxQueueItem const rx_queue_item(&frame, _micros_func()); static_cast(_canard_rx_queue.get())->enqueue(rx_queue_item); } - else + else if (_mtu_bytes == CANARD_MTU_CAN_FD) { CanRxQueueItem const rx_queue_item(&frame, _micros_func()); static_cast(_canard_rx_queue.get())->enqueue(rx_queue_item); @@ -172,7 +172,7 @@ void Node::processRxQueue() processRxFrame(rx_queue_item); can_rx_queue_ptr->pop(); } - else + else if (_mtu_bytes == CANARD_MTU_CAN_FD) { CircularBufferCanFd * canfd_rx_queue_ptr = static_cast(_canard_rx_queue.get()); CanRxQueueItem const * rx_queue_item = canfd_rx_queue_ptr->peek();