From 07998fa548193e35054637d35cbc7d0c1e6f19a5 Mon Sep 17 00:00:00 2001 From: LandryNorris Date: Thu, 19 Sep 2024 10:18:26 -0500 Subject: [PATCH 1/4] Convert WPILib RTR flag to candlelib --- src/main/native/include/rev/CANMessage.h | 4 ++++ .../CandleWinUSB/CandleWinUSBDeviceThread.h | 19 +++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main/native/include/rev/CANMessage.h b/src/main/native/include/rev/CANMessage.h index 2d75565..e68537e 100644 --- a/src/main/native/include/rev/CANMessage.h +++ b/src/main/native/include/rev/CANMessage.h @@ -36,6 +36,9 @@ #include #include +#define EXTENDED_ID_MASK 0x40000000 +#define REMOTE_FRAME_MASK 0x80000000 + namespace rev { namespace usb { @@ -178,6 +181,7 @@ class CANMessage { uint8_t m_size; uint32_t m_messageId; uint32_t m_timestamp; + bool m_is_remote; bool m_isNew{true}; }; diff --git a/src/main/native/include/rev/Drivers/CandleWinUSB/CandleWinUSBDeviceThread.h b/src/main/native/include/rev/Drivers/CandleWinUSB/CandleWinUSBDeviceThread.h index 82eedc1..e9bfbe6 100644 --- a/src/main/native/include/rev/Drivers/CandleWinUSB/CandleWinUSBDeviceThread.h +++ b/src/main/native/include/rev/Drivers/CandleWinUSB/CandleWinUSBDeviceThread.h @@ -53,6 +53,9 @@ #include #include +#define CANDLE_EXTENDED_ID_MASK 0x80000000 +#define CANDLE_REMOTE_FRAME_MASK 0x40000000 + namespace rev { namespace usb { @@ -169,8 +172,20 @@ class CandleWinUSBDeviceThread :public DriverDeviceThread { if (el.m_intervalMs <= 1 || (now - el.m_prevTimestamp >= std::chrono::milliseconds(el.m_intervalMs)) ) { candle_frame_t frame; frame.can_dlc = el.m_msg.GetSize(); - // set extended id flag - frame.can_id = el.m_msg.GetMessageId() | 0x80000000; + + uint32_t messageId = el.m_msg.GetMessageId(); + + bool isExtended = true; // FRC CAN is always extended + bool isRtr = messageId & REMOTE_FRAME_MASK; + + frame.can_id = messageId; + if(isExtended) { + frame.can_id |= CANDLE_EXTENDED_ID_MASK; + } + if(isRtr) { + frame.can_id |= CANDLE_REMOTE_FRAME_MASK; + } + memcpy(frame.data, el.m_msg.GetData(), frame.can_dlc); frame.timestamp_us = now.time_since_epoch().count() / 1000; From 273bc509c0c941baef0d2fa010b46673cc1f55e7 Mon Sep 17 00:00:00 2001 From: LandryNorris Date: Thu, 19 Sep 2024 10:20:40 -0500 Subject: [PATCH 2/4] Mask out reserved bits when giving ID to candlelib --- src/main/native/include/rev/CANMessage.h | 1 + .../include/rev/Drivers/CandleWinUSB/CandleWinUSBDeviceThread.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/native/include/rev/CANMessage.h b/src/main/native/include/rev/CANMessage.h index e68537e..4b46a58 100644 --- a/src/main/native/include/rev/CANMessage.h +++ b/src/main/native/include/rev/CANMessage.h @@ -38,6 +38,7 @@ #define EXTENDED_ID_MASK 0x40000000 #define REMOTE_FRAME_MASK 0x80000000 +#define NON_RESERVED_ARB_ID_MASK 0x1FFFFFFF namespace rev { namespace usb { diff --git a/src/main/native/include/rev/Drivers/CandleWinUSB/CandleWinUSBDeviceThread.h b/src/main/native/include/rev/Drivers/CandleWinUSB/CandleWinUSBDeviceThread.h index e9bfbe6..d8906d3 100644 --- a/src/main/native/include/rev/Drivers/CandleWinUSB/CandleWinUSBDeviceThread.h +++ b/src/main/native/include/rev/Drivers/CandleWinUSB/CandleWinUSBDeviceThread.h @@ -173,7 +173,7 @@ class CandleWinUSBDeviceThread :public DriverDeviceThread { candle_frame_t frame; frame.can_dlc = el.m_msg.GetSize(); - uint32_t messageId = el.m_msg.GetMessageId(); + uint32_t messageId = el.m_msg.GetMessageId() & NON_RESERVED_ARB_ID_MASK; bool isExtended = true; // FRC CAN is always extended bool isRtr = messageId & REMOTE_FRAME_MASK; From 8d0f4f64e787f983a238685f3bad5c310530ef8a Mon Sep 17 00:00:00 2001 From: LandryNorris Date: Thu, 19 Sep 2024 11:19:53 -0500 Subject: [PATCH 3/4] Use HAL macro --- src/main/native/include/rev/CANMessage.h | 2 -- .../include/rev/Drivers/CandleWinUSB/CandleWinUSBDeviceThread.h | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/native/include/rev/CANMessage.h b/src/main/native/include/rev/CANMessage.h index 4b46a58..5500749 100644 --- a/src/main/native/include/rev/CANMessage.h +++ b/src/main/native/include/rev/CANMessage.h @@ -36,8 +36,6 @@ #include #include -#define EXTENDED_ID_MASK 0x40000000 -#define REMOTE_FRAME_MASK 0x80000000 #define NON_RESERVED_ARB_ID_MASK 0x1FFFFFFF namespace rev { diff --git a/src/main/native/include/rev/Drivers/CandleWinUSB/CandleWinUSBDeviceThread.h b/src/main/native/include/rev/Drivers/CandleWinUSB/CandleWinUSBDeviceThread.h index d8906d3..0415c53 100644 --- a/src/main/native/include/rev/Drivers/CandleWinUSB/CandleWinUSBDeviceThread.h +++ b/src/main/native/include/rev/Drivers/CandleWinUSB/CandleWinUSBDeviceThread.h @@ -176,7 +176,7 @@ class CandleWinUSBDeviceThread :public DriverDeviceThread { uint32_t messageId = el.m_msg.GetMessageId() & NON_RESERVED_ARB_ID_MASK; bool isExtended = true; // FRC CAN is always extended - bool isRtr = messageId & REMOTE_FRAME_MASK; + bool isRtr = messageId & HAL_CAN_IS_FRAME_REMOTE; frame.can_id = messageId; if(isExtended) { From 183b6a6cceff96ab1ad3dcfa4790b88b867dc426 Mon Sep 17 00:00:00 2001 From: LandryNorris Date: Thu, 19 Sep 2024 14:03:47 -0500 Subject: [PATCH 4/4] Remove property --- src/main/native/include/rev/CANMessage.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/native/include/rev/CANMessage.h b/src/main/native/include/rev/CANMessage.h index 5500749..797b7aa 100644 --- a/src/main/native/include/rev/CANMessage.h +++ b/src/main/native/include/rev/CANMessage.h @@ -180,7 +180,6 @@ class CANMessage { uint8_t m_size; uint32_t m_messageId; uint32_t m_timestamp; - bool m_is_remote; bool m_isNew{true}; };