Skip to content

Commit 9115366

Browse files
author
NoahAndrews
committed
Create REV_COMMON_HEARTBEAT_LENGTH and SPARK_HEARTBEAT_LENGTH macros
1 parent 244395f commit 9115366

File tree

1 file changed

+18
-15
lines changed

1 file changed

+18
-15
lines changed

src/canWrapper.cc

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
#define SPARK_HEARTBEAT_ID 0x2052C80
2828
#define HEARTBEAT_PERIOD_MS 20
2929

30+
#define SPARK_HEARTBEAT_LENGTH 8
31+
#define REV_COMMON_HEARTBEAT_LENGTH 1
32+
3033
rev::usb::CandleWinUSBDriver* driver = new rev::usb::CandleWinUSBDriver();
3134

3235
std::set<std::string> devicesRegisteredToHal; // TODO(Noah): Protect with mutex
@@ -41,8 +44,8 @@ std::mutex watchdogMtx;
4144
// These values should only be accessed while holding watchdogMtx
4245
std::vector<std::string> heartbeatsRunning;
4346
bool heartbeatTimeoutExpired = false; // Should only be changed in heartbeatsWatchdog()
44-
std::map<std::string, std::array<uint8_t, 1>> revCommonHeartbeatMap;
45-
std::map<std::string, std::array<uint8_t, 8>> sparkHeartbeatMap;
47+
std::map<std::string, std::array<uint8_t, REV_COMMON_HEARTBEAT_LENGTH>> revCommonHeartbeatMap;
48+
std::map<std::string, std::array<uint8_t, SPARK_HEARTBEAT_LENGTH>> sparkHeartbeatMap;
4649
auto latestHeartbeatAck = std::chrono::steady_clock::now();
4750

4851
// Only call when holding canDevicesMtx
@@ -684,15 +687,15 @@ void heartbeatsWatchdog() {
684687
for(int i = 0; i < heartbeatsRunning.size(); i++) {
685688
if (sparkHeartbeatMap.contains(heartbeatsRunning[i])) {
686689
// Clear the scheduled heartbeat that has outdated data so that the updated one gets sent out immediately
687-
_sendCANMessage(heartbeatsRunning[i], SPARK_HEARTBEAT_ID, disabledSparkHeartbeat, 8, -1);
690+
_sendCANMessage(heartbeatsRunning[i], SPARK_HEARTBEAT_ID, disabledSparkHeartbeat, SPARK_HEARTBEAT_LENGTH, -1);
688691

689-
_sendCANMessage(heartbeatsRunning[i], SPARK_HEARTBEAT_ID, disabledSparkHeartbeat, 8, HEARTBEAT_PERIOD_MS);
692+
_sendCANMessage(heartbeatsRunning[i], SPARK_HEARTBEAT_ID, disabledSparkHeartbeat, SPARK_HEARTBEAT_LENGTH, HEARTBEAT_PERIOD_MS);
690693
}
691694
if (revCommonHeartbeatMap.contains(heartbeatsRunning[i])) {
692695
// Clear the scheduled heartbeat that has outdated data so that the updated one gets sent out immediately
693-
_sendCANMessage(heartbeatsRunning[i], REV_COMMON_HEARTBEAT_ID, disabledRevCommonHeartbeat, 1, -1);
696+
_sendCANMessage(heartbeatsRunning[i], REV_COMMON_HEARTBEAT_ID, disabledRevCommonHeartbeat, REV_COMMON_HEARTBEAT_LENGTH, -1);
694697

695-
_sendCANMessage(heartbeatsRunning[i], REV_COMMON_HEARTBEAT_ID, disabledRevCommonHeartbeat, 1, HEARTBEAT_PERIOD_MS);
698+
_sendCANMessage(heartbeatsRunning[i], REV_COMMON_HEARTBEAT_ID, disabledRevCommonHeartbeat, REV_COMMON_HEARTBEAT_LENGTH, HEARTBEAT_PERIOD_MS);
696699
}
697700
}
698701
} else if (elapsed_seconds.count() < 1 && heartbeatTimeoutExpired) {
@@ -701,15 +704,15 @@ void heartbeatsWatchdog() {
701704
for(int i = 0; i < heartbeatsRunning.size(); i++) {
702705
if (auto heartbeatEntry = sparkHeartbeatMap.find(heartbeatsRunning[i]); heartbeatEntry != sparkHeartbeatMap.end()) {
703706
// Clear the scheduled heartbeat that has outdated data so that the updated one gets sent out immediately
704-
_sendCANMessage(heartbeatsRunning[i], SPARK_HEARTBEAT_ID, heartbeatEntry->second.data(), 8, -1);
707+
_sendCANMessage(heartbeatsRunning[i], SPARK_HEARTBEAT_ID, heartbeatEntry->second.data(), SPARK_HEARTBEAT_LENGTH, -1);
705708

706-
_sendCANMessage(heartbeatsRunning[i], SPARK_HEARTBEAT_ID, heartbeatEntry->second.data(), 8, HEARTBEAT_PERIOD_MS);
709+
_sendCANMessage(heartbeatsRunning[i], SPARK_HEARTBEAT_ID, heartbeatEntry->second.data(), SPARK_HEARTBEAT_LENGTH, HEARTBEAT_PERIOD_MS);
707710
}
708711
if (auto heartbeatEntry = revCommonHeartbeatMap.find(heartbeatsRunning[i]); heartbeatEntry != revCommonHeartbeatMap.end()) {
709712
// Clear the scheduled heartbeat that has outdated data so that the updated one gets sent out immediately
710-
_sendCANMessage(heartbeatsRunning[i], REV_COMMON_HEARTBEAT_ID, heartbeatEntry->second.data(), 1, -1);
713+
_sendCANMessage(heartbeatsRunning[i], REV_COMMON_HEARTBEAT_ID, heartbeatEntry->second.data(), REV_COMMON_HEARTBEAT_LENGTH, -1);
711714

712-
_sendCANMessage(heartbeatsRunning[i], REV_COMMON_HEARTBEAT_ID, heartbeatEntry->second.data(), 1, HEARTBEAT_PERIOD_MS);
715+
_sendCANMessage(heartbeatsRunning[i], REV_COMMON_HEARTBEAT_ID, heartbeatEntry->second.data(), REV_COMMON_HEARTBEAT_LENGTH, HEARTBEAT_PERIOD_MS);
713716
}
714717
}
715718
}
@@ -733,12 +736,12 @@ void startRevCommonHeartbeat(const Napi::CallbackInfo& info) {
733736
if (deviceIterator == canDeviceMap.end()) return;
734737
}
735738

736-
std::array<uint8_t, 1> payload = {1};
739+
std::array<uint8_t, REV_COMMON_HEARTBEAT_LENGTH> payload = {1};
737740

738741
std::scoped_lock lock{watchdogMtx};
739742

740743
if (!heartbeatTimeoutExpired) {
741-
_sendCANMessage(descriptor, REV_COMMON_HEARTBEAT_ID, payload.data(), 1, HEARTBEAT_PERIOD_MS);
744+
_sendCANMessage(descriptor, REV_COMMON_HEARTBEAT_ID, payload.data(), REV_COMMON_HEARTBEAT_LENGTH, HEARTBEAT_PERIOD_MS);
742745
}
743746

744747
revCommonHeartbeatMap[descriptor] = payload;
@@ -764,7 +767,7 @@ void setSparkMaxHeartbeatData(const Napi::CallbackInfo& info) {
764767
std::string descriptor = info[0].As<Napi::String>().Utf8Value();
765768
Napi::Array dataParam = info[1].As<Napi::Array>();
766769

767-
std::array<uint8_t, 8> heartbeat = {0, 0, 0, 0, 0, 0, 0, 0};
770+
std::array<uint8_t, SPARK_HEARTBEAT_LENGTH> heartbeat = {0, 0, 0, 0, 0, 0, 0, 0};
768771

769772
{
770773
std::scoped_lock lock{canDevicesMtx};
@@ -782,9 +785,9 @@ void setSparkMaxHeartbeatData(const Napi::CallbackInfo& info) {
782785

783786
if (!heartbeatTimeoutExpired) {
784787
// Clear the scheduled heartbeat that has outdated data so that the updated one gets sent out immediately
785-
_sendCANMessage(descriptor, SPARK_HEARTBEAT_ID, heartbeat.data(), 8, -1);
788+
_sendCANMessage(descriptor, SPARK_HEARTBEAT_ID, heartbeat.data(), SPARK_HEARTBEAT_LENGTH, -1);
786789

787-
_sendCANMessage(descriptor, SPARK_HEARTBEAT_ID, heartbeat.data(), 8, HEARTBEAT_PERIOD_MS);
790+
_sendCANMessage(descriptor, SPARK_HEARTBEAT_ID, heartbeat.data(), SPARK_HEARTBEAT_LENGTH, HEARTBEAT_PERIOD_MS);
788791
}
789792

790793
sparkHeartbeatMap[descriptor] = heartbeat;

0 commit comments

Comments
 (0)