Skip to content

Commit dd6a8b5

Browse files
authored
Fix: do not automatically assume a MTU != CANARD_MTU_CAN_CLASSIC (8) is CAN_FD, do a dedicated check instead. (#260)
1 parent cdf3dc9 commit dd6a8b5

File tree

2 files changed

+3
-4
lines changed

2 files changed

+3
-4
lines changed

src/CanRxQueueItem.hpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ namespace cyphal
3131
template<size_t MTU_BYTES>
3232
class CanRxQueueItem
3333
{
34-
static_assert((MTU_BYTES
35-
== CANARD_MTU_CAN_CLASSIC) || (MTU_BYTES == CANARD_MTU_CAN_FD),
34+
static_assert((MTU_BYTES == CANARD_MTU_CAN_CLASSIC) || (MTU_BYTES == CANARD_MTU_CAN_FD),
3635
"CanRxQueueItem can only have an MTU size of either 8 (CANARD_MTU_CAN_CLASSIC) or 64 (CANARD_MTU_CAN_FD).");
3736
public:
3837
CanRxQueueItem()

src/Node.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ void Node::onCanFrameReceived(CanardFrame const & frame)
116116
CanRxQueueItem<CANARD_MTU_CAN_CLASSIC> const rx_queue_item(&frame, _micros_func());
117117
static_cast<CircularBufferCan *>(_canard_rx_queue.get())->enqueue(rx_queue_item);
118118
}
119-
else
119+
else if (_mtu_bytes == CANARD_MTU_CAN_FD)
120120
{
121121
CanRxQueueItem<CANARD_MTU_CAN_FD> const rx_queue_item(&frame, _micros_func());
122122
static_cast<CircularBufferCanFd *>(_canard_rx_queue.get())->enqueue(rx_queue_item);
@@ -172,7 +172,7 @@ void Node::processRxQueue()
172172
processRxFrame(rx_queue_item);
173173
can_rx_queue_ptr->pop();
174174
}
175-
else
175+
else if (_mtu_bytes == CANARD_MTU_CAN_FD)
176176
{
177177
CircularBufferCanFd * canfd_rx_queue_ptr = static_cast<CircularBufferCanFd *>(_canard_rx_queue.get());
178178
CanRxQueueItem<CANARD_MTU_CAN_FD> const * rx_queue_item = canfd_rx_queue_ptr->peek();

0 commit comments

Comments
 (0)