Skip to content

Commit 07998fa

Browse files
committed
Convert WPILib RTR flag to candlelib
1 parent 18c127e commit 07998fa

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/main/native/include/rev/CANMessage.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@
3636
#include <iostream>
3737
#include <chrono>
3838

39+
#define EXTENDED_ID_MASK 0x40000000
40+
#define REMOTE_FRAME_MASK 0x80000000
41+
3942
namespace rev {
4043
namespace usb {
4144

@@ -178,6 +181,7 @@ class CANMessage {
178181
uint8_t m_size;
179182
uint32_t m_messageId;
180183
uint32_t m_timestamp;
184+
bool m_is_remote;
181185
bool m_isNew{true};
182186
};
183187

src/main/native/include/rev/Drivers/CandleWinUSB/CandleWinUSBDeviceThread.h

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@
5353
#include <hal/simulation/CanData.h>
5454
#include <hal/CAN.h>
5555

56+
#define CANDLE_EXTENDED_ID_MASK 0x80000000
57+
#define CANDLE_REMOTE_FRAME_MASK 0x40000000
58+
5659
namespace rev {
5760
namespace usb {
5861

@@ -169,8 +172,20 @@ class CandleWinUSBDeviceThread :public DriverDeviceThread {
169172
if (el.m_intervalMs <= 1 || (now - el.m_prevTimestamp >= std::chrono::milliseconds(el.m_intervalMs)) ) {
170173
candle_frame_t frame;
171174
frame.can_dlc = el.m_msg.GetSize();
172-
// set extended id flag
173-
frame.can_id = el.m_msg.GetMessageId() | 0x80000000;
175+
176+
uint32_t messageId = el.m_msg.GetMessageId();
177+
178+
bool isExtended = true; // FRC CAN is always extended
179+
bool isRtr = messageId & REMOTE_FRAME_MASK;
180+
181+
frame.can_id = messageId;
182+
if(isExtended) {
183+
frame.can_id |= CANDLE_EXTENDED_ID_MASK;
184+
}
185+
if(isRtr) {
186+
frame.can_id |= CANDLE_REMOTE_FRAME_MASK;
187+
}
188+
174189
memcpy(frame.data, el.m_msg.GetData(), frame.can_dlc);
175190
frame.timestamp_us = now.time_since_epoch().count() / 1000;
176191

0 commit comments

Comments
 (0)