24 for (
int i = 0; i < length; i++) {
26 uint8_t value = (i == length - 1) ? (data[i] & 0xF0) : data[i];
28 sum += (value >> 4) & 0xF;
34 sum += (canId >> 8) & 0xF;
35 sum += (canId >> 4) & 0xF;
41 uint8_t checksum = (0x10 - (sum & 0xF)) & 0xF;
47 static int rollingId = 0;
54 rollingId = (rollingId + 1) & 0x3;
55 msg[3] = (rollingId << 4);
57 uint8_t tempBuffer1[4];
58 for (
int i = 0; i < 4; i++) {
59 tempBuffer1[i] = msg[i];
63 msg[3] |= checksum1 & 0xF;
69 msg2[7] = (rollingId << 4);
71 uint8_t tempBuffer2[8];
72 for (
int i = 0; i < 8; i++) {
73 tempBuffer2[i] = msg2[i];
77 msg2[7] |= checksum2 & 0xF;
88 rollingId = (rollingId + 1) & 0x3;
89 msg3[7] = (rollingId << 4);
91 uint8_t tempBuffer3[8];
92 for (
int i = 0; i < 8; i++) {
93 tempBuffer3[i] = msg3[i];
97 msg3[7] |= checksum3 & 0xF;
104 msg4[3] = (rollingId << 4);
106 uint8_t tempBuffer4[4];
107 for (
int i = 0; i < 4; i++) {
108 tempBuffer4[i] = msg4[i];
112 msg4[3] |= checksum4 & 0xF;
117 msg5[1] = (rollingId << 4);
119 uint8_t tempBuffer5[2];
120 for (
int i = 0; i < 2; i++) {
121 tempBuffer5[i] = msg5[i];
125 msg5[1] |= checksum5 & 0xF;
131 msg6[2] = (rollingId << 4);
133 uint8_t tempBuffer6[3];
134 for (
int i = 0; i < 3; i++) {
135 tempBuffer6[i] = msg6[i];
139 msg6[2] |= checksum6 & 0xF;
150 msg7[7] = (rollingId << 4);
152 uint8_t tempBuffer7[8];
153 for (
int i = 0; i < 8; i++) {
154 tempBuffer7[i] = msg7[i];
158 msg7[7] |= checksum7 & 0xF;
162 msg8[7] = (rollingId << 4);
164 uint8_t tempBuffer8[8];
165 for (
int i = 0; i < 8; i++) {
166 tempBuffer8[i] = msg8[i];
170 msg8[7] |= checksum8 & 0xF;
176 msg9[7] = (rollingId << 4);
178 uint8_t tempBuffer9[8];
179 for (
int i = 0; i < 8; i++) {
180 tempBuffer9[i] = msg9[i];
184 msg9[7] |= checksum9 & 0xF;