diff --git a/Software/src/battery/FORD-MACH-E-BATTERY.cpp b/Software/src/battery/FORD-MACH-E-BATTERY.cpp index 16afdeed..e44325f4 100644 --- a/Software/src/battery/FORD-MACH-E-BATTERY.cpp +++ b/Software/src/battery/FORD-MACH-E-BATTERY.cpp @@ -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 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_7D); 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_230); 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 if (currentMillis - previousMillis50 >= INTERVAL_50_MS) { previousMillis50 = currentMillis; transmit_can_frame(&FORD_42C); transmit_can_frame(&FORD_42F); + transmit_can_frame(&FORD_43D); } // Send 100ms CAN Message @@ -227,6 +234,12 @@ void FordMachEBattery::transmit_can(unsigned long currentMillis) { transmit_can_frame(&FORD_332); transmit_can_frame(&FORD_333); 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 if (currentMillis - previousMillis1000 >= INTERVAL_1_S) { diff --git a/Software/src/battery/FORD-MACH-E-BATTERY.h b/Software/src/battery/FORD-MACH-E-BATTERY.h index 733916ff..540afe98 100644 --- a/Software/src/battery/FORD-MACH-E-BATTERY.h +++ b/Software/src/battery/FORD-MACH-E-BATTERY.h @@ -40,6 +40,21 @@ class FordMachEBattery : public CanBattery { .DLC = 8, .ID = 0x047, .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, .ext_ID = false, .DLC = 8, @@ -50,11 +65,36 @@ class FordMachEBattery : public CanBattery { .DLC = 8, .ID = 0x07D, .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, .ext_ID = false, .DLC = 8, .ID = 0x167, .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, .ext_ID = false, .DLC = 8, @@ -80,6 +120,11 @@ class FordMachEBattery : public CanBattery { .DLC = 8, .ID = 0x25B, .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, .ext_ID = false, .DLC = 8, @@ -115,6 +160,11 @@ class FordMachEBattery : public CanBattery { .DLC = 8, .ID = 0x42F, .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, .ext_ID = false, .DLC = 8,