Skip to content

Commit c643482

Browse files
annaw212colescott
authored andcommitted
Update Can.h header file
1 parent e0ea234 commit c643482

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

bms/src/Can.h

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
// Copyright (c) 2018 Formula Slug. All Rights Reserved.
2+
3+
#pragma once
4+
5+
// SIDs From Accumulator
6+
constexpr uint32_t kFuncIdHeartBeatAcc = 0x701;
7+
constexpr uint32_t kFuncIdCellStartup = 0x420;
8+
constexpr uint32_t kFuncIdFaultStatus = 0x421;
9+
constexpr uint32_t kFuncIdBmsStat = 0x422;
10+
constexpr uint32_t kFuncIdCellVoltage[7] = {0x423, 0x424, 0x425, 0x426,
11+
0x427, 0x428, 0x429};
12+
constexpr uint32_t kFuncIdCellTempAdc[4] = {0x42a, 0x42b, 0x42c, 0x42d};
13+
14+
CANMessage BMSCellStartup () {
15+
const char * startupMessage = "SPICYBOI";
16+
return CANMessage(kFuncIdCellStartup, startupMessage);
17+
}
18+
19+
CANMessage BMSFaultStatus (uint8_t contactorState, uint8_t faultState, uint8_t warningState, uint8_t SoC, uint16_t DoD, uint16_t totalCurrent) {
20+
const unsigned char data[8];
21+
data[0] = contactorState;
22+
data[1] = faultState;
23+
data[2] = warningState;
24+
data[3] = SoC;
25+
data[4] = DoD >> 8;
26+
data[5] = DoD;
27+
data[6] = totalCurrent >> 8;
28+
data[7] = totalCurrent;
29+
return CANMessage(kFuncIdFaultStatus, data);
30+
}
31+
32+
CANMessage BMSStatus (uint16_t totalVoltage, uint16_t maxVoltage, uint16_t minVoltage, uint8_t maxTemp, uint8_t minTemp) {
33+
const unsigned char data[8];
34+
data[0] = totalVoltage >> 8;
35+
data[1] = totalVoltage;
36+
data[2] = maxVoltage >> 8;
37+
data[3] = maxVoltage;
38+
data[4] = minVoltage >> 8;
39+
data[5] = minVoltage;
40+
data[6] = maxTemp;
41+
data[7] = minTemp;
42+
return CANMessage(kFuncIdBmsStat, data);
43+
}
44+
45+
CANMessage BMSCellVoltage (uint8_t row, uint16_t * voltages) {
46+
const unsigned char data[8];
47+
for (int i = 0; i < 8; i += 2) {
48+
data[i] = voltages[i/2] >> 8;
49+
data[++i] = voltages [i/2];
50+
}
51+
return CANMessage(kFuncIdCellVoltage[row], data);
52+
}
53+
54+
CANMessage BMSCellTemp (uint8_t row, uint8_t * temps) {
55+
const unsigned char data[7];
56+
for (int i = 0; i < 7; i++) {
57+
data[i] = temps[i];
58+
}
59+
return CANMessage(kFunIdCellTempAdc[row], data, 7);
60+
}

0 commit comments

Comments
 (0)