Further improve sending

This commit is contained in:
Daniel Öster 2025-09-29 19:01:56 +03:00
parent 657656b1f5
commit ff71cadcb2
2 changed files with 63 additions and 0 deletions

View file

@ -201,6 +201,8 @@ void FordMachEBattery::transmit_can(unsigned long currentMillis) {
// Byte 3: starts at 0xFC and decrements by 1 each step, wraps every 16 steps // Byte 3: starts at 0xFC and decrements by 1 each step, wraps every 16 steps
FORD_415.data.u8[3] = 0xFC - counter_30ms; FORD_415.data.u8[3] = 0xFC - counter_30ms;
//TODO: handle FORD_4C properly very odd looping
transmit_can_frame(&FORD_77); transmit_can_frame(&FORD_77);
transmit_can_frame(&FORD_7D); transmit_can_frame(&FORD_7D);
transmit_can_frame(&FORD_167); transmit_can_frame(&FORD_167);
@ -210,12 +212,17 @@ void FordMachEBattery::transmit_can(unsigned long currentMillis) {
transmit_can_frame(&FORD_47); transmit_can_frame(&FORD_47);
transmit_can_frame(&FORD_230); transmit_can_frame(&FORD_230);
transmit_can_frame(&FORD_415); transmit_can_frame(&FORD_415);
transmit_can_frame(&FORD_4C);
transmit_can_frame(&FORD_7E);
transmit_can_frame(&FORD_48);
transmit_can_frame(&FORD_165);
} }
// Send 50ms CAN Message // Send 50ms CAN Message
if (currentMillis - previousMillis50 >= INTERVAL_50_MS) { if (currentMillis - previousMillis50 >= INTERVAL_50_MS) {
previousMillis50 = currentMillis; previousMillis50 = currentMillis;
transmit_can_frame(&FORD_42C); transmit_can_frame(&FORD_42C);
transmit_can_frame(&FORD_42F); transmit_can_frame(&FORD_42F);
transmit_can_frame(&FORD_43D);
} }
// Send 100ms CAN Message // Send 100ms CAN Message
@ -227,6 +234,12 @@ void FordMachEBattery::transmit_can(unsigned long currentMillis) {
transmit_can_frame(&FORD_332); transmit_can_frame(&FORD_332);
transmit_can_frame(&FORD_333); transmit_can_frame(&FORD_333);
transmit_can_frame(&FORD_42B); transmit_can_frame(&FORD_42B);
transmit_can_frame(&FORD_2EC);
transmit_can_frame(&FORD_156);
transmit_can_frame(
&FORD_5A); //This message actually has checksum/counter, but it seems to close contactors without those
transmit_can_frame(&FORD_166);
transmit_can_frame(&FORD_175);
} }
// Send 1s CAN Message // Send 1s CAN Message
if (currentMillis - previousMillis1000 >= INTERVAL_1_S) { if (currentMillis - previousMillis1000 >= INTERVAL_1_S) {

View file

@ -40,6 +40,21 @@ class FordMachEBattery : public CanBattery {
.DLC = 8, .DLC = 8,
.ID = 0x047, .ID = 0x047,
.data = {0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; .data = {0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
CAN_frame FORD_48 = {.FD = false,
.ext_ID = false,
.DLC = 8,
.ID = 0x048,
.data = {0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
CAN_frame FORD_4C = {.FD = false,
.ext_ID = false,
.DLC = 8,
.ID = 0x04C,
.data = {0x70, 0xAA, 0xBF, 0xDE, 0xCC, 0xEC, 0x00, 0x00}};
CAN_frame FORD_5A = {.FD = false,
.ext_ID = false,
.DLC = 8,
.ID = 0x05A,
.data = {0x00, 0x00, 0x00, 0x0B, 0xF2, 0x90, 0x10, 0x00}};
CAN_frame FORD_77 = {.FD = false, CAN_frame FORD_77 = {.FD = false,
.ext_ID = false, .ext_ID = false,
.DLC = 8, .DLC = 8,
@ -50,11 +65,36 @@ class FordMachEBattery : public CanBattery {
.DLC = 8, .DLC = 8,
.ID = 0x07D, .ID = 0x07D,
.data = {0x00, 0x00, 0xF0, 0xF0, 0x00, 0x3F, 0xEF, 0xFE}}; .data = {0x00, 0x00, 0xF0, 0xF0, 0x00, 0x3F, 0xEF, 0xFE}};
CAN_frame FORD_7E = {.FD = false,
.ext_ID = false,
.DLC = 8,
.ID = 0x07E,
.data = {0x00, 0x00, 0x3E, 0x80, 0x00, 0x04, 0x00, 0x00}};
CAN_frame FORD_156 = {.FD = false,
.ext_ID = false,
.DLC = 8,
.ID = 0x156,
.data = {0x4B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00}};
CAN_frame FORD_165 = {.FD = false,
.ext_ID = false,
.DLC = 8,
.ID = 0x165,
.data = {0x10, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
CAN_frame FORD_166 = {.FD = false,
.ext_ID = false,
.DLC = 8,
.ID = 0x166,
.data = {0x00, 0x00, 0x00, 0x01, 0x5C, 0x89, 0x00, 0x00}};
CAN_frame FORD_167 = {.FD = false, CAN_frame FORD_167 = {.FD = false,
.ext_ID = false, .ext_ID = false,
.DLC = 8, .DLC = 8,
.ID = 0x167, .ID = 0x167,
.data = {0x00, 0x80, 0x00, 0x11, 0xFF, 0xE0, 0x00, 0x00}}; .data = {0x00, 0x80, 0x00, 0x11, 0xFF, 0xE0, 0x00, 0x00}};
CAN_frame FORD_175 = {.FD = false,
.ext_ID = false,
.DLC = 8,
.ID = 0x175,
.data = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
CAN_frame FORD_12F = {.FD = false, CAN_frame FORD_12F = {.FD = false,
.ext_ID = false, .ext_ID = false,
.DLC = 8, .DLC = 8,
@ -80,6 +120,11 @@ class FordMachEBattery : public CanBattery {
.DLC = 8, .DLC = 8,
.ID = 0x25B, .ID = 0x25B,
.data = {0x01, 0xF4, 0x09, 0xF4, 0xE0, 0x00, 0x80, 0x00}}; .data = {0x01, 0xF4, 0x09, 0xF4, 0xE0, 0x00, 0x80, 0x00}};
CAN_frame FORD_2EC = {.FD = false,
.ext_ID = false,
.DLC = 8,
.ID = 0x2EC,
.data = {0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00}};
CAN_frame FORD_332 = {.FD = false, CAN_frame FORD_332 = {.FD = false,
.ext_ID = false, .ext_ID = false,
.DLC = 8, .DLC = 8,
@ -115,6 +160,11 @@ class FordMachEBattery : public CanBattery {
.DLC = 8, .DLC = 8,
.ID = 0x42F, .ID = 0x42F,
.data = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; .data = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
CAN_frame FORD_43D = {.FD = false,
.ext_ID = false,
.DLC = 8,
.ID = 0x43D,
.data = {0x00, 0x00, 0xDC, 0x00, 0x00, 0x77, 0x00, 0x00}};
CAN_frame FORD_442 = {.FD = false, CAN_frame FORD_442 = {.FD = false,
.ext_ID = false, .ext_ID = false,
.DLC = 8, .DLC = 8,