Skip to content

Commit dc81b7a

Browse files
authored
Merge pull request #36 from REVrobotics/feature/rtr
Allow sending RTR messages
2 parents 18c127e + 183b6a6 commit dc81b7a

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

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

+2
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
#include <iostream>
3737
#include <chrono>
3838

39+
#define NON_RESERVED_ARB_ID_MASK 0x1FFFFFFF
40+
3941
namespace rev {
4042
namespace usb {
4143

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

+17-2
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() & NON_RESERVED_ARB_ID_MASK;
177+
178+
bool isExtended = true; // FRC CAN is always extended
179+
bool isRtr = messageId & HAL_CAN_IS_FRAME_REMOTE;
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)