mirror of
https://github.com/dalathegreat/Battery-Emulator.git
synced 2025-10-03 17:59:27 +02:00
Merge pull request #1402 from jonny5532/feature/constexpr-can-messages-main
Add static constexpr to lots of static battery CAN_frames to save RAM
This commit is contained in:
commit
c92a99590c
10 changed files with 618 additions and 571 deletions
|
@ -137,7 +137,7 @@ class BmwI3Battery : public CanBattery {
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x13E,
|
.ID = 0x13E,
|
||||||
.data = {0xFF, 0x31, 0xFA, 0xFA, 0xFA, 0xFA, 0x0C, 0x00}};
|
.data = {0xFF, 0x31, 0xFA, 0xFA, 0xFA, 0xFA, 0x0C, 0x00}};
|
||||||
CAN_frame BMW_192 = {.FD = false,
|
static constexpr CAN_frame BMW_192 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x192,
|
.ID = 0x192,
|
||||||
|
@ -152,8 +152,8 @@ class BmwI3Battery : public CanBattery {
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x1D0,
|
.ID = 0x1D0,
|
||||||
.data = {0x4D, 0xF0, 0xAE, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF}};
|
.data = {0x4D, 0xF0, 0xAE, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF}};
|
||||||
CAN_frame BMW_2CA = {.FD = false, .ext_ID = false, .DLC = 2, .ID = 0x2CA, .data = {0x57, 0x57}};
|
static constexpr CAN_frame BMW_2CA = {.FD = false, .ext_ID = false, .DLC = 2, .ID = 0x2CA, .data = {0x57, 0x57}};
|
||||||
CAN_frame BMW_2E2 = {.FD = false,
|
static constexpr CAN_frame BMW_2E2 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x2E2,
|
.ID = 0x2E2,
|
||||||
|
@ -168,17 +168,17 @@ class BmwI3Battery : public CanBattery {
|
||||||
.DLC = 6,
|
.DLC = 6,
|
||||||
.ID = 0x328,
|
.ID = 0x328,
|
||||||
.data = {0xB0, 0xE4, 0x87, 0x0E, 0x30, 0x22}};
|
.data = {0xB0, 0xE4, 0x87, 0x0E, 0x30, 0x22}};
|
||||||
CAN_frame BMW_37B = {.FD = false,
|
static constexpr CAN_frame BMW_37B = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 6,
|
.DLC = 6,
|
||||||
.ID = 0x37B,
|
.ID = 0x37B,
|
||||||
.data = {0x40, 0x00, 0x00, 0xFF, 0xFF, 0x00}};
|
.data = {0x40, 0x00, 0x00, 0xFF, 0xFF, 0x00}};
|
||||||
CAN_frame BMW_380 = {.FD = false,
|
static constexpr CAN_frame BMW_380 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 7,
|
.DLC = 7,
|
||||||
.ID = 0x380,
|
.ID = 0x380,
|
||||||
.data = {0x56, 0x5A, 0x37, 0x39, 0x34, 0x34, 0x34}};
|
.data = {0x56, 0x5A, 0x37, 0x39, 0x34, 0x34, 0x34}};
|
||||||
CAN_frame BMW_3A0 = {.FD = false,
|
static constexpr CAN_frame BMW_3A0 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x3A0,
|
.ID = 0x3A0,
|
||||||
|
@ -193,13 +193,13 @@ class BmwI3Battery : public CanBattery {
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x3C5,
|
.ID = 0x3C5,
|
||||||
.data = {0x30, 0x05, 0x47, 0x70, 0x2c, 0xce, 0xc3, 0x34}};
|
.data = {0x30, 0x05, 0x47, 0x70, 0x2c, 0xce, 0xc3, 0x34}};
|
||||||
CAN_frame BMW_3CA = {.FD = false,
|
static constexpr CAN_frame BMW_3CA = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x3CA,
|
.ID = 0x3CA,
|
||||||
.data = {0x87, 0x80, 0x30, 0x0C, 0x0C, 0x81, 0xFF, 0xFF}};
|
.data = {0x87, 0x80, 0x30, 0x0C, 0x0C, 0x81, 0xFF, 0xFF}};
|
||||||
CAN_frame BMW_3D0 = {.FD = false, .ext_ID = false, .DLC = 2, .ID = 0x3D0, .data = {0xFD, 0xFF}};
|
static constexpr CAN_frame BMW_3D0 = {.FD = false, .ext_ID = false, .DLC = 2, .ID = 0x3D0, .data = {0xFD, 0xFF}};
|
||||||
CAN_frame BMW_3E4 = {.FD = false,
|
static constexpr CAN_frame BMW_3E4 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 6,
|
.DLC = 6,
|
||||||
.ID = 0x3E4,
|
.ID = 0x3E4,
|
||||||
|
@ -216,62 +216,79 @@ class BmwI3Battery : public CanBattery {
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x3F9,
|
.ID = 0x3F9,
|
||||||
.data = {0xA7, 0x2A, 0x00, 0xE2, 0xA6, 0x30, 0xC3, 0xFF}};
|
.data = {0xA7, 0x2A, 0x00, 0xE2, 0xA6, 0x30, 0xC3, 0xFF}};
|
||||||
CAN_frame BMW_3FB = {.FD = false,
|
static constexpr CAN_frame BMW_3FB = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 6,
|
.DLC = 6,
|
||||||
.ID = 0x3FB,
|
.ID = 0x3FB,
|
||||||
.data = {0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x00}};
|
.data = {0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x00}};
|
||||||
CAN_frame BMW_3FC = {.FD = false, .ext_ID = false, .DLC = 3, .ID = 0x3FC, .data = {0xC0, 0xF9, 0x0F}};
|
CAN_frame BMW_3FC = {.FD = false, .ext_ID = false, .DLC = 3, .ID = 0x3FC, .data = {0xC0, 0xF9, 0x0F}};
|
||||||
CAN_frame BMW_418 = {.FD = false,
|
static constexpr CAN_frame BMW_418 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x418,
|
.ID = 0x418,
|
||||||
.data = {0xFF, 0x7C, 0xFF, 0x00, 0xC0, 0x3F, 0xFF, 0xFF}};
|
.data = {0xFF, 0x7C, 0xFF, 0x00, 0xC0, 0x3F, 0xFF, 0xFF}};
|
||||||
CAN_frame BMW_41D = {.FD = false, .ext_ID = false, .DLC = 4, .ID = 0x41D, .data = {0xFF, 0xF7, 0x7F, 0xFF}};
|
static constexpr CAN_frame BMW_41D = {.FD = false,
|
||||||
|
.ext_ID = false,
|
||||||
|
.DLC = 4,
|
||||||
|
.ID = 0x41D,
|
||||||
|
.data = {0xFF, 0xF7, 0x7F, 0xFF}};
|
||||||
CAN_frame BMW_433 = {.FD = false,
|
CAN_frame BMW_433 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 4,
|
.DLC = 4,
|
||||||
.ID = 0x433,
|
.ID = 0x433,
|
||||||
.data = {0xFF, 0x00, 0x0F, 0xFF}}; // HV specification
|
.data = {0xFF, 0x00, 0x0F, 0xFF}}; // HV specification
|
||||||
CAN_frame BMW_512 = {.FD = false,
|
static constexpr CAN_frame BMW_512 = {
|
||||||
|
.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x512,
|
.ID = 0x512,
|
||||||
.data = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12}}; // 0x512 Network management
|
.data = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12}}; // 0x512 Network management
|
||||||
CAN_frame BMW_592_0 = {.FD = false,
|
static constexpr CAN_frame BMW_592_0 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x592,
|
.ID = 0x592,
|
||||||
.data = {0x86, 0x10, 0x07, 0x21, 0x6e, 0x35, 0x5e, 0x86}};
|
.data = {0x86, 0x10, 0x07, 0x21, 0x6e, 0x35, 0x5e, 0x86}};
|
||||||
CAN_frame BMW_592_1 = {.FD = false,
|
static constexpr CAN_frame BMW_592_1 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x592,
|
.ID = 0x592,
|
||||||
.data = {0x86, 0x21, 0xb4, 0xdd, 0x00, 0x00, 0x00, 0x00}};
|
.data = {0x86, 0x21, 0xb4, 0xdd, 0x00, 0x00, 0x00, 0x00}};
|
||||||
CAN_frame BMW_5F8 = {.FD = false,
|
static constexpr CAN_frame BMW_5F8 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x5F8,
|
.ID = 0x5F8,
|
||||||
.data = {0x64, 0x01, 0x00, 0x0B, 0x92, 0x03, 0x00, 0x05}};
|
.data = {0x64, 0x01, 0x00, 0x0B, 0x92, 0x03, 0x00, 0x05}};
|
||||||
CAN_frame BMW_6F1_CELL = {.FD = false,
|
static constexpr CAN_frame BMW_6F1_CELL = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F1,
|
.ID = 0x6F1,
|
||||||
.data = {0x07, 0x03, 0x22, 0xDD, 0xBF}};
|
.data = {0x07, 0x03, 0x22, 0xDD, 0xBF}};
|
||||||
CAN_frame BMW_6F1_SOH = {.FD = false, .ext_ID = false, .DLC = 5, .ID = 0x6F1, .data = {0x07, 0x03, 0x22, 0x63, 0x35}};
|
static constexpr CAN_frame BMW_6F1_SOH = {.FD = false,
|
||||||
CAN_frame BMW_6F1_SOC = {.FD = false, .ext_ID = false, .DLC = 5, .ID = 0x6F1, .data = {0x07, 0x03, 0x22, 0xDD, 0xBC}};
|
.ext_ID = false,
|
||||||
CAN_frame BMW_6F1_CELL_VOLTAGE_AVG = {.FD = false,
|
.DLC = 5,
|
||||||
|
.ID = 0x6F1,
|
||||||
|
.data = {0x07, 0x03, 0x22, 0x63, 0x35}};
|
||||||
|
static constexpr CAN_frame BMW_6F1_SOC = {.FD = false,
|
||||||
|
.ext_ID = false,
|
||||||
|
.DLC = 5,
|
||||||
|
.ID = 0x6F1,
|
||||||
|
.data = {0x07, 0x03, 0x22, 0xDD, 0xBC}};
|
||||||
|
static constexpr CAN_frame BMW_6F1_CELL_VOLTAGE_AVG = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F1,
|
.ID = 0x6F1,
|
||||||
.data = {0x07, 0x03, 0x22, 0xDF, 0xA0}};
|
.data = {0x07, 0x03, 0x22, 0xDF, 0xA0}};
|
||||||
CAN_frame BMW_6F1_CONTINUE = {.FD = false, .ext_ID = false, .DLC = 4, .ID = 0x6F1, .data = {0x07, 0x30, 0x00, 0x02}};
|
static constexpr CAN_frame BMW_6F1_CONTINUE = {.FD = false,
|
||||||
|
.ext_ID = false,
|
||||||
|
.DLC = 4,
|
||||||
|
.ID = 0x6F1,
|
||||||
|
.data = {0x07, 0x30, 0x00, 0x02}};
|
||||||
CAN_frame BMW_6F4_CELL_VOLTAGE_CELLNO = {.FD = false,
|
CAN_frame BMW_6F4_CELL_VOLTAGE_CELLNO = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 7,
|
.DLC = 7,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x05, 0x31, 0x01, 0xAD, 0x6E, 0x01}};
|
.data = {0x07, 0x05, 0x31, 0x01, 0xAD, 0x6E, 0x01}};
|
||||||
CAN_frame BMW_6F4_CELL_CONTINUE = {.FD = false,
|
static constexpr CAN_frame BMW_6F4_CELL_CONTINUE = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 6,
|
.DLC = 6,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
|
|
|
@ -150,7 +150,7 @@ TODO:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//Vehicle CAN START
|
//Vehicle CAN START
|
||||||
CAN_frame BMWiX_125 = {
|
static constexpr CAN_frame BMWiX_125 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 20,
|
.DLC = 20,
|
||||||
|
@ -178,14 +178,14 @@ CAN_frame BMWiX_12B8D087 = {.FD = true,
|
||||||
0x3A, // 0x3A to close contactors, 0x33 to open contactors
|
0x3A, // 0x3A to close contactors, 0x33 to open contactors
|
||||||
0xF7}}; // 0xF7 to close contactors, 0xF0 to open contactors // CCU output.
|
0xF7}}; // 0xF7 to close contactors, 0xF0 to open contactors // CCU output.
|
||||||
|
|
||||||
CAN_frame BMWiX_188 = {
|
static constexpr CAN_frame BMWiX_188 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x188,
|
.ID = 0x188,
|
||||||
.data = {0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0xFF, 0xFF}}; // CCU output - values while driving
|
.data = {0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0xFF, 0xFF}}; // CCU output - values while driving
|
||||||
|
|
||||||
CAN_frame BMWiX_1EA = {
|
static constexpr CAN_frame BMWiX_1EA = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
|
@ -193,7 +193,7 @@ CAN_frame BMWiX_12B8D087 = {.FD = true,
|
||||||
//.data = {TODO:km_least_significant, TODO:, TODO:, TODO:, TODO:km_most_significant, 0xFF, TODO:, TODO:}
|
//.data = {TODO:km_least_significant, TODO:, TODO:, TODO:, TODO:km_most_significant, 0xFF, TODO:, TODO:}
|
||||||
}; // KOMBI output - kilometerstand
|
}; // KOMBI output - kilometerstand
|
||||||
|
|
||||||
CAN_frame BMWiX_1FC = {
|
static constexpr CAN_frame BMWiX_1FC = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
|
@ -201,7 +201,7 @@ CAN_frame BMWiX_12B8D087 = {.FD = true,
|
||||||
.data = {0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0xC0,
|
.data = {0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0xC0,
|
||||||
0x00}}; // FIXME:(add transmitter node) output - heat management engine control - values
|
0x00}}; // FIXME:(add transmitter node) output - heat management engine control - values
|
||||||
|
|
||||||
CAN_frame BMWiX_21D = {
|
static constexpr CAN_frame BMWiX_21D = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
|
@ -209,14 +209,15 @@ CAN_frame BMWiX_12B8D087 = {.FD = true,
|
||||||
// .data = {TODO:, TODO:, TODO:, 0xFF, 0xFF, 0xFF, 0xFF, TODO:}
|
// .data = {TODO:, TODO:, TODO:, 0xFF, 0xFF, 0xFF, 0xFF, TODO:}
|
||||||
}; // FIXME:(add transmitter node) output - request heating and air conditioning system 1
|
}; // FIXME:(add transmitter node) output - request heating and air conditioning system 1
|
||||||
|
|
||||||
CAN_frame BMWiX_276 = {.FD = true,
|
static constexpr CAN_frame BMWiX_276 = {
|
||||||
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x276,
|
.ID = 0x276,
|
||||||
.data = {0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF,
|
.data = {0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0xFD}}; // BDC output - vehicle condition. Used for contactor closing
|
0xFD}}; // BDC output - vehicle condition. Used for contactor closing
|
||||||
|
|
||||||
CAN_frame BMWiX_2ED = {
|
static constexpr CAN_frame BMWiX_2ED = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
|
@ -225,14 +226,14 @@ CAN_frame BMWiX_12B8D087 = {.FD = true,
|
||||||
0x75,
|
0x75,
|
||||||
0x75}}; // FIXME:(add transmitter node) output - ambient temperature (values seen in logs vary between 0x72 and 0x79)
|
0x75}}; // FIXME:(add transmitter node) output - ambient temperature (values seen in logs vary between 0x72 and 0x79)
|
||||||
|
|
||||||
CAN_frame BMWiX_2F1 = {
|
static constexpr CAN_frame BMWiX_2F1 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x2F1,
|
.ID = 0x2F1,
|
||||||
.data = {0xFF, 0xFF, 0xD0, 0x39, 0x94, 0x00, 0xF3, 0xFF}}; // 1000ms BDC output - values - varies at startup
|
.data = {0xFF, 0xFF, 0xD0, 0x39, 0x94, 0x00, 0xF3, 0xFF}}; // 1000ms BDC output - values - varies at startup
|
||||||
|
|
||||||
CAN_frame BMWiX_340 = {
|
static constexpr CAN_frame BMWiX_340 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 12,
|
.DLC = 12,
|
||||||
|
@ -240,7 +241,7 @@ CAN_frame BMWiX_12B8D087 = {.FD = true,
|
||||||
// .data = {TODO:, TODO:, TODO:, 0xFF, TODO:, TODO:, 0x00, 0x00, TODO:, TODO:, TODO:, 0xFF, 0xFF, }
|
// .data = {TODO:, TODO:, TODO:, 0xFF, TODO:, TODO:, 0x00, 0x00, TODO:, TODO:, TODO:, 0xFF, 0xFF, }
|
||||||
}; // CCU output
|
}; // CCU output
|
||||||
|
|
||||||
CAN_frame BMWiX_380 = {
|
static constexpr CAN_frame BMWiX_380 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 7,
|
.DLC = 7,
|
||||||
|
@ -256,7 +257,7 @@ CAN_frame BMWiX_439 = {.FD = true,
|
||||||
.data = {0xFF, 0x3F, 0xFF, 0xF3}}; // 1000ms BDC output
|
.data = {0xFF, 0x3F, 0xFF, 0xF3}}; // 1000ms BDC output
|
||||||
*/
|
*/
|
||||||
|
|
||||||
CAN_frame BMWiX_442 = {
|
static constexpr CAN_frame BMWiX_442 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 6,
|
.DLC = 6,
|
||||||
|
@ -289,7 +290,7 @@ CAN_frame BMWiX_49C = {.FD = true,
|
||||||
0xFF}}; // 1000ms SME output - Suspected keep alive CONFIRM NEEDED
|
0xFF}}; // 1000ms SME output - Suspected keep alive CONFIRM NEEDED
|
||||||
*/
|
*/
|
||||||
|
|
||||||
CAN_frame BMWiX_4EB = {
|
static constexpr CAN_frame BMWiX_4EB = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
|
@ -297,7 +298,7 @@ CAN_frame BMWiX_49C = {.FD = true,
|
||||||
// .data = {TODO:, TODO:, TODO: 0xE0 or 0xE5 (while driving), 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}
|
// .data = {TODO:, TODO:, TODO: 0xE0 or 0xE5 (while driving), 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}
|
||||||
}; // BDC output - RSU condition
|
}; // BDC output - RSU condition
|
||||||
|
|
||||||
CAN_frame BMWiX_4F8 = {
|
static constexpr CAN_frame BMWiX_4F8 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
|
@ -318,7 +319,7 @@ CAN_frame BMWiX_49C = {.FD = true,
|
||||||
0x01,
|
0x01,
|
||||||
0x00}}; // 100ms BDC output - Values change in car logs, these bytes are the most common. Used for contactor closing
|
0x00}}; // 100ms BDC output - Values change in car logs, these bytes are the most common. Used for contactor closing
|
||||||
|
|
||||||
CAN_frame BMWiX_6D = {
|
static constexpr CAN_frame BMWiX_6D = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
|
@ -327,7 +328,7 @@ CAN_frame BMWiX_49C = {.FD = true,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
|
||||||
0xFF}}; // 1000ms BDC output - [0] [1,2][3,4] counter x2. 3,4 is 9 higher than 1,2 is needed? [5-7] static
|
0xFF}}; // 1000ms BDC output - [0] [1,2][3,4] counter x2. 3,4 is 9 higher than 1,2 is needed? [5-7] static
|
||||||
|
|
||||||
CAN_frame BMWiX_C0 = {
|
static constexpr CAN_frame BMWiX_C0 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 2,
|
.DLC = 2,
|
||||||
|
@ -338,87 +339,91 @@ CAN_frame BMWiX_49C = {.FD = true,
|
||||||
//Vehicle CAN END
|
//Vehicle CAN END
|
||||||
|
|
||||||
//Request Data CAN START
|
//Request Data CAN START
|
||||||
CAN_frame BMWiX_6F4 = {
|
static constexpr CAN_frame BMWiX_6F4 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xE5, 0xC7}}; // Generic UDS Request data from SME. byte 4 selects requested value
|
.data = {0x07, 0x03, 0x22, 0xE5, 0xC7}}; // Generic UDS Request data from SME. byte 4 selects requested value
|
||||||
CAN_frame BMWiX_6F4_REQUEST_SLEEPMODE = {
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_SLEEPMODE = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 4,
|
.DLC = 4,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x02, 0x11, 0x04}}; // UDS Request Request BMS/SME goes to Sleep Mode
|
.data = {0x07, 0x02, 0x11, 0x04}}; // UDS Request Request BMS/SME goes to Sleep Mode
|
||||||
CAN_frame BMWiX_6F4_REQUEST_HARD_RESET = {.FD = true,
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_HARD_RESET = {
|
||||||
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 4,
|
.DLC = 4,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x02, 0x11, 0x01}}; // UDS Request Hard reset of BMS/SME
|
.data = {0x07, 0x02, 0x11, 0x01}}; // UDS Request Hard reset of BMS/SME
|
||||||
CAN_frame BMWiX_6F4_REQUEST_CELL_TEMP = {.FD = true,
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_CELL_TEMP = {
|
||||||
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xDD, 0xC0}}; // UDS Request Cell Temperatures
|
.data = {0x07, 0x03, 0x22, 0xDD, 0xC0}}; // UDS Request Cell Temperatures
|
||||||
CAN_frame BMWiX_6F4_REQUEST_SOC = {.FD = true,
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_SOC = {.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xE5, 0xCE}}; // Min/Avg/Max SOC%
|
.data = {0x07, 0x03, 0x22, 0xE5, 0xCE}}; // Min/Avg/Max SOC%
|
||||||
CAN_frame BMWiX_6F4_REQUEST_CAPACITY = {
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_CAPACITY = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xE5,
|
.data = {0x07, 0x03, 0x22, 0xE5,
|
||||||
0xC7}}; //Current and max capacity kWh. Stored in kWh as 0.01 scale with -50 bias
|
0xC7}}; //Current and max capacity kWh. Stored in kWh as 0.01 scale with -50 bias
|
||||||
CAN_frame BMWiX_6F4_REQUEST_MINMAXCELLV = {
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_MINMAXCELLV = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xE5, 0x53}}; //Min and max cell voltage 10V = Qualifier Invalid
|
.data = {0x07, 0x03, 0x22, 0xE5, 0x53}}; //Min and max cell voltage 10V = Qualifier Invalid
|
||||||
CAN_frame BMWiX_6F4_REQUEST_MAINVOLTAGE_POSTCONTACTOR = {
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_MAINVOLTAGE_POSTCONTACTOR = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xE5, 0x4A}}; //Main Battery Voltage (After Contactor)
|
.data = {0x07, 0x03, 0x22, 0xE5, 0x4A}}; //Main Battery Voltage (After Contactor)
|
||||||
CAN_frame BMWiX_6F4_REQUEST_MAINVOLTAGE_PRECONTACTOR = {
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_MAINVOLTAGE_PRECONTACTOR = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xE5, 0x4D}}; //Main Battery Voltage (Pre Contactor)
|
.data = {0x07, 0x03, 0x22, 0xE5, 0x4D}}; //Main Battery Voltage (Pre Contactor)
|
||||||
CAN_frame BMWiX_6F4_REQUEST_BATTERYCURRENT = {
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_BATTERYCURRENT = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xE5, 0x61}}; //Current amps 32bit signed MSB. dA . negative is discharge
|
.data = {0x07, 0x03, 0x22, 0xE5, 0x61}}; //Current amps 32bit signed MSB. dA . negative is discharge
|
||||||
CAN_frame BMWiX_6F4_REQUEST_CELL_VOLTAGE = {
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_CELL_VOLTAGE = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xE5, 0x54}}; //MultiFrameIndividual Cell Voltages
|
.data = {0x07, 0x03, 0x22, 0xE5, 0x54}}; //MultiFrameIndividual Cell Voltages
|
||||||
CAN_frame BMWiX_6F4_REQUEST_T30VOLTAGE = {
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_T30VOLTAGE = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xE5, 0xA7}}; //Terminal 30 Voltage (12V SME supply)
|
.data = {0x07, 0x03, 0x22, 0xE5, 0xA7}}; //Terminal 30 Voltage (12V SME supply)
|
||||||
CAN_frame BMWiX_6F4_REQUEST_EOL_ISO = {.FD = true,
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_EOL_ISO = {
|
||||||
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xA8, 0x60}}; //Request EOL Reading including ISO
|
.data = {0x07, 0x03, 0x22, 0xA8, 0x60}}; //Request EOL Reading including ISO
|
||||||
CAN_frame BMWiX_6F4_REQUEST_SOH = {.FD = true,
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_SOH = {
|
||||||
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xE5, 0x45}}; //SOH Max Min Mean Request
|
.data = {0x07, 0x03, 0x22, 0xE5, 0x45}}; //SOH Max Min Mean Request
|
||||||
CAN_frame BMWiX_6F4_REQUEST_DATASUMMARY = {
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_DATASUMMARY = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
|
@ -426,82 +431,84 @@ CAN_frame BMWiX_49C = {.FD = true,
|
||||||
.data = {
|
.data = {
|
||||||
0x07, 0x03, 0x22, 0xE5,
|
0x07, 0x03, 0x22, 0xE5,
|
||||||
0x45}}; //MultiFrame Summary Request, includes SOC/SOH/MinMax/MaxCapac/RemainCapac/max v and t at last charge. slow refreshrate
|
0x45}}; //MultiFrame Summary Request, includes SOC/SOH/MinMax/MaxCapac/RemainCapac/max v and t at last charge. slow refreshrate
|
||||||
CAN_frame BMWiX_6F4_REQUEST_PYRO = {.FD = true,
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_PYRO = {.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xAC, 0x93}}; //Pyro Status
|
.data = {0x07, 0x03, 0x22, 0xAC, 0x93}}; //Pyro Status
|
||||||
CAN_frame BMWiX_6F4_REQUEST_UPTIME = {.FD = true,
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_UPTIME = {
|
||||||
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xE4, 0xC0}}; // Uptime and Vehicle Time Status
|
.data = {0x07, 0x03, 0x22, 0xE4, 0xC0}}; // Uptime and Vehicle Time Status
|
||||||
CAN_frame BMWiX_6F4_REQUEST_HVIL = {.FD = true,
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_HVIL = {.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xE5, 0x69}}; // Request HVIL State
|
.data = {0x07, 0x03, 0x22, 0xE5, 0x69}}; // Request HVIL State
|
||||||
CAN_frame BMWiX_6F4_REQUEST_BALANCINGSTATUS = {.FD = true,
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_BALANCINGSTATUS = {
|
||||||
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xE4, 0xCA}}; // Request Balancing Data
|
.data = {0x07, 0x03, 0x22, 0xE4, 0xCA}}; // Request Balancing Data
|
||||||
CAN_frame BMWiX_6F4_REQUEST_MAX_CHARGE_DISCHARGE_AMPS = {
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_MAX_CHARGE_DISCHARGE_AMPS = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xE5, 0x62}}; // Request allowable charge discharge amps
|
.data = {0x07, 0x03, 0x22, 0xE5, 0x62}}; // Request allowable charge discharge amps
|
||||||
CAN_frame BMWiX_6F4_REQUEST_VOLTAGE_QUALIFIER_CHECK = {
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_VOLTAGE_QUALIFIER_CHECK = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xE5, 0x4B}}; // Request HV Voltage Qualifier
|
.data = {0x07, 0x03, 0x22, 0xE5, 0x4B}}; // Request HV Voltage Qualifier
|
||||||
CAN_frame BMWiX_6F4_REQUEST_CONTACTORS_CLOSE = {
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_CONTACTORS_CLOSE = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 6,
|
.DLC = 6,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xE5, 0x51, 0x01}}; // Request Contactors Close - Unconfirmed
|
.data = {0x07, 0x03, 0x22, 0xE5, 0x51, 0x01}}; // Request Contactors Close - Unconfirmed
|
||||||
CAN_frame BMWiX_6F4_REQUEST_CONTACTORS_OPEN = {
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_CONTACTORS_OPEN = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 6,
|
.DLC = 6,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xE5, 0x51, 0x01}}; // Request Contactors Open - Unconfirmed
|
.data = {0x07, 0x03, 0x22, 0xE5, 0x51, 0x01}}; // Request Contactors Open - Unconfirmed
|
||||||
CAN_frame BMWiX_6F4_REQUEST_BALANCING_START = {
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_BALANCING_START = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 6,
|
.DLC = 6,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0xF4, 0x04, 0x71, 0x01, 0xAE, 0x77}}; // Request Balancing command?
|
.data = {0xF4, 0x04, 0x71, 0x01, 0xAE, 0x77}}; // Request Balancing command?
|
||||||
CAN_frame BMWiX_6F4_REQUEST_BALANCING_START2 = {
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_BALANCING_START2 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 6,
|
.DLC = 6,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0xF4, 0x04, 0x31, 0x01, 0xAE, 0x77}}; // Request Balancing command?
|
.data = {0xF4, 0x04, 0x31, 0x01, 0xAE, 0x77}}; // Request Balancing command?
|
||||||
CAN_frame BMWiX_6F4_REQUEST_PACK_VOLTAGE_LIMITS = {
|
static constexpr CAN_frame BMWiX_6F4_REQUEST_PACK_VOLTAGE_LIMITS = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xE5, 0x4C}}; // Request pack voltage limits
|
.data = {0x07, 0x03, 0x22, 0xE5, 0x4C}}; // Request pack voltage limits
|
||||||
|
|
||||||
CAN_frame BMWiX_6F4_CONTINUE_DATA = {.FD = true,
|
static constexpr CAN_frame BMWiX_6F4_CONTINUE_DATA = {.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 4,
|
.DLC = 4,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x30, 0x00, 0x02}};
|
.data = {0x07, 0x30, 0x00, 0x02}};
|
||||||
|
|
||||||
//Action Requests:
|
//Action Requests:
|
||||||
CAN_frame BMWiX_6F4_CELL_SOC = {.FD = true,
|
static constexpr CAN_frame BMWiX_6F4_CELL_SOC = {.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
.data = {0x07, 0x03, 0x22, 0xE5, 0x9A}};
|
.data = {0x07, 0x03, 0x22, 0xE5, 0x9A}};
|
||||||
CAN_frame BMWiX_6F4_CELL_TEMP = {.FD = true,
|
static constexpr CAN_frame BMWiX_6F4_CELL_TEMP = {.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6F4,
|
.ID = 0x6F4,
|
||||||
|
@ -509,7 +516,7 @@ CAN_frame BMWiX_49C = {.FD = true,
|
||||||
//Request Data CAN End
|
//Request Data CAN End
|
||||||
|
|
||||||
//Setup UDS values to poll for
|
//Setup UDS values to poll for
|
||||||
CAN_frame* UDS_REQUESTS100MS[17] = {&BMWiX_6F4_REQUEST_CELL_TEMP,
|
static constexpr const CAN_frame* UDS_REQUESTS100MS[17] = {&BMWiX_6F4_REQUEST_CELL_TEMP,
|
||||||
&BMWiX_6F4_REQUEST_SOC,
|
&BMWiX_6F4_REQUEST_SOC,
|
||||||
&BMWiX_6F4_REQUEST_CAPACITY,
|
&BMWiX_6F4_REQUEST_CAPACITY,
|
||||||
&BMWiX_6F4_REQUEST_MINMAXCELLV,
|
&BMWiX_6F4_REQUEST_MINMAXCELLV,
|
||||||
|
|
|
@ -34,7 +34,7 @@ class CanBattery : public Battery, Transmitter, CanReceiver {
|
||||||
|
|
||||||
CAN_Speed change_can_speed(CAN_Speed speed);
|
CAN_Speed change_can_speed(CAN_Speed speed);
|
||||||
|
|
||||||
void transmit_can_frame(CAN_frame* frame) { transmit_can_frame_to_interface(frame, can_interface); }
|
void transmit_can_frame(const CAN_frame* frame) { transmit_can_frame_to_interface(frame, can_interface); }
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -220,8 +220,9 @@ class EcmpBattery : public CanBattery {
|
||||||
uint16_t incoming_poll = 0;
|
uint16_t incoming_poll = 0;
|
||||||
|
|
||||||
CAN_frame ECMP_010 = {.FD = false, .ext_ID = false, .DLC = 1, .ID = 0x010, .data = {0xB4}}; //VCU_BCM_Crash 100ms
|
CAN_frame ECMP_010 = {.FD = false, .ext_ID = false, .DLC = 1, .ID = 0x010, .data = {0xB4}}; //VCU_BCM_Crash 100ms
|
||||||
CAN_frame ECMP_041 = {.FD = false, .ext_ID = false, .DLC = 1, .ID = 0x041, .data = {0x00}};
|
static constexpr CAN_frame ECMP_041 = {.FD = false, .ext_ID = false, .DLC = 1, .ID = 0x041, .data = {0x00}};
|
||||||
CAN_frame ECMP_0A6 = {.FD = false,
|
static constexpr CAN_frame ECMP_0A6 = {
|
||||||
|
.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 2,
|
.DLC = 2,
|
||||||
.ID = 0x0A6,
|
.ID = 0x0A6,
|
||||||
|
@ -236,13 +237,17 @@ class EcmpBattery : public CanBattery {
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x0F2,
|
.ID = 0x0F2,
|
||||||
.data = {0x7D, 0x00, 0x4E, 0x20, 0x00, 0x00, 0x60, 0x0D}};
|
.data = {0x7D, 0x00, 0x4E, 0x20, 0x00, 0x00, 0x60, 0x0D}};
|
||||||
CAN_frame ECMP_0AE = {.FD = false, .ext_ID = false, .DLC = 5, .ID = 0x0AE, .data = {0x04, 0x77, 0x7A, 0x5E, 0xDF}};
|
static constexpr CAN_frame ECMP_0AE = {.FD = false,
|
||||||
|
.ext_ID = false,
|
||||||
|
.DLC = 5,
|
||||||
|
.ID = 0x0AE,
|
||||||
|
.data = {0x04, 0x77, 0x7A, 0x5E, 0xDF}};
|
||||||
CAN_frame ECMP_110 = {.FD = false, //??? 10ms periodic (Perfectly emulated in Battery-Emulator)
|
CAN_frame ECMP_110 = {.FD = false, //??? 10ms periodic (Perfectly emulated in Battery-Emulator)
|
||||||
.ext_ID = false, // NOTE. Changes on BMS state
|
.ext_ID = false, // NOTE. Changes on BMS state
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x110,
|
.ID = 0x110,
|
||||||
.data = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x87, 0x05}};
|
.data = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x87, 0x05}};
|
||||||
CAN_frame ECMP_111 = {.FD = false, //??? 10ms periodic (Perfectly emulated in Battery-Emulator)
|
static constexpr CAN_frame ECMP_111 = {.FD = false, //??? 10ms periodic (Perfectly emulated in Battery-Emulator)
|
||||||
.ext_ID = false, //Same content always, fully static
|
.ext_ID = false, //Same content always, fully static
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x111,
|
.ID = 0x111,
|
||||||
|
@ -252,12 +257,12 @@ class EcmpBattery : public CanBattery {
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x112,
|
.ID = 0x112,
|
||||||
.data = {0x4E, 0x20, 0x00, 0x0F, 0xA0, 0x7D, 0x00, 0x0A}};
|
.data = {0x4E, 0x20, 0x00, 0x0F, 0xA0, 0x7D, 0x00, 0x0A}};
|
||||||
CAN_frame ECMP_114 = {.FD = false, //??? 10ms periodic (Perfectly emulated in Battery-Emulator)
|
static constexpr CAN_frame ECMP_114 = {.FD = false, //??? 10ms periodic (Perfectly emulated in Battery-Emulator)
|
||||||
.ext_ID = false, //Same content always, fully static
|
.ext_ID = false, //Same content always, fully static
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x114,
|
.ID = 0x114,
|
||||||
.data = {0x00, 0x00, 0x00, 0x7D, 0x07, 0xD0, 0x7D, 0x00}};
|
.data = {0x00, 0x00, 0x00, 0x7D, 0x07, 0xD0, 0x7D, 0x00}};
|
||||||
CAN_frame ECMP_0C5 = {.FD = false, //DC2_0C5 10ms periodic (Perfectly emulated in Battery-Emulator)
|
static constexpr CAN_frame ECMP_0C5 = {.FD = false, //DC2_0C5 10ms periodic (Perfectly emulated in Battery-Emulator)
|
||||||
.ext_ID = false, //Same content always, fully static
|
.ext_ID = false, //Same content always, fully static
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x0C5,
|
.ID = 0x0C5,
|
||||||
|
@ -267,7 +272,7 @@ class EcmpBattery : public CanBattery {
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x17B,
|
.ID = 0x17B,
|
||||||
.data = {0x00, 0x00, 0x00, 0x7E, 0x78, 0x00, 0x00, 0x0F}}; // NOTE. Changes on BMS state
|
.data = {0x00, 0x00, 0x00, 0x7E, 0x78, 0x00, 0x00, 0x0F}}; // NOTE. Changes on BMS state
|
||||||
CAN_frame ECMP_230 = {.FD = false, //OBC3_230 50ms periodic (Perfectly emulated in Battery-Emulator)
|
static constexpr CAN_frame ECMP_230 = {.FD = false, //OBC3_230 50ms periodic (Perfectly emulated in Battery-Emulator)
|
||||||
.ext_ID = false, //Same content always, fully static
|
.ext_ID = false, //Same content always, fully static
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x230,
|
.ID = 0x230,
|
||||||
|
@ -308,12 +313,13 @@ class EcmpBattery : public CanBattery {
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x372,
|
.ID = 0x372,
|
||||||
.data = {0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; // NOTE. Changes on BMS state
|
.data = {0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; // NOTE. Changes on BMS state
|
||||||
CAN_frame ECMP_37F = {.FD = false, //??? 100ms periodic (Perfectly emulated in Battery-Emulator)
|
static constexpr CAN_frame ECMP_37F = {
|
||||||
|
.FD = false, //??? 100ms periodic (Perfectly emulated in Battery-Emulator)
|
||||||
.ext_ID = false, // Seems to be a bunch of temperature measurements? Static for now
|
.ext_ID = false, // Seems to be a bunch of temperature measurements? Static for now
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x37F,
|
.ID = 0x37F,
|
||||||
.data = {0x45, 0x49, 0x51, 0x45, 0x45, 0x00, 0x45, 0x45}};
|
.data = {0x45, 0x49, 0x51, 0x45, 0x45, 0x00, 0x45, 0x45}};
|
||||||
CAN_frame ECMP_382 = {
|
static constexpr CAN_frame ECMP_382 = {
|
||||||
//BSIInfo_382 (VCU) PSA specific 100ms periodic (Perfectly emulated in Battery-Emulator)
|
//BSIInfo_382 (VCU) PSA specific 100ms periodic (Perfectly emulated in Battery-Emulator)
|
||||||
.FD = false, //Same content always, fully static
|
.FD = false, //Same content always, fully static
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
|
@ -335,7 +341,7 @@ class EcmpBattery : public CanBattery {
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x3A3,
|
.ID = 0x3A3,
|
||||||
.data = {0x4A, 0x4A, 0x40, 0x00, 0x00, 0x08, 0x00, 0x0F}};
|
.data = {0x4A, 0x4A, 0x40, 0x00, 0x00, 0x08, 0x00, 0x0F}};
|
||||||
CAN_frame ECMP_439 = {.FD = false, //OBC4 1s periodic (Perfectly emulated in Battery-Emulator)
|
static constexpr CAN_frame ECMP_439 = {.FD = false, //OBC4 1s periodic (Perfectly emulated in Battery-Emulator)
|
||||||
.ext_ID = false, //Same content always, fully static
|
.ext_ID = false, //Same content always, fully static
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x439,
|
.ID = 0x439,
|
||||||
|
@ -350,17 +356,17 @@ class EcmpBattery : public CanBattery {
|
||||||
.DLC = 8, //552 seems to be tracking time in byte 0-3
|
.DLC = 8, //552 seems to be tracking time in byte 0-3
|
||||||
.ID = 0x552, // distance in km in byte 4-6, temporal reset counter in byte 7
|
.ID = 0x552, // distance in km in byte 4-6, temporal reset counter in byte 7
|
||||||
.data = {0x00, 0x02, 0x95, 0x6D, 0x00, 0xD7, 0xB5, 0xFE}};
|
.data = {0x00, 0x02, 0x95, 0x6D, 0x00, 0xD7, 0xB5, 0xFE}};
|
||||||
CAN_frame ECMP_55F = {.FD = false, //5s periodic (Perfectly emulated in Battery-Emulator)
|
static constexpr CAN_frame ECMP_55F = {.FD = false, //5s periodic (Perfectly emulated in Battery-Emulator)
|
||||||
.ext_ID = false, //Same content always, fully static
|
.ext_ID = false, //Same content always, fully static
|
||||||
.DLC = 1,
|
.DLC = 1,
|
||||||
.ID = 0x55F,
|
.ID = 0x55F,
|
||||||
.data = {0x82}};
|
.data = {0x82}};
|
||||||
CAN_frame ECMP_591 = {.FD = false, //1s periodic
|
static constexpr CAN_frame ECMP_591 = {.FD = false, //1s periodic
|
||||||
.ext_ID = false, //Always static in HV mode
|
.ext_ID = false, //Always static in HV mode
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x591,
|
.ID = 0x591,
|
||||||
.data = {0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}};
|
.data = {0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}};
|
||||||
CAN_frame ECMP_786 = {.FD = false, //1s periodic
|
static constexpr CAN_frame ECMP_786 = {.FD = false, //1s periodic
|
||||||
.ext_ID = false, //Always static in HV mode
|
.ext_ID = false, //Always static in HV mode
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x786,
|
.ID = 0x786,
|
||||||
|
@ -371,55 +377,67 @@ class EcmpBattery : public CanBattery {
|
||||||
.ID = 0x794,
|
.ID = 0x794,
|
||||||
.data = {0xB8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}; // NOTE. Changes on BMS state
|
.data = {0xB8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}; // NOTE. Changes on BMS state
|
||||||
CAN_frame ECMP_POLL = {.FD = false, .ext_ID = false, .DLC = 4, .ID = 0x6B4, .data = {0x03, 0x22, 0xD8, 0x66}};
|
CAN_frame ECMP_POLL = {.FD = false, .ext_ID = false, .DLC = 4, .ID = 0x6B4, .data = {0x03, 0x22, 0xD8, 0x66}};
|
||||||
CAN_frame ECMP_ACK = {.FD = false, //Ack frame
|
static constexpr CAN_frame ECMP_ACK = {.FD = false, //Ack frame
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 3,
|
.DLC = 3,
|
||||||
.ID = 0x6B4,
|
.ID = 0x6B4,
|
||||||
.data = {0x30, 0x00, 0x00}};
|
.data = {0x30, 0x00, 0x00}};
|
||||||
CAN_frame ECMP_DIAG_START = {.FD = false, .ext_ID = false, .DLC = 3, .ID = 0x6B4, .data = {0x02, 0x10, 0x03}};
|
static constexpr CAN_frame ECMP_DIAG_START = {.FD = false,
|
||||||
|
.ext_ID = false,
|
||||||
|
.DLC = 3,
|
||||||
|
.ID = 0x6B4,
|
||||||
|
.data = {0x02, 0x10, 0x03}};
|
||||||
//Start diagnostic session (extended diagnostic session, mode 0x10 with sub-mode 0x03)
|
//Start diagnostic session (extended diagnostic session, mode 0x10 with sub-mode 0x03)
|
||||||
CAN_frame ECMP_CONTACTOR_RESET_START = {.FD = false,
|
static constexpr CAN_frame ECMP_CONTACTOR_RESET_START = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6B4,
|
.ID = 0x6B4,
|
||||||
.data = {0x04, 0x31, 0x01, 0xDD, 0x35}};
|
.data = {0x04, 0x31, 0x01, 0xDD, 0x35}};
|
||||||
CAN_frame ECMP_CONTACTOR_RESET_PROGRESS = {.FD = false,
|
static constexpr CAN_frame ECMP_CONTACTOR_RESET_PROGRESS = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6B4,
|
.ID = 0x6B4,
|
||||||
.data = {0x04, 0x31, 0x03, 0xDD, 0x35}};
|
.data = {0x04, 0x31, 0x03, 0xDD, 0x35}};
|
||||||
CAN_frame ECMP_COLLISION_RESET_START = {.FD = false,
|
static constexpr CAN_frame ECMP_COLLISION_RESET_START = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6B4,
|
.ID = 0x6B4,
|
||||||
.data = {0x04, 0x31, 0x01, 0xDF, 0x60}};
|
.data = {0x04, 0x31, 0x01, 0xDF, 0x60}};
|
||||||
CAN_frame ECMP_COLLISION_RESET_PROGRESS = {.FD = false,
|
static constexpr CAN_frame ECMP_COLLISION_RESET_PROGRESS = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6B4,
|
.ID = 0x6B4,
|
||||||
.data = {0x04, 0x31, 0x03, 0xDF, 0x60}};
|
.data = {0x04, 0x31, 0x03, 0xDF, 0x60}};
|
||||||
CAN_frame ECMP_ISOLATION_RESET_START = {.FD = false,
|
static constexpr CAN_frame ECMP_ISOLATION_RESET_START = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6B4,
|
.ID = 0x6B4,
|
||||||
.data = {0x04, 0x31, 0x01, 0xDF, 0x46}};
|
.data = {0x04, 0x31, 0x01, 0xDF, 0x46}};
|
||||||
CAN_frame ECMP_ISOLATION_RESET_PROGRESS = {.FD = false,
|
static constexpr CAN_frame ECMP_ISOLATION_RESET_PROGRESS = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x6B4,
|
.ID = 0x6B4,
|
||||||
.data = {0x04, 0x31, 0x03, 0xDF, 0x46}};
|
.data = {0x04, 0x31, 0x03, 0xDF, 0x46}};
|
||||||
CAN_frame ECMP_RESET_DONE = {.FD = false, .ext_ID = false, .DLC = 3, .ID = 0x6B4, .data = {0x02, 0x3E, 0x00}};
|
static constexpr CAN_frame ECMP_RESET_DONE = {.FD = false,
|
||||||
CAN_frame ECMP_FACTORY_MODE_ACTIVATION = {.FD = false,
|
.ext_ID = false,
|
||||||
|
.DLC = 3,
|
||||||
|
.ID = 0x6B4,
|
||||||
|
.data = {0x02, 0x3E, 0x00}};
|
||||||
|
static constexpr CAN_frame ECMP_FACTORY_MODE_ACTIVATION = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6B4,
|
.ID = 0x6B4,
|
||||||
.data = {0x04, 0x2E, 0xD9, 0x00, 0x01}};
|
.data = {0x04, 0x2E, 0xD9, 0x00, 0x01}};
|
||||||
CAN_frame ECMP_DISABLE_ISOLATION_REQ = {.FD = false,
|
static constexpr CAN_frame ECMP_DISABLE_ISOLATION_REQ = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 5,
|
.DLC = 5,
|
||||||
.ID = 0x6B4,
|
.ID = 0x6B4,
|
||||||
.data = {0x04, 0x31, 0x02, 0xDF, 0xE1}};
|
.data = {0x04, 0x31, 0x02, 0xDF, 0xE1}};
|
||||||
CAN_frame ECMP_ACK_MESSAGE = {.FD = false, .ext_ID = false, .DLC = 3, .ID = 0x6B4, .data = {0x02, 0x3E, 0x00}};
|
static constexpr CAN_frame ECMP_ACK_MESSAGE = {.FD = false,
|
||||||
|
.ext_ID = false,
|
||||||
|
.DLC = 3,
|
||||||
|
.ID = 0x6B4,
|
||||||
|
.data = {0x02, 0x3E, 0x00}};
|
||||||
uint8_t data_010_CRC[8] = {0xB4, 0x96, 0x78, 0x5A, 0x3C, 0x1E, 0xF0, 0xD2};
|
uint8_t data_010_CRC[8] = {0xB4, 0x96, 0x78, 0x5A, 0x3C, 0x1E, 0xF0, 0xD2};
|
||||||
uint8_t data_3A2_CRC[16] = {0x0C, 0x1B, 0x2A, 0x39, 0x48, 0x57,
|
uint8_t data_3A2_CRC[16] = {0x0C, 0x1B, 0x2A, 0x39, 0x48, 0x57,
|
||||||
0x66, 0x75, 0x84, 0x93, 0xA2, 0xB1}; // NOTE. Changes on BMS state
|
0x66, 0x75, 0x84, 0x93, 0xA2, 0xB1}; // NOTE. Changes on BMS state
|
||||||
|
|
|
@ -128,7 +128,7 @@ uint8_t messageDelays[63] = {0, 0, 5, 10, 10, 15, 19, 19, 20, 20, 2
|
||||||
45, 49, 49, 50, 50, 52, 53, 53, 54, 55, 60, 60, 65, 67, 67, 70,
|
45, 49, 49, 50, 50, 52, 53, 53, 54, 55, 60, 60, 65, 67, 67, 70,
|
||||||
70, 75, 77, 77, 80, 80, 85, 90, 90, 95, 100, 100, 105, 110, 110, 115,
|
70, 75, 77, 77, 80, 80, 85, 90, 90, 95, 100, 100, 105, 110, 110, 115,
|
||||||
119, 119, 120, 120, 125, 130, 130, 135, 140, 140, 145, 149, 149, 150, 150};
|
119, 119, 120, 120, 125, 130, 130, 135, 140, 140, 145, 149, 149, 150, 150};
|
||||||
CAN_frame message_1 = {
|
static constexpr CAN_frame message_1 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -136,7 +136,7 @@ CAN_frame message_1 = {
|
||||||
.data = {0x62, 0x36, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
.data = {0x62, 0x36, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_2 = {
|
static constexpr CAN_frame message_2 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -144,7 +144,7 @@ CAN_frame message_2 = {
|
||||||
.data = {0xd4, 0x1b, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
.data = {0xd4, 0x1b, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_3 = {
|
static constexpr CAN_frame message_3 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -152,7 +152,7 @@ CAN_frame message_3 = {
|
||||||
.data = {0x24, 0x9b, 0x7b, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
.data = {0x24, 0x9b, 0x7b, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
||||||
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_4 = {
|
static constexpr CAN_frame message_4 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -160,7 +160,7 @@ CAN_frame message_4 = {
|
||||||
.data = {0x24, 0x6f, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
.data = {0x24, 0x6f, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_5 = {
|
static constexpr CAN_frame message_5 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -168,7 +168,7 @@ CAN_frame message_5 = {
|
||||||
.data = {0x92, 0x42, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
.data = {0x92, 0x42, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_6 = {
|
static constexpr CAN_frame message_6 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -176,7 +176,7 @@ CAN_frame message_6 = {
|
||||||
.data = {0xd7, 0x05, 0x7c, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
.data = {0xd7, 0x05, 0x7c, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
||||||
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_7 = {
|
static constexpr CAN_frame message_7 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -184,7 +184,7 @@ CAN_frame message_7 = {
|
||||||
.data = {0xb1, 0xe0, 0x26, 0x08, 0x54, 0x01, 0x04, 0x15, 0x00, 0x1a, 0x76, 0x00, 0x25, 0x01, 0x10, 0x27,
|
.data = {0xb1, 0xe0, 0x26, 0x08, 0x54, 0x01, 0x04, 0x15, 0x00, 0x1a, 0x76, 0x00, 0x25, 0x01, 0x10, 0x27,
|
||||||
0x4f, 0x06, 0x18, 0x04, 0x33, 0x15, 0x34, 0x28, 0x00, 0x00, 0x10, 0x06, 0x21, 0x00, 0x4b, 0x06}};
|
0x4f, 0x06, 0x18, 0x04, 0x33, 0x15, 0x34, 0x28, 0x00, 0x00, 0x10, 0x06, 0x21, 0x00, 0x4b, 0x06}};
|
||||||
|
|
||||||
CAN_frame message_8 = {
|
static constexpr CAN_frame message_8 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -192,7 +192,7 @@ CAN_frame message_8 = {
|
||||||
.data = {0xc6, 0xab, 0x26, 0x41, 0x00, 0x00, 0x01, 0x3c, 0xac, 0x0d, 0x40, 0x20, 0x05, 0xc8, 0xa0, 0x03,
|
.data = {0xc6, 0xab, 0x26, 0x41, 0x00, 0x00, 0x01, 0x3c, 0xac, 0x0d, 0x40, 0x20, 0x05, 0xc8, 0xa0, 0x03,
|
||||||
0x40, 0x20, 0x2b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0x40, 0x20, 0x2b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_9 = {
|
static constexpr CAN_frame message_9 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -200,14 +200,14 @@ CAN_frame message_9 = {
|
||||||
.data = {0xee, 0x84, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
.data = {0xee, 0x84, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_10 = {
|
static constexpr CAN_frame message_10 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
.ID = 0x120,
|
.ID = 0x120,
|
||||||
.data = {0x58, 0xa9, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
.data = {0x58, 0xa9, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
CAN_frame message_11 = {
|
static constexpr CAN_frame message_11 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -215,7 +215,7 @@ CAN_frame message_11 = {
|
||||||
.data = {0x91, 0x5c, 0x7d, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
.data = {0x91, 0x5c, 0x7d, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
||||||
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_12 = {
|
static constexpr CAN_frame message_12 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -223,7 +223,7 @@ CAN_frame message_12 = {
|
||||||
.data = {0xa8, 0xdd, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
.data = {0xa8, 0xdd, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_13 = {
|
static constexpr CAN_frame message_13 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -231,7 +231,7 @@ CAN_frame message_13 = {
|
||||||
.data = {0x1e, 0xf0, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
.data = {0x1e, 0xf0, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_14 = {
|
static constexpr CAN_frame message_14 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -239,7 +239,7 @@ CAN_frame message_14 = {
|
||||||
.data = {0x5b, 0xb7, 0x7e, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
.data = {0x5b, 0xb7, 0x7e, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
||||||
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_15 = {
|
static constexpr CAN_frame message_15 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -247,7 +247,7 @@ CAN_frame message_15 = {
|
||||||
.data = {0xec, 0x6d, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
.data = {0xec, 0x6d, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_16 = {
|
static constexpr CAN_frame message_16 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -255,7 +255,7 @@ CAN_frame message_16 = {
|
||||||
.data = {0x5a, 0x40, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
.data = {0x5a, 0x40, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_17 = {
|
static constexpr CAN_frame message_17 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -263,7 +263,7 @@ CAN_frame message_17 = {
|
||||||
.data = {0x1d, 0xee, 0x7f, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
.data = {0x1d, 0xee, 0x7f, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
||||||
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_18 = {
|
static constexpr CAN_frame message_18 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -271,7 +271,7 @@ CAN_frame message_18 = {
|
||||||
.data = {0xbd, 0xb2, 0x42, 0x00, 0x00, 0x00, 0x00, 0x80, 0x59, 0x00, 0x2b, 0x00, 0x00, 0x04, 0x00, 0x00,
|
.data = {0xbd, 0xb2, 0x42, 0x00, 0x00, 0x00, 0x00, 0x80, 0x59, 0x00, 0x2b, 0x00, 0x00, 0x04, 0x00, 0x00,
|
||||||
0xfa, 0xd0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xfa, 0xd0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_19 = {
|
static constexpr CAN_frame message_19 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -279,14 +279,14 @@ CAN_frame message_19 = {
|
||||||
.data = {0xc1, 0xf2, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00,
|
.data = {0xc1, 0xf2, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x70, 0x01, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x70, 0x01, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_20 = {
|
static constexpr CAN_frame message_20 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
.ID = 0x10A,
|
.ID = 0x10A,
|
||||||
.data = {0xaa, 0x34, 0x91, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
.data = {0xaa, 0x34, 0x91, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
CAN_frame message_21 = {
|
static constexpr CAN_frame message_21 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -294,7 +294,7 @@ CAN_frame message_21 = {
|
||||||
.data = {0x1c, 0x19, 0x91, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
.data = {0x1c, 0x19, 0x91, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_22 = {
|
static constexpr CAN_frame message_22 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -302,7 +302,7 @@ CAN_frame message_22 = {
|
||||||
.data = {0x79, 0xfb, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
.data = {0x79, 0xfb, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_23 = {
|
static constexpr CAN_frame message_23 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -310,7 +310,7 @@ CAN_frame message_23 = {
|
||||||
.data = {0x6e, 0xbb, 0xa0, 0x0d, 0x04, 0x01, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
.data = {0x6e, 0xbb, 0xa0, 0x0d, 0x04, 0x01, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xc7, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc7, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_24 = {
|
static constexpr CAN_frame message_24 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -318,7 +318,7 @@ CAN_frame message_24 = {
|
||||||
.data = {0x00, 0x00, 0x00, 0xd2, 0x06, 0x92, 0x05, 0x34, 0x07, 0x8e, 0x08, 0x73, 0x05, 0x80, 0x05, 0x83,
|
.data = {0x00, 0x00, 0x00, 0xd2, 0x06, 0x92, 0x05, 0x34, 0x07, 0x8e, 0x08, 0x73, 0x05, 0x80, 0x05, 0x83,
|
||||||
0x05, 0x73, 0x05, 0x80, 0x05, 0xed, 0x01, 0xdd, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0x05, 0x73, 0x05, 0x80, 0x05, 0xed, 0x01, 0xdd, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_25 = {
|
static constexpr CAN_frame message_25 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -326,7 +326,7 @@ CAN_frame message_25 = {
|
||||||
.data = {0xbe, 0x84, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
|
.data = {0xbe, 0x84, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
|
||||||
0x75, 0x6c, 0x86, 0x0d, 0xfb, 0xdf, 0x03, 0x36, 0xc3, 0x86, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0x75, 0x6c, 0x86, 0x0d, 0xfb, 0xdf, 0x03, 0x36, 0xc3, 0x86, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_26 = {
|
static constexpr CAN_frame message_26 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -334,7 +334,7 @@ CAN_frame message_26 = {
|
||||||
.data = {0x6b, 0xa2, 0x80, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
.data = {0x6b, 0xa2, 0x80, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
||||||
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_27 = {
|
static constexpr CAN_frame message_27 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -342,7 +342,7 @@ CAN_frame message_27 = {
|
||||||
.data = {0x60, 0xdf, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
.data = {0x60, 0xdf, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_28 = {
|
static constexpr CAN_frame message_28 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -350,7 +350,7 @@ CAN_frame message_28 = {
|
||||||
.data = {0xd6, 0xf2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
.data = {0xd6, 0xf2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_29 = {
|
static constexpr CAN_frame message_29 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -358,14 +358,14 @@ CAN_frame message_29 = {
|
||||||
.data = {0x2d, 0xfb, 0x81, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
.data = {0x2d, 0xfb, 0x81, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
||||||
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_30 = {
|
static constexpr CAN_frame message_30 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
.ID = 0x33A,
|
.ID = 0x33A,
|
||||||
.data = {0x1a, 0x23, 0x26, 0x10, 0x27, 0x4f, 0x06, 0x00, 0xf8, 0x1b, 0x19, 0x04, 0x30, 0x01, 0x00, 0x06,
|
.data = {0x1a, 0x23, 0x26, 0x10, 0x27, 0x4f, 0x06, 0x00, 0xf8, 0x1b, 0x19, 0x04, 0x30, 0x01, 0x00, 0x06,
|
||||||
0x00, 0x00, 0x00, 0x2e, 0x2d, 0x81, 0x25, 0x20, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0x00, 0x00, 0x00, 0x2e, 0x2d, 0x81, 0x25, 0x20, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
CAN_frame message_31 = {
|
static constexpr CAN_frame message_31 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -373,7 +373,7 @@ CAN_frame message_31 = {
|
||||||
.data = {0x26, 0x82, 0x26, 0xf4, 0x01, 0x00, 0x00, 0x50, 0x90, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
.data = {0x26, 0x82, 0x26, 0xf4, 0x01, 0x00, 0x00, 0x50, 0x90, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_32 = {
|
static constexpr CAN_frame message_32 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -381,7 +381,7 @@ CAN_frame message_32 = {
|
||||||
.data = {0x26, 0x86, 0x93, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
.data = {0x26, 0x86, 0x93, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_33 = {
|
static constexpr CAN_frame message_33 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -389,7 +389,7 @@ CAN_frame message_33 = {
|
||||||
.data = {0x90, 0xab, 0x93, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
.data = {0x90, 0xab, 0x93, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_34 = {
|
static constexpr CAN_frame message_34 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -397,7 +397,7 @@ CAN_frame message_34 = {
|
||||||
.data = {0xe7, 0x10, 0x82, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
.data = {0xe7, 0x10, 0x82, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
||||||
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_35 = {
|
static constexpr CAN_frame message_35 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -405,7 +405,7 @@ CAN_frame message_35 = {
|
||||||
.data = {0x69, 0x8a, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x15, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
.data = {0x69, 0x8a, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x15, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_36 = {
|
static constexpr CAN_frame message_36 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -413,7 +413,7 @@ CAN_frame message_36 = {
|
||||||
.data = {0xa3, 0xc8, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x36, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
.data = {0xa3, 0xc8, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x36, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xc7, 0x02, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc7, 0x02, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_37 = {
|
static constexpr CAN_frame message_37 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -421,7 +421,7 @@ CAN_frame message_37 = {
|
||||||
.data = {0xd5, 0x18, 0x94, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
.data = {0xd5, 0x18, 0x94, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_38 = {
|
static constexpr CAN_frame message_38 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -429,7 +429,7 @@ CAN_frame message_38 = {
|
||||||
.data = {0x63, 0x35, 0x94, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
.data = {0x63, 0x35, 0x94, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_39 = {
|
static constexpr CAN_frame message_39 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -437,14 +437,14 @@ CAN_frame message_39 = {
|
||||||
.data = {0xa1, 0x49, 0x83, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
.data = {0xa1, 0x49, 0x83, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
||||||
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_40 = {
|
static constexpr CAN_frame message_40 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
.ID = 0x10A,
|
.ID = 0x10A,
|
||||||
.data = {0x93, 0x41, 0x95, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
.data = {0x93, 0x41, 0x95, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
CAN_frame message_41 = {
|
static constexpr CAN_frame message_41 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -452,7 +452,7 @@ CAN_frame message_41 = {
|
||||||
.data = {0x25, 0x6c, 0x95, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
.data = {0x25, 0x6c, 0x95, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_42 = {
|
static constexpr CAN_frame message_42 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -460,7 +460,7 @@ CAN_frame message_42 = {
|
||||||
.data = {0x52, 0xd7, 0x84, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
.data = {0x52, 0xd7, 0x84, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
||||||
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_43 = {
|
static constexpr CAN_frame message_43 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -468,7 +468,7 @@ CAN_frame message_43 = {
|
||||||
.data = {0x59, 0xaa, 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
.data = {0x59, 0xaa, 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_44 = {
|
static constexpr CAN_frame message_44 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -476,7 +476,7 @@ CAN_frame message_44 = {
|
||||||
.data = {0xef, 0x87, 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
.data = {0xef, 0x87, 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_45 = {
|
static constexpr CAN_frame message_45 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -484,7 +484,7 @@ CAN_frame message_45 = {
|
||||||
.data = {0x14, 0x8e, 0x85, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
.data = {0x14, 0x8e, 0x85, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
||||||
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_46 = {
|
static constexpr CAN_frame message_46 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -492,7 +492,7 @@ CAN_frame message_46 = {
|
||||||
.data = {0x1f, 0xf3, 0x97, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
.data = {0x1f, 0xf3, 0x97, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_47 = {
|
static constexpr CAN_frame message_47 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -500,7 +500,7 @@ CAN_frame message_47 = {
|
||||||
.data = {0xa9, 0xde, 0x97, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
.data = {0xa9, 0xde, 0x97, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_48 = {
|
static constexpr CAN_frame message_48 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -508,7 +508,7 @@ CAN_frame message_48 = {
|
||||||
.data = {0xde, 0x65, 0x86, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
.data = {0xde, 0x65, 0x86, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
||||||
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_49 = {
|
static constexpr CAN_frame message_49 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -516,14 +516,14 @@ CAN_frame message_49 = {
|
||||||
.data = {0xd3, 0x11, 0x27, 0x08, 0x54, 0x01, 0x04, 0x15, 0x00, 0x1a, 0x76, 0x00, 0x25, 0x01, 0x10, 0x27,
|
.data = {0xd3, 0x11, 0x27, 0x08, 0x54, 0x01, 0x04, 0x15, 0x00, 0x1a, 0x76, 0x00, 0x25, 0x01, 0x10, 0x27,
|
||||||
0x4f, 0x06, 0x19, 0x04, 0x33, 0x15, 0x34, 0x28, 0x00, 0x00, 0x10, 0x06, 0x21, 0x00, 0x4b, 0x06}};
|
0x4f, 0x06, 0x19, 0x04, 0x33, 0x15, 0x34, 0x28, 0x00, 0x00, 0x10, 0x06, 0x21, 0x00, 0x4b, 0x06}};
|
||||||
|
|
||||||
CAN_frame message_50 = {
|
static constexpr CAN_frame message_50 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
.ID = 0x320,
|
.ID = 0x320,
|
||||||
.data = {0x80, 0xf2, 0x27, 0x41, 0x00, 0x00, 0x01, 0x3c, 0xac, 0x0d, 0x40, 0x20, 0x05, 0xc8, 0xa0, 0x03,
|
.data = {0x80, 0xf2, 0x27, 0x41, 0x00, 0x00, 0x01, 0x3c, 0xac, 0x0d, 0x40, 0x20, 0x05, 0xc8, 0xa0, 0x03,
|
||||||
0x40, 0x20, 0x2b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0x40, 0x20, 0x2b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
CAN_frame message_51 = {
|
static constexpr CAN_frame message_51 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -531,7 +531,7 @@ CAN_frame message_51 = {
|
||||||
.data = {0x9e, 0x87, 0x98, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
.data = {0x9e, 0x87, 0x98, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_52 = {
|
static constexpr CAN_frame message_52 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -539,7 +539,7 @@ CAN_frame message_52 = {
|
||||||
.data = {0x28, 0xaa, 0x98, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
.data = {0x28, 0xaa, 0x98, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_53 = {
|
static constexpr CAN_frame message_53 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -547,7 +547,7 @@ CAN_frame message_53 = {
|
||||||
.data = {0x98, 0x3c, 0x87, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
.data = {0x98, 0x3c, 0x87, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
||||||
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_54 = {
|
static constexpr CAN_frame message_54 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -555,7 +555,7 @@ CAN_frame message_54 = {
|
||||||
.data = {0xd8, 0xde, 0x99, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
.data = {0xd8, 0xde, 0x99, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_55 = {
|
static constexpr CAN_frame message_55 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -563,7 +563,7 @@ CAN_frame message_55 = {
|
||||||
.data = {0x6e, 0xf3, 0x99, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
.data = {0x6e, 0xf3, 0x99, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_56 = {
|
static constexpr CAN_frame message_56 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -571,7 +571,7 @@ CAN_frame message_56 = {
|
||||||
.data = {0x19, 0x48, 0x88, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
.data = {0x19, 0x48, 0x88, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
||||||
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_57 = {
|
static constexpr CAN_frame message_57 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -579,7 +579,7 @@ CAN_frame message_57 = {
|
||||||
.data = {0x12, 0x35, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
.data = {0x12, 0x35, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_58 = {
|
static constexpr CAN_frame message_58 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -587,7 +587,7 @@ CAN_frame message_58 = {
|
||||||
.data = {0xa4, 0x18, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
.data = {0xa4, 0x18, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x37, 0x35, 0x37, 0x37,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_59 = {
|
static constexpr CAN_frame message_59 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -595,7 +595,7 @@ CAN_frame message_59 = {
|
||||||
.data = {0x5f, 0x11, 0x89, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
.data = {0x5f, 0x11, 0x89, 0x55, 0x44, 0x64, 0xd8, 0x1b, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52,
|
||||||
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
0x00, 0x12, 0x02, 0x64, 0x00, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_60 = {
|
static constexpr CAN_frame message_60 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -603,7 +603,7 @@ CAN_frame message_60 = {
|
||||||
.data = {0xfb, 0xeb, 0x43, 0x00, 0x00, 0x00, 0x00, 0x80, 0x59, 0x00, 0x2b, 0x00, 0x00, 0x04, 0x00, 0x00,
|
.data = {0xfb, 0xeb, 0x43, 0x00, 0x00, 0x00, 0x00, 0x80, 0x59, 0x00, 0x2b, 0x00, 0x00, 0x04, 0x00, 0x00,
|
||||||
0xfa, 0xd0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xfa, 0xd0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_61 = {
|
static constexpr CAN_frame message_61 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -611,7 +611,7 @@ CAN_frame message_61 = {
|
||||||
.data = {0xcc, 0xcd, 0xa2, 0x21, 0x00, 0xa1, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x00,
|
.data = {0xcc, 0xcd, 0xa2, 0x21, 0x00, 0xa1, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_62 = {
|
static constexpr CAN_frame message_62 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
|
@ -619,21 +619,21 @@ CAN_frame message_62 = {
|
||||||
.data = {0x87, 0xab, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00,
|
.data = {0x87, 0xab, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x70, 0x01, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x70, 0x01, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
CAN_frame message_63 = {
|
static constexpr CAN_frame message_63 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 32,
|
.DLC = 32,
|
||||||
.ID = 0x10A,
|
.ID = 0x10A,
|
||||||
.data = {0x54, 0x6c, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
.data = {0x54, 0x6c, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x36, 0x39, 0x35, 0x35,
|
||||||
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
0xc9, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
CAN_frame* messages[] = {&message_1, &message_2, &message_3, &message_4, &message_5, &message_6, &message_7,
|
static const CAN_frame* messages[] = {
|
||||||
&message_8, &message_9, &message_10, &message_11, &message_12, &message_13, &message_14,
|
&message_1, &message_2, &message_3, &message_4, &message_5, &message_6, &message_7, &message_8,
|
||||||
&message_15, &message_16, &message_17, &message_18, &message_19, &message_20, &message_21,
|
&message_9, &message_10, &message_11, &message_12, &message_13, &message_14, &message_15, &message_16,
|
||||||
&message_22, &message_23, &message_24, &message_25, &message_26, &message_27, &message_28,
|
&message_17, &message_18, &message_19, &message_20, &message_21, &message_22, &message_23, &message_24,
|
||||||
&message_29, &message_30, &message_31, &message_32, &message_33, &message_34, &message_35,
|
&message_25, &message_26, &message_27, &message_28, &message_29, &message_30, &message_31, &message_32,
|
||||||
&message_36, &message_37, &message_38, &message_39, &message_40, &message_41, &message_42,
|
&message_33, &message_34, &message_35, &message_36, &message_37, &message_38, &message_39, &message_40,
|
||||||
&message_43, &message_44, &message_45, &message_46, &message_47, &message_48, &message_49,
|
&message_41, &message_42, &message_43, &message_44, &message_45, &message_46, &message_47, &message_48,
|
||||||
&message_50, &message_51, &message_52, &message_53, &message_54, &message_55, &message_56,
|
&message_49, &message_50, &message_51, &message_52, &message_53, &message_54, &message_55, &message_56,
|
||||||
&message_57, &message_58, &message_59, &message_60, &message_61, &message_62, &message_63};
|
&message_57, &message_58, &message_59, &message_60, &message_61, &message_62, &message_63};
|
||||||
/* PID polling messages */
|
/* PID polling messages */
|
||||||
CAN_frame EGMP_7E4 = {.FD = true,
|
CAN_frame EGMP_7E4 = {.FD = true,
|
||||||
|
@ -641,7 +641,7 @@ CAN_frame EGMP_7E4 = {.FD = true,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x7E4,
|
.ID = 0x7E4,
|
||||||
.data = {0x03, 0x22, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00}}; //Poll PID 03 22 01 01
|
.data = {0x03, 0x22, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00}}; //Poll PID 03 22 01 01
|
||||||
CAN_frame EGMP_7E4_ack = {
|
static constexpr CAN_frame EGMP_7E4_ack = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
|
|
|
@ -361,7 +361,7 @@ class MebBattery : public CanBattery {
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x1C40007B, // SOC 02 8C
|
.ID = 0x1C40007B, // SOC 02 8C
|
||||||
.data = {0x03, 0x22, 0x02, 0x8C, 0x55, 0x55, 0x55, 0x55}};
|
.data = {0x03, 0x22, 0x02, 0x8C, 0x55, 0x55, 0x55, 0x55}};
|
||||||
CAN_frame MEB_ACK_FRAME = {.FD = true,
|
static constexpr CAN_frame MEB_ACK_FRAME = {.FD = true,
|
||||||
.ext_ID = true,
|
.ext_ID = true,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x1C40007B, // Ack
|
.ID = 0x1C40007B, // Ack
|
||||||
|
@ -392,7 +392,7 @@ class MebBattery : public CanBattery {
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x6B2,
|
.ID = 0x6B2,
|
||||||
.data = {0x6A, 0xA7, 0x37, 0x80, 0xC9, 0xBD, 0xF6, 0xC2}};
|
.data = {0x6A, 0xA7, 0x37, 0x80, 0xC9, 0xBD, 0xF6, 0xC2}};
|
||||||
CAN_frame MEB_17FC007B_poll = {.FD = true, // Non period request
|
static constexpr CAN_frame MEB_17FC007B_poll = {.FD = true, // Non period request
|
||||||
.ext_ID = true,
|
.ext_ID = true,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x17FC007B,
|
.ID = 0x17FC007B,
|
||||||
|
@ -402,14 +402,14 @@ class MebBattery : public CanBattery {
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x1A5555A6,
|
.ID = 0x1A5555A6,
|
||||||
.data = {0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
.data = {0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
CAN_frame MEB_585 = {
|
static constexpr CAN_frame MEB_585 = {
|
||||||
.FD = true,
|
.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x585,
|
.ID = 0x585,
|
||||||
.data = {0xCF, 0x38, 0xAF, 0x5B, 0x25, 0x00, 0x00, 0x00}}; // CF 38 AF 5B 25 00 00 00 in start4.log
|
.data = {0xCF, 0x38, 0xAF, 0x5B, 0x25, 0x00, 0x00, 0x00}}; // CF 38 AF 5B 25 00 00 00 in start4.log
|
||||||
// .data = {0xCF, 0x38, 0x20, 0x02, 0x25, 0xF7, 0x30, 0x00}}; // CF 38 AF 5B 25 00 00 00 in start4.log
|
// .data = {0xCF, 0x38, 0x20, 0x02, 0x25, 0xF7, 0x30, 0x00}}; // CF 38 AF 5B 25 00 00 00 in start4.log
|
||||||
CAN_frame MEB_5F5 = {.FD = true,
|
static constexpr CAN_frame MEB_5F5 = {.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x5F5,
|
.ID = 0x5F5,
|
||||||
|
@ -429,52 +429,52 @@ class MebBattery : public CanBattery {
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x0FD, //CRC and counter, otherwise static
|
.ID = 0x0FD, //CRC and counter, otherwise static
|
||||||
.data = {0x5F, 0xD0, 0x1F, 0x81, 0x00, 0x00, 0x00, 0x00}};
|
.data = {0x5F, 0xD0, 0x1F, 0x81, 0x00, 0x00, 0x00, 0x00}};
|
||||||
CAN_frame MEB_16A954FB = {.FD = true,
|
static constexpr CAN_frame MEB_16A954FB = {.FD = true,
|
||||||
.ext_ID = true,
|
.ext_ID = true,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x16A954FB,
|
.ID = 0x16A954FB,
|
||||||
.data = {0x00, 0xC0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
.data = {0x00, 0xC0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
CAN_frame MEB_1A555548 = {.FD = true,
|
static constexpr CAN_frame MEB_1A555548 = {.FD = true,
|
||||||
.ext_ID = true,
|
.ext_ID = true,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x1A555548,
|
.ID = 0x1A555548,
|
||||||
.data = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
.data = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
CAN_frame MEB_1A55552B = {.FD = true,
|
static constexpr CAN_frame MEB_1A55552B = {.FD = true,
|
||||||
.ext_ID = true,
|
.ext_ID = true,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x1A55552B,
|
.ID = 0x1A55552B,
|
||||||
.data = {0x00, 0x00, 0x00, 0xA0, 0x02, 0x04, 0x00, 0x30}};
|
.data = {0x00, 0x00, 0x00, 0xA0, 0x02, 0x04, 0x00, 0x30}};
|
||||||
CAN_frame MEB_569 = {.FD = true,
|
static constexpr CAN_frame MEB_569 = {.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x569, //HVEM
|
.ID = 0x569, //HVEM
|
||||||
.data = {0x00, 0x00, 0x01, 0x3A, 0x00, 0x00, 0x00, 0x00}};
|
.data = {0x00, 0x00, 0x01, 0x3A, 0x00, 0x00, 0x00, 0x00}};
|
||||||
CAN_frame MEB_16A954B4 = {.FD = true,
|
static constexpr CAN_frame MEB_16A954B4 = {.FD = true,
|
||||||
.ext_ID = true,
|
.ext_ID = true,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x16A954B4, //eTM
|
.ID = 0x16A954B4, //eTM
|
||||||
.data = {0xFE, 0xB6, 0x0D, 0x00, 0x00, 0xD5, 0x48, 0xFD}};
|
.data = {0xFE, 0xB6, 0x0D, 0x00, 0x00, 0xD5, 0x48, 0xFD}};
|
||||||
CAN_frame MEB_1B000046 = {.FD = false, // Not FD
|
static constexpr CAN_frame MEB_1B000046 = {.FD = false, // Not FD
|
||||||
.ext_ID = true,
|
.ext_ID = true,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x1B000046, // Klima
|
.ID = 0x1B000046, // Klima
|
||||||
.data = {0x00, 0x40, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00}};
|
.data = {0x00, 0x40, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00}};
|
||||||
CAN_frame MEB_1B000010 = {.FD = false, // Not FD
|
static constexpr CAN_frame MEB_1B000010 = {.FD = false, // Not FD
|
||||||
.ext_ID = true,
|
.ext_ID = true,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x1B000010, // Gateway
|
.ID = 0x1B000010, // Gateway
|
||||||
.data = {0x00, 0x50, 0x08, 0x50, 0x01, 0xFF, 0x30, 0x00}};
|
.data = {0x00, 0x50, 0x08, 0x50, 0x01, 0xFF, 0x30, 0x00}};
|
||||||
CAN_frame MEB_1B0000B9 = {.FD = false, // Not FD
|
static constexpr CAN_frame MEB_1B0000B9 = {.FD = false, // Not FD
|
||||||
.ext_ID = true,
|
.ext_ID = true,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x1B0000B9, //DC/DC converter
|
.ID = 0x1B0000B9, //DC/DC converter
|
||||||
.data = {0x00, 0x40, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00}};
|
.data = {0x00, 0x40, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00}};
|
||||||
CAN_frame MEB_153 = {.FD = true,
|
static constexpr CAN_frame MEB_153 = {.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x153, // content
|
.ID = 0x153, // content
|
||||||
.data = {0x00, 0x00, 0x00, 0xFF, 0xEF, 0xFE, 0xFF, 0xFF}};
|
.data = {0x00, 0x00, 0x00, 0xFF, 0xEF, 0xFE, 0xFF, 0xFF}};
|
||||||
CAN_frame MEB_5E1 = {.FD = true,
|
static constexpr CAN_frame MEB_5E1 = {.FD = true,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x5E1, // content
|
.ID = 0x5E1, // content
|
||||||
|
|
|
@ -121,21 +121,21 @@ class TeslaBattery : public CanBattery {
|
||||||
uint16_t previous_max_percentage = datalayer.battery.settings.max_percentage;
|
uint16_t previous_max_percentage = datalayer.battery.settings.max_percentage;
|
||||||
|
|
||||||
//0x082 UI_tripPlanning: "cycle_time" 1000ms
|
//0x082 UI_tripPlanning: "cycle_time" 1000ms
|
||||||
CAN_frame TESLA_082 = {.FD = false,
|
static constexpr CAN_frame TESLA_082 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x082,
|
.ID = 0x082,
|
||||||
.data = {0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80}};
|
.data = {0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80}};
|
||||||
|
|
||||||
//0x102 VCLEFT_doorStatus: "cycle_time" 100ms
|
//0x102 VCLEFT_doorStatus: "cycle_time" 100ms
|
||||||
CAN_frame TESLA_102 = {.FD = false,
|
static constexpr CAN_frame TESLA_102 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x102,
|
.ID = 0x102,
|
||||||
.data = {0x22, 0x33, 0x00, 0x00, 0xC0, 0x38, 0x21, 0x08}};
|
.data = {0x22, 0x33, 0x00, 0x00, 0xC0, 0x38, 0x21, 0x08}};
|
||||||
|
|
||||||
//0x103 VCRIGHT_doorStatus: "cycle_time" 100ms
|
//0x103 VCRIGHT_doorStatus: "cycle_time" 100ms
|
||||||
CAN_frame TESLA_103 = {.FD = false,
|
static constexpr CAN_frame TESLA_103 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x103,
|
.ID = 0x103,
|
||||||
|
@ -229,18 +229,18 @@ class TeslaBattery : public CanBattery {
|
||||||
CAN_frame TESLA_229 = {.FD = false, .ext_ID = false, .DLC = 3, .ID = 0x229, .data = {0x46, 0x00, 0x00}};
|
CAN_frame TESLA_229 = {.FD = false, .ext_ID = false, .DLC = 3, .ID = 0x229, .data = {0x46, 0x00, 0x00}};
|
||||||
|
|
||||||
//0x241 VCFRONT_coolant: "cycle_time" 100ms
|
//0x241 VCFRONT_coolant: "cycle_time" 100ms
|
||||||
CAN_frame TESLA_241 = {.FD = false,
|
static constexpr CAN_frame TESLA_241 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 7,
|
.DLC = 7,
|
||||||
.ID = 0x241,
|
.ID = 0x241,
|
||||||
.data = {0x35, 0x34, 0x0C, 0x0F, 0x8F, 0x55, 0x00}};
|
.data = {0x35, 0x34, 0x0C, 0x0F, 0x8F, 0x55, 0x00}};
|
||||||
|
|
||||||
//0x2D1 VCFRONT_okToUseHighPower: "cycle_time" 100ms
|
//0x2D1 VCFRONT_okToUseHighPower: "cycle_time" 100ms
|
||||||
CAN_frame TESLA_2D1 = {.FD = false, .ext_ID = false, .DLC = 2, .ID = 0x2D1, .data = {0xFF, 0x01}};
|
static constexpr CAN_frame TESLA_2D1 = {.FD = false, .ext_ID = false, .DLC = 2, .ID = 0x2D1, .data = {0xFF, 0x01}};
|
||||||
|
|
||||||
//0x2E1, 6 muxes
|
//0x2E1, 6 muxes
|
||||||
//0x2E1 VCFRONT_status: "cycle_time" 10ms each mux/statusIndex
|
//0x2E1 VCFRONT_status: "cycle_time" 10ms each mux/statusIndex
|
||||||
CAN_frame TESLA_2E1_VEHICLE_AND_RAILS = {.FD = false,
|
static constexpr CAN_frame TESLA_2E1_VEHICLE_AND_RAILS = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x2E1,
|
.ID = 0x2E1,
|
||||||
|
@ -253,35 +253,35 @@ class TeslaBattery : public CanBattery {
|
||||||
//{0x29, 0x0A, 0x06, 0xFF, 0x0F, 0x00, 0x00, 0x00} SLEEP_STANDBY
|
//{0x29, 0x0A, 0x06, 0xFF, 0x0F, 0x00, 0x00, 0x00} SLEEP_STANDBY
|
||||||
|
|
||||||
//0x2E1 VCFRONT_status: "cycle_time" 10ms each mux/statusIndex
|
//0x2E1 VCFRONT_status: "cycle_time" 10ms each mux/statusIndex
|
||||||
CAN_frame TESLA_2E1_HOMELINK = {.FD = false,
|
static constexpr CAN_frame TESLA_2E1_HOMELINK = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x2E1,
|
.ID = 0x2E1,
|
||||||
.data = {0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00}};
|
.data = {0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00}};
|
||||||
|
|
||||||
//0x2E1 VCFRONT_status: "cycle_time" 10ms each mux/statusIndex
|
//0x2E1 VCFRONT_status: "cycle_time" 10ms each mux/statusIndex
|
||||||
CAN_frame TESLA_2E1_REFRIGERANT_SYSTEM = {.FD = false,
|
static constexpr CAN_frame TESLA_2E1_REFRIGERANT_SYSTEM = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x2E1,
|
.ID = 0x2E1,
|
||||||
.data = {0x03, 0x6D, 0x99, 0x02, 0x1B, 0x57, 0x00, 0x00}};
|
.data = {0x03, 0x6D, 0x99, 0x02, 0x1B, 0x57, 0x00, 0x00}};
|
||||||
|
|
||||||
//0x2E1 VCFRONT_status: "cycle_time" 10ms each mux/statusIndex
|
//0x2E1 VCFRONT_status: "cycle_time" 10ms each mux/statusIndex
|
||||||
CAN_frame TESLA_2E1_LV_BATTERY_DEBUG = {.FD = false,
|
static constexpr CAN_frame TESLA_2E1_LV_BATTERY_DEBUG = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x2E1,
|
.ID = 0x2E1,
|
||||||
.data = {0xFC, 0x1B, 0xD1, 0x99, 0x9A, 0xD8, 0x09, 0x00}};
|
.data = {0xFC, 0x1B, 0xD1, 0x99, 0x9A, 0xD8, 0x09, 0x00}};
|
||||||
|
|
||||||
//0x2E1 VCFRONT_status: "cycle_time" 10ms each mux/statusIndex
|
//0x2E1 VCFRONT_status: "cycle_time" 10ms each mux/statusIndex
|
||||||
CAN_frame TESLA_2E1_MUX_5 = {.FD = false,
|
static constexpr CAN_frame TESLA_2E1_MUX_5 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x2E1,
|
.ID = 0x2E1,
|
||||||
.data = {0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
.data = {0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
//0x2E1 VCFRONT_status: "cycle_time" 10ms each mux/statusIndex
|
//0x2E1 VCFRONT_status: "cycle_time" 10ms each mux/statusIndex
|
||||||
CAN_frame TESLA_2E1_BODY_CONTROLS = {.FD = false,
|
static constexpr CAN_frame TESLA_2E1_BODY_CONTROLS = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x2E1,
|
.ID = 0x2E1,
|
||||||
|
@ -295,7 +295,11 @@ class TeslaBattery : public CanBattery {
|
||||||
.data = {0x02, 0x00, 0x10, 0x00, 0x00, 0x80, 0x00, 0x6C}};
|
.data = {0x02, 0x00, 0x10, 0x00, 0x00, 0x80, 0x00, 0x6C}};
|
||||||
|
|
||||||
//0x284 UI_vehicleModes: "cycle_time" 500ms
|
//0x284 UI_vehicleModes: "cycle_time" 500ms
|
||||||
CAN_frame TESLA_284 = {.FD = false, .ext_ID = false, .DLC = 5, .ID = 0x284, .data = {0x10, 0x00, 0x00, 0x00, 0x00}};
|
static constexpr CAN_frame TESLA_284 = {.FD = false,
|
||||||
|
.ext_ID = false,
|
||||||
|
.DLC = 5,
|
||||||
|
.ID = 0x284,
|
||||||
|
.data = {0x10, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
//0x293 UI_chassisControl: "cycle_time" 500ms, UI_chassisControlChecksum/UI_chassisControlCounter generated via generateFrameCounterChecksum
|
//0x293 UI_chassisControl: "cycle_time" 500ms, UI_chassisControlChecksum/UI_chassisControlCounter generated via generateFrameCounterChecksum
|
||||||
CAN_frame TESLA_293 = {.FD = false,
|
CAN_frame TESLA_293 = {.FD = false,
|
||||||
|
@ -307,7 +311,7 @@ class TeslaBattery : public CanBattery {
|
||||||
//0x3A1 VCFRONT_vehicleStatus: "cycle_time" 50ms, VCFRONT_vehicleStatusChecksum/VCFRONT_vehicleStatusCounter eventually need to be generated via generateMuxFrameCounterChecksum
|
//0x3A1 VCFRONT_vehicleStatus: "cycle_time" 50ms, VCFRONT_vehicleStatusChecksum/VCFRONT_vehicleStatusCounter eventually need to be generated via generateMuxFrameCounterChecksum
|
||||||
//Looks like 2 muxes, counter at bit 52 width 4 and checksum at bit 56 width 8? Need later software Model3_ETH.compact.json signal file or DBC.
|
//Looks like 2 muxes, counter at bit 52 width 4 and checksum at bit 56 width 8? Need later software Model3_ETH.compact.json signal file or DBC.
|
||||||
//Migrated to an array until figured out
|
//Migrated to an array until figured out
|
||||||
CAN_frame TESLA_3A1[16] = {
|
static constexpr CAN_frame TESLA_3A1[16] = {
|
||||||
{.FD = false, .ext_ID = false, .DLC = 8, .ID = 0x3A1, .data = {0xC3, 0xFF, 0xFF, 0xFF, 0x3D, 0x00, 0xD0, 0x01}},
|
{.FD = false, .ext_ID = false, .DLC = 8, .ID = 0x3A1, .data = {0xC3, 0xFF, 0xFF, 0xFF, 0x3D, 0x00, 0xD0, 0x01}},
|
||||||
{.FD = false, .ext_ID = false, .DLC = 8, .ID = 0x3A1, .data = {0x08, 0x62, 0x0B, 0x18, 0x00, 0x28, 0xE2, 0xCB}},
|
{.FD = false, .ext_ID = false, .DLC = 8, .ID = 0x3A1, .data = {0x08, 0x62, 0x0B, 0x18, 0x00, 0x28, 0xE2, 0xCB}},
|
||||||
{.FD = false, .ext_ID = false, .DLC = 8, .ID = 0x3A1, .data = {0xC3, 0xFF, 0xFF, 0xFF, 0x3D, 0x00, 0xF0, 0x21}},
|
{.FD = false, .ext_ID = false, .DLC = 8, .ID = 0x3A1, .data = {0xC3, 0xFF, 0xFF, 0xFF, 0x3D, 0x00, 0xF0, 0x21}},
|
||||||
|
@ -344,7 +348,7 @@ class TeslaBattery : public CanBattery {
|
||||||
CAN_frame TESLA_333 = {.FD = false, .ext_ID = false, .DLC = 5, .ID = 0x333, .data = {0x84, 0x30, 0x84, 0x07, 0x02}};
|
CAN_frame TESLA_333 = {.FD = false, .ext_ID = false, .DLC = 5, .ID = 0x333, .data = {0x84, 0x30, 0x84, 0x07, 0x02}};
|
||||||
|
|
||||||
//0x334 UI request: "cycle_time" 500ms, initial frame car sends
|
//0x334 UI request: "cycle_time" 500ms, initial frame car sends
|
||||||
CAN_frame TESLA_334_INITIAL = {.FD = false,
|
static constexpr CAN_frame TESLA_334_INITIAL = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x334,
|
.ID = 0x334,
|
||||||
|
@ -358,7 +362,7 @@ class TeslaBattery : public CanBattery {
|
||||||
.data = {0x3F, 0x3F, 0x00, 0x0F, 0xE2, 0x3F, 0x90, 0x75}};
|
.data = {0x3F, 0x3F, 0x00, 0x0F, 0xE2, 0x3F, 0x90, 0x75}};
|
||||||
|
|
||||||
//0x3B3 UI_vehicleControl2: "cycle_time" 500ms
|
//0x3B3 UI_vehicleControl2: "cycle_time" 500ms
|
||||||
CAN_frame TESLA_3B3 = {.FD = false,
|
static constexpr CAN_frame TESLA_3B3 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x3B3,
|
.ID = 0x3B3,
|
||||||
|
@ -368,35 +372,35 @@ class TeslaBattery : public CanBattery {
|
||||||
CAN_frame TESLA_39D = {.FD = false, .ext_ID = false, .DLC = 5, .ID = 0x39D, .data = {0xE1, 0x59, 0xC1, 0x27, 0x00}};
|
CAN_frame TESLA_39D = {.FD = false, .ext_ID = false, .DLC = 5, .ID = 0x39D, .data = {0xE1, 0x59, 0xC1, 0x27, 0x00}};
|
||||||
|
|
||||||
//0x3C2 VCLEFT_switchStatus (Mux0, initial frame car sends): "cycle_time" 50ms, sent once
|
//0x3C2 VCLEFT_switchStatus (Mux0, initial frame car sends): "cycle_time" 50ms, sent once
|
||||||
CAN_frame TESLA_3C2_INITIAL = {.FD = false,
|
static constexpr CAN_frame TESLA_3C2_INITIAL = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x3C2,
|
.ID = 0x3C2,
|
||||||
.data = {0x00, 0x55, 0x55, 0x55, 0x00, 0x00, 0x5A, 0x05}};
|
.data = {0x00, 0x55, 0x55, 0x55, 0x00, 0x00, 0x5A, 0x05}};
|
||||||
|
|
||||||
//0x3C2 VCLEFT_switchStatus (Mux0): "cycle_time" 50ms each mux/SwitchStatusIndex
|
//0x3C2 VCLEFT_switchStatus (Mux0): "cycle_time" 50ms each mux/SwitchStatusIndex
|
||||||
CAN_frame TESLA_3C2_Mux0 = {.FD = false,
|
static constexpr CAN_frame TESLA_3C2_Mux0 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x3C2,
|
.ID = 0x3C2,
|
||||||
.data = {0x00, 0x55, 0x55, 0x55, 0x00, 0x00, 0x5A, 0x45}};
|
.data = {0x00, 0x55, 0x55, 0x55, 0x00, 0x00, 0x5A, 0x45}};
|
||||||
|
|
||||||
//0x3C2 VCLEFT_switchStatus (Mux1): "cycle_time" 50ms each mux/SwitchStatusIndex
|
//0x3C2 VCLEFT_switchStatus (Mux1): "cycle_time" 50ms each mux/SwitchStatusIndex
|
||||||
CAN_frame TESLA_3C2_Mux1 = {.FD = false,
|
static constexpr CAN_frame TESLA_3C2_Mux1 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x3C2,
|
.ID = 0x3C2,
|
||||||
.data = {0x29, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
.data = {0x29, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
//0x504 Initially sent
|
//0x504 Initially sent
|
||||||
CAN_frame TESLA_504_INITIAL = {.FD = false,
|
static constexpr CAN_frame TESLA_504_INITIAL = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x504,
|
.ID = 0x504,
|
||||||
.data = {0x00, 0x1B, 0x06, 0x03, 0x00, 0x01, 0x00, 0x01}};
|
.data = {0x00, 0x1B, 0x06, 0x03, 0x00, 0x01, 0x00, 0x01}};
|
||||||
|
|
||||||
//0x55A Unknown but always sent: "cycle_time" 500ms
|
//0x55A Unknown but always sent: "cycle_time" 500ms
|
||||||
CAN_frame TESLA_55A = {.FD = false,
|
static constexpr CAN_frame TESLA_55A = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x55A,
|
.ID = 0x55A,
|
||||||
|
@ -410,7 +414,7 @@ class TeslaBattery : public CanBattery {
|
||||||
.data = {0x01, 0x49, 0x42, 0x47, 0x00, 0x03, 0x15, 0x01}};
|
.data = {0x01, 0x49, 0x42, 0x47, 0x00, 0x03, 0x15, 0x01}};
|
||||||
|
|
||||||
//0x7FF GTW_carConfig: "cycle_time" 100ms each mux/carConfigMultiplexer
|
//0x7FF GTW_carConfig: "cycle_time" 100ms each mux/carConfigMultiplexer
|
||||||
CAN_frame TESLA_7FF_Mux2 = {.FD = false,
|
static constexpr CAN_frame TESLA_7FF_Mux2 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x7FF,
|
.ID = 0x7FF,
|
||||||
|
@ -424,42 +428,42 @@ class TeslaBattery : public CanBattery {
|
||||||
.data = {0x03, 0x01, 0x08, 0x48, 0x01, 0x00, 0x00, 0x12}};
|
.data = {0x03, 0x01, 0x08, 0x48, 0x01, 0x00, 0x00, 0x12}};
|
||||||
|
|
||||||
//0x7FF GTW_carConfig: "cycle_time" 100ms each mux/carConfigMultiplexer
|
//0x7FF GTW_carConfig: "cycle_time" 100ms each mux/carConfigMultiplexer
|
||||||
CAN_frame TESLA_7FF_Mux4 = {.FD = false,
|
static constexpr CAN_frame TESLA_7FF_Mux4 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x7FF,
|
.ID = 0x7FF,
|
||||||
.data = {0x04, 0x73, 0x03, 0x67, 0x5C, 0x00, 0x00, 0x00}};
|
.data = {0x04, 0x73, 0x03, 0x67, 0x5C, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
//0x7FF GTW_carConfig: "cycle_time" 100ms each mux/carConfigMultiplexer
|
//0x7FF GTW_carConfig: "cycle_time" 100ms each mux/carConfigMultiplexer
|
||||||
CAN_frame TESLA_7FF_Mux5 = {.FD = false,
|
static constexpr CAN_frame TESLA_7FF_Mux5 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x7FF,
|
.ID = 0x7FF,
|
||||||
.data = {0x05, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00}};
|
.data = {0x05, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
//0x7FF GTW_carConfig: "cycle_time" 100ms each mux/carConfigMultiplexer - later firmware has muxes 6 & 7, needed?
|
//0x7FF GTW_carConfig: "cycle_time" 100ms each mux/carConfigMultiplexer - later firmware has muxes 6 & 7, needed?
|
||||||
CAN_frame TESLA_7FF_Mux6 = {.FD = false,
|
static constexpr CAN_frame TESLA_7FF_Mux6 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x7FF,
|
.ID = 0x7FF,
|
||||||
.data = {0x06, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xD0}};
|
.data = {0x06, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xD0}};
|
||||||
|
|
||||||
//0x7FF GTW_carConfig: "cycle_time" 100ms each mux/carConfigMultiplexer - later firmware has muxes 6 & 7, needed?
|
//0x7FF GTW_carConfig: "cycle_time" 100ms each mux/carConfigMultiplexer - later firmware has muxes 6 & 7, needed?
|
||||||
CAN_frame TESLA_7FF_Mux7 = {.FD = false,
|
static constexpr CAN_frame TESLA_7FF_Mux7 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x7FF,
|
.ID = 0x7FF,
|
||||||
.data = {0x07, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00}};
|
.data = {0x07, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00}};
|
||||||
|
|
||||||
//0x722 BMS_bmbKeepAlive: "cycle_time" 100ms, should only be sent when testing packs or diagnosing problems
|
//0x722 BMS_bmbKeepAlive: "cycle_time" 100ms, should only be sent when testing packs or diagnosing problems
|
||||||
CAN_frame TESLA_722 = {.FD = false,
|
static constexpr CAN_frame TESLA_722 = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x722,
|
.ID = 0x722,
|
||||||
.data = {0x02, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}};
|
.data = {0x02, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}};
|
||||||
|
|
||||||
//0x25D CP_status: "cycle_time" 100ms, stops some cpMia errors, but not necessary for standalone pack operation so not used/necessary. Note CP_type for different regions, the below has "IEC_CCS"
|
//0x25D CP_status: "cycle_time" 100ms, stops some cpMia errors, but not necessary for standalone pack operation so not used/necessary. Note CP_type for different regions, the below has "IEC_CCS"
|
||||||
CAN_frame TESLA_25D = {.FD = false,
|
static constexpr CAN_frame TESLA_25D = {.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x25D,
|
.ID = 0x25D,
|
||||||
|
@ -473,7 +477,8 @@ class TeslaBattery : public CanBattery {
|
||||||
.data = {0x02, 0x27, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00}}; // Define initial UDS request
|
.data = {0x02, 0x27, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00}}; // Define initial UDS request
|
||||||
|
|
||||||
//0x610 BMS Query UDS request: on demand
|
//0x610 BMS Query UDS request: on demand
|
||||||
CAN_frame TESLA_610 = {.FD = false,
|
static constexpr CAN_frame TESLA_610 = {
|
||||||
|
.FD = false,
|
||||||
.ext_ID = false,
|
.ext_ID = false,
|
||||||
.DLC = 8,
|
.DLC = 8,
|
||||||
.ID = 0x610,
|
.ID = 0x610,
|
||||||
|
|
|
@ -193,7 +193,7 @@ bool init_CAN() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void transmit_can_frame_to_interface(CAN_frame* tx_frame, int interface) {
|
void transmit_can_frame_to_interface(const CAN_frame* tx_frame, int interface) {
|
||||||
if (!allowed_to_send_CAN) {
|
if (!allowed_to_send_CAN) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
extern bool use_canfd_as_can;
|
extern bool use_canfd_as_can;
|
||||||
|
|
||||||
void dump_can_frame(CAN_frame& frame, frameDirection msgDir);
|
void dump_can_frame(CAN_frame& frame, frameDirection msgDir);
|
||||||
void transmit_can_frame_to_interface(CAN_frame* tx_frame, int interface);
|
void transmit_can_frame_to_interface(const CAN_frame* tx_frame, int interface);
|
||||||
|
|
||||||
class CanReceiver;
|
class CanReceiver;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include "../../Software/src/communication/Transmitter.h"
|
#include "../../Software/src/communication/Transmitter.h"
|
||||||
#include "../../Software/src/communication/can/comm_can.h"
|
#include "../../Software/src/communication/can/comm_can.h"
|
||||||
|
|
||||||
void transmit_can_frame_to_interface(CAN_frame* tx_frame, int interface) {}
|
void transmit_can_frame_to_interface(const CAN_frame* tx_frame, int interface) {}
|
||||||
|
|
||||||
void register_can_receiver(CanReceiver* receiver, CAN_Interface interface, CAN_Speed speed) {}
|
void register_can_receiver(CanReceiver* receiver, CAN_Interface interface, CAN_Speed speed) {}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue