diff --git a/Autogen/CAN/Doc/GRCAN.CANdo b/Autogen/CAN/Doc/GRCAN.CANdo index 328f7c034..2041234c9 100644 --- a/Autogen/CAN/Doc/GRCAN.CANdo +++ b/Autogen/CAN/Doc/GRCAN.CANdo @@ -108,6 +108,20 @@ routing: can_id_override: 0x2316 - msg: DTI Data 5 can_id_override: 0x2416 + HV DC-DC: + Primary: + ECU: + - msg: DC-DC Status + - msg: Ping + Debugger: + - msg: Ping + LV DC-DC: + Primary: + ECU: + - msg: DC-DC Status + - msg: Ping + Debugger: + - msg: Ping ECU: Primary: DTI Inv: @@ -142,29 +156,27 @@ routing: - msg: ACU Precharge - msg: ACU Config Chg Params - msg: ACU Config Op Params - - msg: Ping GR Inv: - msg: Inv Config - msg: Inv Cmd - - msg: Ping Fan Ctrl 1: - msg: Fan Cmd - - msg: Ping Fan Ctrl 2: - msg: Fan Cmd - - msg: Ping Fan Ctrl 3: - msg: Fan Cmd - - msg: Ping Dash Panel: - msg: Dash Config - - msg: Ping + - msg: RTD Light Ctrl ALL: - msg: ECU Status 1 - msg: ECU Status 2 - msg: ECU Status 3 - TCM: - msg: Ping + LV DC-DC: + - msg: DC-DC Status + HV DC-DC: + - msg: DC-DC Status Data: Debugger: - msg: Debug FD @@ -172,6 +184,7 @@ routing: TCM: - msg: ECU Analog Data - msg: ECU Pinging RTT + - msg: ECU Config ALL: - msg: Ping EM: @@ -245,6 +258,8 @@ routing: ECU: - msg: Ping Data: + ECU: + - msg: ECU Config Debugger: - msg: Ping CCU: @@ -252,7 +267,6 @@ routing: ACU: - msg: ACU Precharge - msg: Debug 2.0 - Charging SDC: DGPS: Data: ECU: @@ -542,11 +556,11 @@ Message ID: bit_start: 32 comment: Controls the AC current limits to each of the inverters - Discrete Mapping, actual values TBD (16 possible values) + Discrete Mapping, actual current values described by the torque map data type: u4 Torque Map: bit_start: 36 - comment: The torque map selected; torque map is the mapping of the throttle to the torque sent to each motor + comment: The torque map selected; torque map is the mapping of the throttle to the torque sent to each motor. 0 is max current amps, 1 is 50 / 100 / 150 / 200 / 250 / 275, 2 and later is tbd data type: u4 Max Cell Temp: bit_start: 40 @@ -3632,144 +3646,6 @@ Message ID: 5: BMS latch 6-7: Reserved data type: u8 - TCM Status: - MSG ID: 0x029 - MSG LENGTH: 8 - status_bits: - bit_start: 0 - comment: - [Byte 0 / Bits 0-7] - 0: Connection Status - 1: MQTT Status - 2: Epic Shelter Status - 3: Camera Status - 4-7: Reserved - mapache_ping: - bit_start: 8 - comment: Mapache ping (upload) - data type: u16 - units: ms - Cache Size: - bit_start: 24 - comment: # of messages on cache (non-synced) - data type: u32 - units: # - Reserved: - bit_start: 56 - TCM Resource Utilization: - MSG ID: 0x02A - MSG LENGTH: 44 - CPU 0 Freq: - bit_start: 0 - comment: core 0 frequency in MHz - data type: u16 - units: '%' - CPU 0 Util: - bit_start: 16 - comment: core 0 utilization in % - data type: u8 - units: '%' - CPU 1 Freq: - bit_start: 24 - comment: core 1 frequency in MHz - data type: u16 - units: '%' - CPU 1 Util: - bit_start: 40 - comment: core 1 utilization in % - data type: u8 - CPU 2 Freq: - bit_start: 48 - comment: core 2 frequency in MHz - data type: u16 - units: '%' - CPU 2 Util: - bit_start: 64 - comment: core 2 utilization in % - data type: u8 - CPU 3 Freq: - bit_start: 72 - comment: core 3 frequency in MHz - data type: u16 - CPU 3 Util: - bit_start: 88 - comment: core 3 utilization in % - data type: u8 - CPU 4 Freq: - bit_start: 96 - comment: core 4 frequency in MHz - data type: u16 - CPU 4 Util: - bit_start: 112 - comment: core 4 utilization in % - data type: u8 - CPU 5 Freq: - bit_start: 120 - comment: core 5 frequency in MHz - data type: u16 - CPU 5 Util: - bit_start: 136 - comment: core 5 utilization in % - data type: u8 - units: Watts - CPU Total Util: - bit_start: 144 - comment: total cpu utilization in % - data type: u8 - RAM Total: - bit_start: 152 - comment: total memory in MB - data type: u16 - RAM Used: - bit_start: 168 - comment: used memory in MB - data type: u16 - RAM Util: - bit_start: 184 - comment: memory utilization in % - data type: u8 - GPU Util: - bit_start: 192 - comment: gpu utilization in % - data type: u8 - GPU Freq: - bit_start: 200 - comment: gpu frequency in MHz - data type: u16 - Disk Total: - bit_start: 216 - comment: total disk space in MB - data type: u32 - Disk Used: - bit_start: 248 - comment: used disk space in MB - data type: u32 - Disk Util: - bit_start: 280 - comment: disk utilization in % - data type: u8 - units: Celsius - CPU Temp: - bit_start: 288 - comment: cpu temp in ˚C - data type: u8 - GPU Temp: - bit_start: 296 - comment: gpu temp in ˚C - data type: u8 - Voltage Draw: - bit_start: 304 - comment: voltage draw in mV - data type: u16 - Current Draw: - bit_start: 320 - comment: current draw in mA - data type: u16 - Power Draw: - bit_start: 336 - comment: power draw in mW - data type: u16 - units: Celsius ECU Analog Data: MSG ID: 0x02E MSG LENGTH: 20 @@ -3845,14 +3721,14 @@ Message ID: scaled min: 0 scaled max: 100 map equation: "x/655.35" - Brake Pedal Travel: + Brake Pedal Pressure: bit_start: 144 - comment: 0-100% percentage + comment: Pressure data type: u16 - units: % + units: PSI scaled min: 0 - scaled max: 100 - map equation: "x/655.35" + scaled max: 5000 + map equation: "x" GPS LAT: MSG ID: 0x031 MSG LENGTH: 8 @@ -4057,199 +3933,200 @@ Message ID: comment: Round trip time data type: u8 units: ms + Tire Temp Frame 0: MSG ID: 0x037 MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 0 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 0 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 0 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 0 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 0 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 0 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 0 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 0 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 0 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 0 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 0 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 0 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 0 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 0 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 0 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 0 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 0 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 0 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 0 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 0 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 0 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 0 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 0 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 0 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 0 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 0 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 0 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 0 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 0 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 0 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 0 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 0 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 1: @@ -4257,194 +4134,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 1 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 1 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 1 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 1 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 1 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 1 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 1 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 1 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 1 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 1 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 1 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 1 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 1 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 1 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 1 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 1 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 1 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 1 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 1 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 1 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 1 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 1 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 1 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 1 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 1 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 1 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 1 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 1 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 1 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 1 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 1 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 1 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 2: @@ -4452,194 +4329,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 2 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 2 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 2 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 2 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 2 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 2 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 2 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 2 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 2 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 2 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 2 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 2 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 2 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 2 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 2 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 2 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 2 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 2 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 2 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 2 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 2 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 2 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 2 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 2 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 2 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 2 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 2 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 2 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 2 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 2 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 2 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 2 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 3: @@ -4647,194 +4524,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 3 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 3 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 3 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 3 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 3 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 3 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 3 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 3 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 3 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 3 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 3 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 3 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 3 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 3 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 3 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 3 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 3 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 3 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 3 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 3 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 3 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 3 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 3 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 3 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 3 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 3 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 3 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 3 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 3 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 3 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 3 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 3 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 4: @@ -4842,194 +4719,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 4 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 4 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 4 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 4 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 4 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 4 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 4 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 4 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 4 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 4 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 4 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 4 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 4 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 4 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 4 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 4 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 4 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 4 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 4 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 4 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 4 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 4 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 4 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 4 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 4 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 4 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 4 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 4 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 4 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 4 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 4 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 4 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 5: @@ -5037,194 +4914,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 5 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 5 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 5 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 5 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 5 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 5 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 5 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 5 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 5 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 5 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 5 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 5 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 5 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 5 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 5 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 5 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 5 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 5 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 5 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 5 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 5 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 5 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 5 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 5 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 5 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 5 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 5 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 5 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 5 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 5 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 5 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 5 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 6: @@ -5232,194 +5109,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 6 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 6 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 6 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 6 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 6 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 6 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 6 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 6 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 6 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 6 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 6 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 6 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 6 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 6 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 6 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 6 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 6 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 6 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 6 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 6 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 6 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 6 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 6 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 6 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 6 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 6 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 6 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 6 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 6 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 6 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 6 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 6 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 7: @@ -5427,194 +5304,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 7 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 7 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 7 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 7 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 7 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 7 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 7 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 7 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 7 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 7 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 7 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 7 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 7 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 7 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 7 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 7 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 7 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 7 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 7 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 7 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 7 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 7 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 7 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 7 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 7 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 7 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 7 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 7 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 7 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 7 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 7 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 7 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 8: @@ -5622,194 +5499,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 8 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 8 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 8 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 8 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 8 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 8 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 8 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 8 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 8 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 8 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 8 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 8 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 8 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 8 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 8 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 8 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 8 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 8 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 8 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 8 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 8 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 8 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 8 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 8 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 8 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 8 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 8 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 8 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 8 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 8 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 8 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 8 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 9: @@ -5817,194 +5694,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 9 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 9 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 9 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 9 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 9 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 9 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 9 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 9 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 9 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 9 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 9 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 9 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 9 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 9 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 9 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 9 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 9 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 9 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 9 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 9 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 9 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 9 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 9 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 9 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 9 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 9 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 9 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 9 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 9 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 9 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 9 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 9 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 10: @@ -6012,194 +5889,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 10 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 10 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 10 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 10 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 10 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 10 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 10 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 10 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 10 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 10 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 10 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 10 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 10 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 10 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 10 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 10 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 10 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 10 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 10 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 10 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 10 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 10 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 10 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 10 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 10 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 10 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 10 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 10 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 10 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 10 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 10 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 10 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 11: @@ -6207,194 +6084,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 11 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 11 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 11 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 11 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 11 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 11 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 11 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 11 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 11 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 11 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 11 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 11 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 11 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 11 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 11 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 11 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 11 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 11 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 11 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 11 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 11 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 11 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 11 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 11 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 11 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 11 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 11 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 11 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 11 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 11 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 11 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 11 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 12: @@ -6402,194 +6279,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 12 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 12 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 12 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 12 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 12 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 12 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 12 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 12 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 12 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 12 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 12 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 12 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 12 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 12 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 12 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 12 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 12 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 12 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 12 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 12 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 12 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 12 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 12 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 12 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 12 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 12 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 12 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 12 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 12 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 12 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 12 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 12 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 13: @@ -6597,194 +6474,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 13 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 13 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 13 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 13 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 13 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 13 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 13 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 13 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 13 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 13 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 13 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 13 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 13 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 13 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 13 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 13 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 13 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 13 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 13 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 13 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 13 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 13 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 13 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 13 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 13 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 13 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 13 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 13 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 13 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 13 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 13 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 13 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 14: @@ -6792,194 +6669,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 14 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 14 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 14 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 14 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 14 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 14 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 14 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 14 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 14 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 14 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 14 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 14 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 14 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 14 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 14 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 14 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 14 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 14 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 14 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 14 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 14 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 14 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 14 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 14 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 14 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 14 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 14 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 14 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 14 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 14 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 14 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 14 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 15: @@ -6987,194 +6864,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 15 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 15 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 15 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 15 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 15 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 15 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 15 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 15 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 15 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 15 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 15 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 15 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 15 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 15 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 15 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 15 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 15 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 15 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 15 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 15 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 15 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 15 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 15 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 15 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 15 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 15 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 15 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 15 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 15 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 15 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 15 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 15 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 16: @@ -7182,194 +7059,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 16 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 16 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 16 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 16 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 16 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 16 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 16 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 16 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 16 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 16 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 16 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 16 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 16 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 16 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 16 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 16 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 16 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 16 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 16 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 16 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 16 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 16 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 16 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 16 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 16 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 16 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 16 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 16 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 16 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 16 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 16 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 16 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 17: @@ -7377,194 +7254,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 17 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 17 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 17 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 17 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 17 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 17 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 17 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 17 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 17 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 17 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 17 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 17 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 17 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 17 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 17 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 17 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 17 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 17 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 17 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 17 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 17 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 17 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 17 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 17 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 17 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 17 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 17 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 17 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 17 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 17 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 17 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 17 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 18: @@ -7572,194 +7449,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 18 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 18 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 18 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 18 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 18 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 18 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 18 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 18 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 18 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 18 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 18 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 18 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 18 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 18 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 18 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 18 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 18 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 18 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 18 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 18 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 18 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 18 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 18 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 18 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 18 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 18 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 18 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 18 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 18 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 18 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 18 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 18 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 19: @@ -7767,194 +7644,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 19 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 19 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 19 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 19 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 19 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 19 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 19 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 19 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 19 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 19 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 19 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 19 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 19 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 19 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 19 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 19 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 19 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 19 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 19 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 19 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 19 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 19 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 19 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 19 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 19 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 19 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 19 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 19 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 19 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 19 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 19 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 19 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 20: @@ -7962,194 +7839,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 20 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 20 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 20 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 20 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 20 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 20 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 20 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 20 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 20 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 20 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 20 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 20 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 20 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 20 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 20 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 20 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 20 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 20 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 20 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 20 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 20 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 20 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 20 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 20 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 20 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 20 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 20 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 20 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 20 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 20 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 20 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 20 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 21: @@ -8157,194 +8034,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 21 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 21 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 21 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 21 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 21 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 21 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 21 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 21 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 21 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 21 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 21 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 21 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 21 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 21 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 21 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 21 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 21 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 21 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 21 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 21 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 21 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 21 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 21 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 21 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 21 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 21 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 21 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 21 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 21 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 21 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 21 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 21 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 22: @@ -8352,194 +8229,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 22 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 22 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 22 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 22 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 22 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 22 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 22 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 22 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 22 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 22 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 22 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 22 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 22 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 22 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 22 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 22 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 22 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 22 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 22 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 22 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 22 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 22 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 22 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 22 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 22 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 22 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 22 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 22 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 22 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 22 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 22 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 22 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Tire Temp Frame 23: @@ -8547,194 +8424,194 @@ Message ID: MSG LENGTH: 64 pixel0: bit_start: 0 - data type: u16 comment: Tire Temp frame 23 pixel 0 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel1: bit_start: 16 - data type: u16 comment: Tire Temp frame 23 pixel 1 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel2: bit_start: 32 - data type: u16 comment: Tire Temp frame 23 pixel 2 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel3: bit_start: 48 - data type: u16 comment: Tire Temp frame 23 pixel 3 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel4: bit_start: 64 - data type: u16 comment: Tire Temp frame 23 pixel 4 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel5: bit_start: 80 - data type: u16 comment: Tire Temp frame 23 pixel 5 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel6: bit_start: 96 - data type: u16 comment: Tire Temp frame 23 pixel 6 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel7: bit_start: 112 - data type: u16 comment: Tire Temp frame 23 pixel 7 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel8: bit_start: 128 - data type: u16 comment: Tire Temp frame 23 pixel 8 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel9: bit_start: 144 - data type: u16 comment: Tire Temp frame 23 pixel 9 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel10: bit_start: 160 - data type: u16 comment: Tire Temp frame 23 pixel 10 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel11: bit_start: 176 - data type: u16 comment: Tire Temp frame 23 pixel 11 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel12: bit_start: 192 - data type: u16 comment: Tire Temp frame 23 pixel 12 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel13: bit_start: 208 - data type: u16 comment: Tire Temp frame 23 pixel 13 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel14: bit_start: 224 - data type: u16 comment: Tire Temp frame 23 pixel 14 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel15: bit_start: 240 - data type: u16 comment: Tire Temp frame 23 pixel 15 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel16: bit_start: 256 - data type: u16 comment: Tire Temp frame 23 pixel 16 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel17: bit_start: 272 - data type: u16 comment: Tire Temp frame 23 pixel 17 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel18: bit_start: 288 - data type: u16 comment: Tire Temp frame 23 pixel 18 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel19: bit_start: 304 - data type: u16 comment: Tire Temp frame 23 pixel 19 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel20: bit_start: 320 - data type: u16 comment: Tire Temp frame 23 pixel 20 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel21: bit_start: 336 - data type: u16 comment: Tire Temp frame 23 pixel 21 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel22: bit_start: 352 - data type: u16 comment: Tire Temp frame 23 pixel 22 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel23: bit_start: 368 - data type: u16 comment: Tire Temp frame 23 pixel 23 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel24: bit_start: 384 - data type: u16 comment: Tire Temp frame 23 pixel 24 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel25: bit_start: 400 - data type: u16 comment: Tire Temp frame 23 pixel 25 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel26: bit_start: 416 - data type: u16 comment: Tire Temp frame 23 pixel 26 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel27: bit_start: 432 - data type: u16 comment: Tire Temp frame 23 pixel 27 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel28: bit_start: 448 - data type: u16 comment: Tire Temp frame 23 pixel 28 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel29: bit_start: 464 - data type: u16 comment: Tire Temp frame 23 pixel 29 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel30: bit_start: 480 - data type: u16 comment: Tire Temp frame 23 pixel 30 + data type: u16 units: C map equation: "x*340*2^-16 - 40" pixel31: bit_start: 496 - data type: u16 comment: Tire Temp frame 23 pixel 31 + data type: u16 units: C map equation: "x*340*2^-16 - 40" Brake Temp: @@ -8742,8 +8619,8 @@ Message ID: MSG LENGTH: 16 temp: bit_start: 0 - data type: u16 comment: Brake rotor Temp + data type: u16 units: C map equation: "x*340*2^-16 - 40" Wheel Speed: @@ -8751,8 +8628,8 @@ Message ID: MSG LENGTH: 16 speed: bit_start: 0 - data type: u16 comment: Wheel speed rpm + data type: u16 units: RPM map equation: "x/8" Suspension IMU Mag Data: @@ -8760,137 +8637,347 @@ Message ID: MSG LENGTH: 24 bmi323_acc_x: bit_start: 0 - data type: u16 comment: BMI323 accelerometer X + data type: u16 bmi323_acc_y: bit_start: 16 - data type: u16 comment: BMI323 accelerometer Y + data type: u16 bmi323_acc_z: bit_start: 32 - data type: u16 comment: BMI323 accelerometer Z + data type: u16 bmi323_gyro_x: bit_start: 48 - data type: u16 comment: BMI323 gyroscope X + data type: u16 bmi323_gyro_y: bit_start: 64 - data type: u16 comment: BMI323 gyroscope Y + data type: u16 bmi323_gyro_z: bit_start: 80 - data type: u16 comment: BMI323 gyroscope Z + data type: u16 bmi323_temp: bit_start: 96 - data type: u16 comment: BMI323 temperature + data type: u16 bmi323_status: bit_start: 112 - data type: u16 comment: BMI323 status + data type: u16 mag_temp: bit_start: 128 - data type: u16 comment: Magnetic encoder temperature + data type: u16 mag_hysteresis: bit_start: 144 - data type: u16 comment: The lineation of groupings for hysteresis + data type: u16 mag_angle: bit_start: 160 - data type: u16 comment: Magnetic encoder angle + data type: u16 mag_turns: bit_start: 176 - data type: i16 comment: Magnetic encoder turns + data type: i16 mag_status: bit_start: 192 + comment: Magnetic encoder status data type: b units: u8 - comment: Magnetic encoder status reserved: bit_start: 200 - data type: u16 comment: Reserved + data type: u16 InboardFloor IMU ToF Data: MSG ID: 0x052 MSG LENGTH: 32 bmi323_acc_x: bit_start: 0 - data type: u16 comment: BMI323 accelerometer X + data type: u16 bmi323_acc_y: bit_start: 16 - data type: u16 comment: BMI323 accelerometer Y + data type: u16 bmi323_acc_z: bit_start: 32 - data type: u16 comment: BMI323 accelerometer Z + data type: u16 bmi323_gyro_x: bit_start: 48 - data type: u16 comment: BMI323 gyroscope X + data type: u16 bmi323_gyro_y: bit_start: 64 - data type: u16 comment: BMI323 gyroscope Y + data type: u16 bmi323_gyro_z: bit_start: 80 - data type: u16 comment: BMI323 gyroscope Z + data type: u16 bmi323_temp: bit_start: 96 - data type: u16 comment: BMI323 temperature + data type: u16 bmi323_status: bit_start: 112 - data type: u16 comment: BMI323 status + data type: u16 range_status: bit_start: 128 - data type: u8 comment: Time-of-flight range status + data type: u8 distance_mm: bit_start: 136 + comment: Time-of-flight distance data type: u16 units: mm - comment: Time-of-flight distance ambient_rate_kcps: bit_start: 152 + comment: Time-of-flight ambient rate data type: u16 units: kcps - comment: Time-of-flight ambient rate ambient_per_spad_kcps: bit_start: 168 + comment: Time-of-flight ambient rate per SPAD data type: u16 units: kcps - comment: Time-of-flight ambient rate per SPAD signal_rate_kcps: bit_start: 184 + comment: Time-of-flight signal rate data type: u16 units: kcps - comment: Time-of-flight signal rate signal_per_spad_kcps: bit_start: 200 + comment: Time-of-flight signal rate per SPAD data type: u16 units: kcps - comment: Time-of-flight signal rate per SPAD number_of_spad: bit_start: 216 - data type: u16 comment: Time-of-flight SPAD count + data type: u16 sigma_mm: bit_start: 232 + comment: Time-of-flight sigma data type: u16 units: mm - comment: Time-of-flight sigma reserved: bit_start: 248 data type: u8 + ECU Config: + MSG ID: 0x02F + MSG LENGTH: 20 + Ping Timeout Delay: + bit_start: 0 + comment: Delay for which to consider pings timed out + data type: u8 + units: ms + scaled min: 0 + scaled max: 2550 + map equation: "10x" + Brake F Min: + bit_start: 8 + comment: Minimum brake f psi for which to consider the brakes pressed + data type: u8 + units: PSI + scaled min: 0 + scaled max: 6375 + map equation: "25x" + Brake R Min: + bit_start: 16 + comment: Minimum brake r psi for which to consider the brakes pressed + data type: u8 + units: PSI + scaled min: 0 + scaled max: 6375 + map equation: "25x" + Brake BSE Min: + bit_start: 24 + comment: Minimum brake bse psi for which to consider the brakes pressed + data type: u8 + units: PSI + scaled min: 0 + scaled max: 6375 + map equation: "25x" + APPS 1 Min: + bit_start: 32 + comment: Minimum value that the APPS 1 sensor is expected to read + data type: u8 + units: ADC + scaled min: 0 + scaled max: 2550 + map equation: "10x" + APPS 2 Min: + bit_start: 40 + comment: Minimum value that the APPS 2 sensor is expected to read + data type: u8 + units: ADC + scaled min: 0 + scaled max: 2550 + map equation: "10x" + APPS 1 Max: + bit_start: 48 + comment: Maximum value that the APPS 1 sensor is expected to read + data type: u8 + units: ADC + scaled min: 0 + scaled max: 2550 + map equation: "10x" + APPS 2 Max: + bit_start: 56 + comment: Maximum value that the APPS 2 sensor is expected to read + data type: u8 + units: ADC + scaled min: 0 + scaled max: 2550 + map equation: "10x" + APPS Deadzone: + bit_start: 64 + comment: Percentage deadzone of the APPS for which to not consider the pedals to have traveled + data type: u8 + units: % + scaled min: 0 + scaled max: 100 + map equation: "x/25.5" + BMS Min Threshold: + bit_start: 72 + comment: Minimum acceptable BMS sense value such that the BMS is not considered in failure + data type: u8 + units: V + scaled min: 0 + scaled max: 12.75 + map equation: "x/20" + BMS Max Threshold: + bit_start: 80 + comment: Maximum acceptable BMS sense value such that the BMS is not considered in failure + data type: u8 + units: V + scaled min: 0 + scaled max: 12.75 + map equation: "x/20" + IMD Min Threshold: + bit_start: 88 + comment: Minimum acceptable IMD sense value such that the BMS is not considered in failure + data type: u8 + units: V + scaled min: 0 + scaled max: 12.75 + map equation: "x/20" + IMD Max Threshold: + bit_start: 96 + comment: Maximum acceptable IMD sense value such that the BMS is not considered in failure + data type: u8 + units: V + scaled min: 0 + scaled max: 12.75 + map equation: "x/20" + BSPD Min Threshold: + bit_start: 104 + comment: Minimum acceptable BSPD sense value such that the BMS is not considered in failure + data type: u8 + units: V + scaled min: 0 + scaled max: 12.75 + map equation: "x/20" + BSPD Max Threshold: + bit_start: 112 + comment: Maximum acceptable BSPD sense value such that the BMS is not considered in failure + data type: u8 + units: V + scaled min: 0 + scaled max: 12.75 + map equation: "x/20" + Max Precharge Time: + bit_start: 120 + comment: Maximum acceptable time to remain precharging before discharging + data type: u8 + units: ms + scaled min: 0 + scaled max: 2550 + map equation: "10x" + Regen Strength: + bit_start: 128 + comment: TBD + data type: u8 + units: Ratio + scaled min: 0 + scaled max: 25.5 + map equation: "x/10" + Enable Regen: + bit_start: 136 + comment: Enable or disable regenerative braking + data type: b + units: Bool + Reserved: + bit_start: 144 + comment: Reserved + data type: u16 + DC-DC Status: + MSG ID: 0x012 + MSG LENGTH: 7 + Input Voltage: + bit_start: 0 + comment: ~20v for LV (LV only. Send 0 for HV) + data type: u16 + units: V + scaled min: 0 + scaled max: 65.535 + map equation: "x/1000" + Output Voltage: + bit_start: 16 + comment: ~12v for LV and ~20v for HV + data type: u16 + units: V + scaled min: 0 + scaled max: 65.535 + map equation: "x/1000" + Input Current: + bit_start: 32 + comment: Input current (LV only. Send 0 for HV) + data type: u8 + units: A + scaled min: 0 + scaled max: 25.5 + map equation: "x/10" + Output Current: + bit_start: 40 + comment: Output current + data type: u8 + units: A + scaled min: 0 + scaled max: 25.5 + map equation: "x/10" + DC-DC Temp: + bit_start: 48 + comment: Temp of DC-DC converter + data type: u8 + units: C + scaled min: 0 + scaled max: 255 + map equation: "x" + RTD Light Ctrl: + MSG ID: 0x53 + MSG LENGTH: 3 + Red: + bit_start: 0 + comment: Intensity of the red channel on the RTD button dash light ONLY when in GLV On, ignored otherwise + data type: u8 + units: Intensity + Green: + bit_start: 0 + comment: Intensity of the green channel on the RTD button dash light ONLY when in GLV On, ignored otherwise + data type: u8 + units: Intensity + Blue: + bit_start: 0 + comment: Intensity of the blue channel on the RTD button dash light ONLY when in GLV On, ignored otherwise + data type: u8 + units: Intensity + Custom CAN ID: DTI Control 1: CAN ID: 0x116 @@ -9391,6 +9478,7 @@ Custom CAN ID: comment: Frick if I know GR ID: + ALL: "0x00" DTI Inv: "0x00" EM: "0x00" @@ -9424,3 +9512,5 @@ GR ID: BrakeTemp RL: "0x1E" BrakeTemp RR: "0x1F" DGPS: "0x20" + LV DC-DC: "0x29" + HV DC-DC: "0x2A" diff --git a/Autogen/CAN/Doc/GRCAN_Data.dbc b/Autogen/CAN/Doc/GRCAN_Data.dbc index d99029f8a..99d7c5a38 100644 --- a/Autogen/CAN/Doc/GRCAN_Data.dbc +++ b/Autogen/CAN/Doc/GRCAN_Data.dbc @@ -407,7 +407,7 @@ BO_ 2149592580 ECU_ECU_Analog_Data_to_TCM: 20 ECU SG_ Steering_Angle_Signal : 96|16@1+ (0.0015259022,0) [0|100] "%" TCM SG_ AUX_Signal : 112|16@1+ (0.0015259022,0) [0|100] "%" TCM SG_ Acc_Pedal_Travel : 128|16@1+ (0.0015259022,0) [0|100] "%" TCM - SG_ Brake_Pedal_Travel : 144|16@1+ (0.0015259022,0) [0|100] "%" TCM + SG_ Brake_Pedal_Pressure : 144|16@1+ (1,0) [0|5000] "PSI" TCM BO_ 2149592324 ECU_ECU_Pinging_RTT_to_TCM: 24 ECU SG_ ACU_RTT : 0|8@1+ (1,0) [0|0] "ms" TCM @@ -435,9 +435,49 @@ BO_ 2149592324 ECU_ECU_Pinging_RTT_to_TCM: 24 ECU SG_ Brake_Temp_RR_RTT : 176|8@1+ (1,0) [0|0] "ms" TCM SG_ DGPS_RTT : 184|8@1+ (1,0) [0|0] "ms" TCM +BO_ 2149592836 ECU_ECU_Config_to_TCM: 20 ECU + SG_ Ping_Timeout_Delay : 0|8@1+ (10,0) [0|2550] "ms" TCM + SG_ Brake_F_Min : 8|8@1+ (25,0) [0|6375] "PSI" TCM + SG_ Brake_R_Min : 16|8@1+ (25,0) [0|6375] "PSI" TCM + SG_ Brake_BSE_Min : 24|8@1+ (25,0) [0|6375] "PSI" TCM + SG_ APPS_1_Min : 32|8@1+ (10,0) [0|2550] "ADC" TCM + SG_ APPS_2_Min : 40|8@1+ (10,0) [0|2550] "ADC" TCM + SG_ APPS_1_Max : 48|8@1+ (10,0) [0|2550] "ADC" TCM + SG_ APPS_2_Max : 56|8@1+ (10,0) [0|2550] "ADC" TCM + SG_ APPS_Deadzone : 64|8@1+ (0.0392156863,0) [0|100] "%" TCM + SG_ BMS_Min_Threshold : 72|8@1+ (0.05,0) [0|12.75] "V" TCM + SG_ BMS_Max_Threshold : 80|8@1+ (0.05,0) [0|12.75] "V" TCM + SG_ IMD_Min_Threshold : 88|8@1+ (0.05,0) [0|12.75] "V" TCM + SG_ IMD_Max_Threshold : 96|8@1+ (0.05,0) [0|12.75] "V" TCM + SG_ BSPD_Min_Threshold : 104|8@1+ (0.05,0) [0|12.75] "V" TCM + SG_ BSPD_Max_Threshold : 112|8@1+ (0.05,0) [0|12.75] "V" TCM + SG_ Max_Precharge_Time : 120|8@1+ (10,0) [0|2550] "ms" TCM + SG_ Regen_Strength : 128|8@1+ (0.1,0) [0|25.5] "Ratio" TCM + SG_ Enable_Regen : 136|1@1+ (1,0) [0|0] "Bool" TCM + BO_ 2149581312 ECU_Ping_to_ALL: 4 ECU SG_ Timestamp : 0|32@1+ (1,0) [0|4294967296] "ms" ALL +BO_ 2151689986 TCM_ECU_Config_to_ECU: 20 TCM + SG_ Ping_Timeout_Delay : 0|8@1+ (10,0) [0|2550] "ms" ECU + SG_ Brake_F_Min : 8|8@1+ (25,0) [0|6375] "PSI" ECU + SG_ Brake_R_Min : 16|8@1+ (25,0) [0|6375] "PSI" ECU + SG_ Brake_BSE_Min : 24|8@1+ (25,0) [0|6375] "PSI" ECU + SG_ APPS_1_Min : 32|8@1+ (10,0) [0|2550] "ADC" ECU + SG_ APPS_2_Min : 40|8@1+ (10,0) [0|2550] "ADC" ECU + SG_ APPS_1_Max : 48|8@1+ (10,0) [0|2550] "ADC" ECU + SG_ APPS_2_Max : 56|8@1+ (10,0) [0|2550] "ADC" ECU + SG_ APPS_Deadzone : 64|8@1+ (0.0392156863,0) [0|100] "%" ECU + SG_ BMS_Min_Threshold : 72|8@1+ (0.05,0) [0|12.75] "V" ECU + SG_ BMS_Max_Threshold : 80|8@1+ (0.05,0) [0|12.75] "V" ECU + SG_ IMD_Min_Threshold : 88|8@1+ (0.05,0) [0|12.75] "V" ECU + SG_ IMD_Max_Threshold : 96|8@1+ (0.05,0) [0|12.75] "V" ECU + SG_ BSPD_Min_Threshold : 104|8@1+ (0.05,0) [0|12.75] "V" ECU + SG_ BSPD_Max_Threshold : 112|8@1+ (0.05,0) [0|12.75] "V" ECU + SG_ Max_Precharge_Time : 120|8@1+ (10,0) [0|2550] "ms" ECU + SG_ Regen_Strength : 128|8@1+ (0.1,0) [0|25.5] "Ratio" ECU + SG_ Enable_Regen : 136|1@1+ (1,0) [0|0] "Bool" ECU + BO_ 2151678465 TCM_Ping_to_Debugger: 4 TCM SG_ Timestamp : 0|32@1+ (1,0) [0|4294967296] "ms" Debugger @@ -4281,7 +4321,7 @@ CM_ SG_ 2149592580 Brakeline_R_Signal "4-20 mA signal"; CM_ SG_ 2149592580 Steering_Angle_Signal "4-20 mA signal"; CM_ SG_ 2149592580 AUX_Signal "4-20 mA signal"; CM_ SG_ 2149592580 Acc_Pedal_Travel "0-100% percentage"; -CM_ SG_ 2149592580 Brake_Pedal_Travel "0-100% percentage"; +CM_ SG_ 2149592580 Brake_Pedal_Pressure "Pressure"; CM_ SG_ 2149592324 ACU_RTT "Round trip time"; CM_ SG_ 2149592324 GR_Inv_RTT "Round trip time"; CM_ SG_ 2149592324 Fan_Ctrl_1_RTT "Round trip time"; @@ -4306,7 +4346,43 @@ CM_ SG_ 2149592324 Brake_Temp_FR_RTT "Round trip time"; CM_ SG_ 2149592324 Brake_Temp_RL_RTT "Round trip time"; CM_ SG_ 2149592324 Brake_Temp_RR_RTT "Round trip time"; CM_ SG_ 2149592324 DGPS_RTT "Round trip time"; +CM_ SG_ 2149592836 Ping_Timeout_Delay "Delay for which to consider pings timed out"; +CM_ SG_ 2149592836 Brake_F_Min "Minimum brake f psi for which to consider the brakes pressed"; +CM_ SG_ 2149592836 Brake_R_Min "Minimum brake r psi for which to consider the brakes pressed"; +CM_ SG_ 2149592836 Brake_BSE_Min "Minimum brake bse psi for which to consider the brakes pressed"; +CM_ SG_ 2149592836 APPS_1_Min "Minimum value that the APPS 1 sensor is expected to read"; +CM_ SG_ 2149592836 APPS_2_Min "Minimum value that the APPS 2 sensor is expected to read"; +CM_ SG_ 2149592836 APPS_1_Max "Maximum value that the APPS 1 sensor is expected to read"; +CM_ SG_ 2149592836 APPS_2_Max "Maximum value that the APPS 2 sensor is expected to read"; +CM_ SG_ 2149592836 APPS_Deadzone "Percentage deadzone of the APPS for which to not consider the pedals to have traveled"; +CM_ SG_ 2149592836 BMS_Min_Threshold "Minimum acceptable BMS sense value such that the BMS is not considered in failure"; +CM_ SG_ 2149592836 BMS_Max_Threshold "Maximum acceptable BMS sense value such that the BMS is not considered in failure"; +CM_ SG_ 2149592836 IMD_Min_Threshold "Minimum acceptable IMD sense value such that the BMS is not considered in failure"; +CM_ SG_ 2149592836 IMD_Max_Threshold "Maximum acceptable IMD sense value such that the BMS is not considered in failure"; +CM_ SG_ 2149592836 BSPD_Min_Threshold "Minimum acceptable BSPD sense value such that the BMS is not considered in failure"; +CM_ SG_ 2149592836 BSPD_Max_Threshold "Maximum acceptable BSPD sense value such that the BMS is not considered in failure"; +CM_ SG_ 2149592836 Max_Precharge_Time "Maximum acceptable time to remain precharging before discharging"; +CM_ SG_ 2149592836 Regen_Strength "TBD"; +CM_ SG_ 2149592836 Enable_Regen "Enable or disable regenerative braking"; CM_ SG_ 2149581312 Timestamp "Time in millis"; +CM_ SG_ 2151689986 Ping_Timeout_Delay "Delay for which to consider pings timed out"; +CM_ SG_ 2151689986 Brake_F_Min "Minimum brake f psi for which to consider the brakes pressed"; +CM_ SG_ 2151689986 Brake_R_Min "Minimum brake r psi for which to consider the brakes pressed"; +CM_ SG_ 2151689986 Brake_BSE_Min "Minimum brake bse psi for which to consider the brakes pressed"; +CM_ SG_ 2151689986 APPS_1_Min "Minimum value that the APPS 1 sensor is expected to read"; +CM_ SG_ 2151689986 APPS_2_Min "Minimum value that the APPS 2 sensor is expected to read"; +CM_ SG_ 2151689986 APPS_1_Max "Maximum value that the APPS 1 sensor is expected to read"; +CM_ SG_ 2151689986 APPS_2_Max "Maximum value that the APPS 2 sensor is expected to read"; +CM_ SG_ 2151689986 APPS_Deadzone "Percentage deadzone of the APPS for which to not consider the pedals to have traveled"; +CM_ SG_ 2151689986 BMS_Min_Threshold "Minimum acceptable BMS sense value such that the BMS is not considered in failure"; +CM_ SG_ 2151689986 BMS_Max_Threshold "Maximum acceptable BMS sense value such that the BMS is not considered in failure"; +CM_ SG_ 2151689986 IMD_Min_Threshold "Minimum acceptable IMD sense value such that the BMS is not considered in failure"; +CM_ SG_ 2151689986 IMD_Max_Threshold "Maximum acceptable IMD sense value such that the BMS is not considered in failure"; +CM_ SG_ 2151689986 BSPD_Min_Threshold "Minimum acceptable BSPD sense value such that the BMS is not considered in failure"; +CM_ SG_ 2151689986 BSPD_Max_Threshold "Maximum acceptable BSPD sense value such that the BMS is not considered in failure"; +CM_ SG_ 2151689986 Max_Precharge_Time "Maximum acceptable time to remain precharging before discharging"; +CM_ SG_ 2151689986 Regen_Strength "TBD"; +CM_ SG_ 2151689986 Enable_Regen "Enable or disable regenerative braking"; CM_ SG_ 2151678465 Timestamp "Time in millis"; CM_ SG_ 2181038594 Timestamp "Time in millis"; CM_ SG_ 2181051140 ALT "altitude"; @@ -7551,7 +7627,9 @@ BA_ "VFrameFormat" BO_ 2149581057 15; BA_ "VFrameFormat" BO_ 2149581313 15; BA_ "VFrameFormat" BO_ 2149592580 15; BA_ "VFrameFormat" BO_ 2149592324 15; +BA_ "VFrameFormat" BO_ 2149592836 15; BA_ "VFrameFormat" BO_ 2149581312 15; +BA_ "VFrameFormat" BO_ 2151689986 15; BA_ "VFrameFormat" BO_ 2151678465 15; BA_ "VFrameFormat" BO_ 2181038594 15; BA_ "VFrameFormat" BO_ 2181051140 15; diff --git a/Autogen/CAN/Doc/GRCAN_Primary.dbc b/Autogen/CAN/Doc/GRCAN_Primary.dbc index 2910683cc..5979cc4f0 100644 --- a/Autogen/CAN/Doc/GRCAN_Primary.dbc +++ b/Autogen/CAN/Doc/GRCAN_Primary.dbc @@ -32,7 +32,7 @@ NS_ : BS_: -BU_: ACU DTI_Inv Dash_Panel Debugger ECU Fan_Ctrl_1 Fan_Ctrl_2 Fan_Ctrl_3 GR_Inv TCM ALL +BU_: ACU DTI_Inv Dash_Panel Debugger ECU Fan_Ctrl_1 Fan_Ctrl_2 Fan_Ctrl_3 GR_Inv HV_DC_DC LV_DC_DC TCM ALL BO_ 2150629377 ACU_Debug_2_0_to_Debugger: 8 ACU SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger @@ -169,6 +169,32 @@ BO_ 2147492886 DTI_Inv_DTI_Data_5_to_ECU: 8 DTI_Inv SG_ Power_limit : 42|1@1+ (1,0) [0|0] "" ECU SG_ CAN_Version : 56|8@1+ (1,0) [0|0] "" ECU +BO_ 2191528450 HV_DC_DC_Status_to_ECU: 7 HV_DC_DC + SG_ Input_Voltage : 0|16@1+ (0.001,0) [0|65.535] "V" ECU + SG_ Output_Voltage : 16|16@1+ (0.001,0) [0|65.535] "V" ECU + SG_ Input_Current : 32|8@1+ (0.1,0) [0|25.5] "A" ECU + SG_ Output_Current : 40|8@1+ (0.1,0) [0|25.5] "A" ECU + SG_ DC_DC_Temp : 48|8@1+ (1,0) [0|255] "C" ECU + +BO_ 2191524354 HV_DC_DC_Ping_to_ECU: 4 HV_DC_DC + SG_ Timestamp : 0|32@1+ (1,0) [0|4294967296] "ms" ECU + +BO_ 2191524353 HV_DC_DC_Ping_to_Debugger: 4 HV_DC_DC + SG_ Timestamp : 0|32@1+ (1,0) [0|4294967296] "ms" Debugger + +BO_ 2190479874 LV_DC_DC_Status_to_ECU: 7 LV_DC_DC + SG_ Input_Voltage : 0|16@1+ (0.001,0) [0|65.535] "V" ECU + SG_ Output_Voltage : 16|16@1+ (0.001,0) [0|65.535] "V" ECU + SG_ Input_Current : 32|8@1+ (0.1,0) [0|25.5] "A" ECU + SG_ Output_Current : 40|8@1+ (0.1,0) [0|25.5] "A" ECU + SG_ DC_DC_Temp : 48|8@1+ (1,0) [0|255] "C" ECU + +BO_ 2190475778 LV_DC_DC_Ping_to_ECU: 4 LV_DC_DC + SG_ Timestamp : 0|32@1+ (1,0) [0|4294967296] "ms" ECU + +BO_ 2190475777 LV_DC_DC_Ping_to_Debugger: 4 LV_DC_DC + SG_ Timestamp : 0|32@1+ (1,0) [0|4294967296] "ms" Debugger + BO_ 278 ECU_DTI_Control_1_to_DTI_Inv: 2 ECU SG_ Target_AC_Current : 0|16@1+ (1,0) [0|0] "" DTI_Inv @@ -225,9 +251,6 @@ BO_ 2149583875 ECU_ACU_Config_Op_Params_to_ACU: 2 ECU SG_ Minimium_Cell_Voltage : 0|8@1+ (0.01,2) [2|4.55] "Volts" ACU SG_ Max_Cell_Temp : 8|8@1+ (0.25,0) [0|63.75] "Celsius" ACU -BO_ 2149581315 ECU_Ping_to_ACU: 4 ECU - SG_ Timestamp : 0|32@1+ (1,0) [0|4294967296] "ms" ACU - BO_ 2149586440 ECU_Inv_Config_to_GR_Inv: 7 ECU SG_ Max_AC_Current : 0|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" GR_Inv SG_ Max_DC_Current : 16|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" GR_Inv @@ -241,32 +264,22 @@ BO_ 2149586696 ECU_Inv_Cmd_to_GR_Inv: 8 ECU SG_ Field_weakening : 48|8@1+ (0.1,0) [0|25.5] "Amps" GR_Inv SG_ Drive_enable : 56|1@1+ (1,0) [0|0] "Enable" GR_Inv -BO_ 2149581320 ECU_Ping_to_GR_Inv: 4 ECU - SG_ Timestamp : 0|32@1+ (1,0) [0|4294967296] "ms" GR_Inv - BO_ 2149587213 ECU_Fan_Cmd_to_Fan_Ctrl_1: 1 ECU SG_ Fan_Cmd : 0|8@1+ (1,0) [0|255] "%" Fan_Ctrl_1 -BO_ 2149581325 ECU_Ping_to_Fan_Ctrl_1: 4 ECU - SG_ Timestamp : 0|32@1+ (1,0) [0|4294967296] "ms" Fan_Ctrl_1 - BO_ 2149587214 ECU_Fan_Cmd_to_Fan_Ctrl_2: 1 ECU SG_ Fan_Cmd : 0|8@1+ (1,0) [0|255] "%" Fan_Ctrl_2 -BO_ 2149581326 ECU_Ping_to_Fan_Ctrl_2: 4 ECU - SG_ Timestamp : 0|32@1+ (1,0) [0|4294967296] "ms" Fan_Ctrl_2 - BO_ 2149587215 ECU_Fan_Cmd_to_Fan_Ctrl_3: 1 ECU SG_ Fan_Cmd : 0|8@1+ (1,0) [0|255] "%" Fan_Ctrl_3 -BO_ 2149581327 ECU_Ping_to_Fan_Ctrl_3: 4 ECU - SG_ Timestamp : 0|32@1+ (1,0) [0|4294967296] "ms" Fan_Ctrl_3 - BO_ 2149587717 ECU_Dash_Config_to_Dash_Panel: 1 ECU SG_ led_latch_flags : 0|8@1+ (1,0) [0|0] "" Dash_Panel -BO_ 2149581317 ECU_Ping_to_Dash_Panel: 4 ECU - SG_ Timestamp : 0|32@1+ (1,0) [0|4294967296] "ms" Dash_Panel +BO_ 2149602053 ECU_RTD_Light_Ctrl_to_Dash_Panel: 3 ECU + SG_ Blue : 0|8@1+ (1,0) [0|0] "Intensity" Dash_Panel + SG_ Green : 0|8@1+ (1,0) [0|0] "Intensity" Dash_Panel + SG_ Red : 0|8@1+ (1,0) [0|0] "Intensity" Dash_Panel BO_ 2149581568 ECU_ECU_Status_1_to_ALL: 8 ECU SG_ ECU_State : 0|1@1+ (1,0) [0|0] "Bool" ALL @@ -290,8 +303,22 @@ BO_ 2149582080 ECU_ECU_Status_3_to_ALL: 5 ECU SG_ RR_Wheel_RPM : 16|16@1+ (0.1,-3276.8) [-3276.8|3276.7] "RPM" ALL SG_ Relay_States : 32|1@1+ (1,0) [0|0] "" ALL -BO_ 2149581316 ECU_Ping_to_TCM: 4 ECU - SG_ Timestamp : 0|32@1+ (1,0) [0|4294967296] "ms" TCM +BO_ 2149581312 ECU_Ping_to_ALL: 4 ECU + SG_ Timestamp : 0|32@1+ (1,0) [0|4294967296] "ms" ALL + +BO_ 2149585449 ECU_DC_DC_Status_to_LV_DC_DC: 7 ECU + SG_ Input_Voltage : 0|16@1+ (0.001,0) [0|65.535] "V" LV_DC_DC + SG_ Output_Voltage : 16|16@1+ (0.001,0) [0|65.535] "V" LV_DC_DC + SG_ Input_Current : 32|8@1+ (0.1,0) [0|25.5] "A" LV_DC_DC + SG_ Output_Current : 40|8@1+ (0.1,0) [0|25.5] "A" LV_DC_DC + SG_ DC_DC_Temp : 48|8@1+ (1,0) [0|255] "C" LV_DC_DC + +BO_ 2149585450 ECU_DC_DC_Status_to_HV_DC_DC: 7 ECU + SG_ Input_Voltage : 0|16@1+ (0.001,0) [0|65.535] "V" HV_DC_DC + SG_ Output_Voltage : 16|16@1+ (0.001,0) [0|65.535] "V" HV_DC_DC + SG_ Input_Current : 32|8@1+ (0.1,0) [0|25.5] "A" HV_DC_DC + SG_ Output_Current : 40|8@1+ (0.1,0) [0|25.5] "A" HV_DC_DC + SG_ DC_DC_Temp : 48|8@1+ (1,0) [0|255] "C" HV_DC_DC BO_ 2161115137 Fan_Ctrl_1_Debug_2_0_to_Debugger: 8 Fan_Ctrl_1 SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger @@ -431,6 +458,20 @@ CM_ SG_ 2147492886 RPM_min_limit "1: RPM min limit active 0: RPM min limit inact CM_ SG_ 2147492886 RPM_max_limit "1: RPM max limit active 0: RPM max limit inactive"; CM_ SG_ 2147492886 Power_limit "1: Power limit by Config active 0: Power limit by Config inactive"; CM_ SG_ 2147492886 CAN_Version "Indicates the CAN map version. For ex: 23 -> 2,3 (V2,3)"; +CM_ SG_ 2191528450 Input_Voltage "~20v for LV (LV only. Send 0 for HV)"; +CM_ SG_ 2191528450 Output_Voltage "~12v for LV and ~20v for HV"; +CM_ SG_ 2191528450 Input_Current "Input current (LV only. Send 0 for HV)"; +CM_ SG_ 2191528450 Output_Current "Output current"; +CM_ SG_ 2191528450 DC_DC_Temp "Temp of DC-DC converter"; +CM_ SG_ 2191524354 Timestamp "Time in millis"; +CM_ SG_ 2191524353 Timestamp "Time in millis"; +CM_ SG_ 2190479874 Input_Voltage "~20v for LV (LV only. Send 0 for HV)"; +CM_ SG_ 2190479874 Output_Voltage "~12v for LV and ~20v for HV"; +CM_ SG_ 2190479874 Input_Current "Input current (LV only. Send 0 for HV)"; +CM_ SG_ 2190479874 Output_Current "Output current"; +CM_ SG_ 2190479874 DC_DC_Temp "Temp of DC-DC converter"; +CM_ SG_ 2190475778 Timestamp "Time in millis"; +CM_ SG_ 2190475777 Timestamp "Time in millis"; CM_ SG_ 278 Target_AC_Current "This Cmd sets the target motor AC current (peak, not RMS). When the Ctrl receives this message, it automatically switches to current control mode. This value must not be above the limits of the Inv and must be multiplied by 10 before sending. This is a signed parameter, and the sign represents the direction of the torque which correlates with the motor AC current. (For the correlation, please refer to the motor Params)"; CM_ SG_ 534 Target_Brake_Current "Targets the brake current of the motor. It will result negative torque relatively to the forward direction of the motor. This value must be multiplied by 10 before sending, only positive currents are accepted."; CM_ SG_ 790 Target_ERPM "This Cmd enables the speed control of the motor with a target ERPM. This is a signed parameter, and the sign represents the direction of the spinning. For better operation you need to tune the PID of speed control. Equation: ERPM = Motor RPM * number of the motor pole pairs"; @@ -453,7 +494,6 @@ CM_ SG_ 2149583619 Chg_Voltage "Sets the Target Charging voltage"; CM_ SG_ 2149583619 Chg_Current "Sets the Target Charging Current"; CM_ SG_ 2149583875 Minimium_Cell_Voltage "Sets the threshold for Minimum Cell Voltage before Shutdown"; CM_ SG_ 2149583875 Max_Cell_Temp "Sets the threshold for Max Cell Temp before Shutdown"; -CM_ SG_ 2149581315 Timestamp "Time in millis"; CM_ SG_ 2149586440 Max_AC_Current "Max AC Current"; CM_ SG_ 2149586440 Max_DC_Current "Max DC Current"; CM_ SG_ 2149586440 Absolute_Max_RPM_Limit "0: No limit n :limited at n RPM"; @@ -463,21 +503,19 @@ CM_ SG_ 2149586696 Set_DC_Current "Commanded DC Current"; CM_ SG_ 2149586696 RPM_Limit "0: No limit n :limited at n RPM"; CM_ SG_ 2149586696 Field_weakening "Field weakening strength"; CM_ SG_ 2149586696 Drive_enable "Write this to 1 every 100ms to enable Inv"; -CM_ SG_ 2149581320 Timestamp "Time in millis"; CM_ SG_ 2149587213 Fan_Cmd "0-100 Percent"; -CM_ SG_ 2149581325 Timestamp "Time in millis"; CM_ SG_ 2149587214 Fan_Cmd "0-100 Percent"; -CM_ SG_ 2149581326 Timestamp "Time in millis"; CM_ SG_ 2149587215 Fan_Cmd "0-100 Percent"; -CM_ SG_ 2149581327 Timestamp "Time in millis"; CM_ SG_ 2149587717 led_latch_flags "[Byte 0 / Bits 0-7] 0: BSPD led 1: IMD led 2: BMS led 3: BSPD latch 4: IMD latch 5: BMS latch 6-7: Reserved"; -CM_ SG_ 2149581317 Timestamp "Time in millis"; +CM_ SG_ 2149602053 Blue "Intensity of the blue channel on the RTD button dash light ONLY when in GLV On, ignored otherwise"; +CM_ SG_ 2149602053 Green "Intensity of the green channel on the RTD button dash light ONLY when in GLV On, ignored otherwise"; +CM_ SG_ 2149602053 Red "Intensity of the red channel on the RTD button dash light ONLY when in GLV On, ignored otherwise"; CM_ SG_ 2149581568 ECU_State "[Byte 0 / Bits 0-7] ECU state machine data 0: GLV Off State 1: GLV On State 2: Precharge Engaged State 3: Precharge Complete State 4: Drive Active State 5: TS Discharge State 6-7: Reserved See diagram in StateMachine.h"; CM_ SG_ 2149581568 Ping_Group_1 "[Byte 1 / Bits 8-15] ECU ping targets 8: ACU (1: OK, 0: Timeout) 9: GR Inv (1: OK, 0: Timeout) 10: Fan Ctrl 1 (1: OK, 0: Timeout) 11: Fan Ctrl 2 (1: OK, 0: Timeout) 12: Fan Ctrl 3 (1: OK, 0: Timeout) 13: Dash Panel (1: OK, 0: Timeout) 14: TCM (1: OK, 0: Timeout) 15: DGPS (1: OK, 0: Timeout)"; CM_ SG_ 2149581568 Ping_Group_2 "[Byte 2 / Bits 16-23] ECU ping targets 16: Suspension FL (1: OK, 0: Timeout) 17: Suspension FR (1: OK, 0: Timeout) 18: Suspension RL (1: OK, 0: Timeout) 19: Suspension RR (1: OK, 0: Timeout) 20: InboardFloor FL (1: OK, 0: Timeout) 21: InboardFloor FR (1: OK, 0: Timeout) 22: InboardFloor RL (1: OK, 0: Timeout) 23: InboardFloor RR (1: OK, 0: Timeout)"; CM_ SG_ 2149581568 Ping_Group_3 "[Byte 3 / Bits 24-31] ECU ping targets 24: TireTemp FL (1: OK, 0: Timeout) 25: TireTemp FR (1: OK, 0: Timeout) 26: TireTemp RL (1: OK, 0: Timeout) 27: TireTemp RR (1: OK, 0: Timeout) 28: BrakeTemp FL (1: OK, 0: Timeout) 29: BrakeTemp FR (1: OK, 0: Timeout) 30: BrakeTemp RL (1: OK, 0: Timeout) 31: BrakeTemp RR (1: OK, 0: Timeout)"; -CM_ SG_ 2149581568 Power_Level "Controls the AC current limits to each of the inverters Discrete Mapping, actual values TBD (16 possible values)"; -CM_ SG_ 2149581568 Torque_Map "The torque map selected; torque map is the mapping of the throttle to the torque sent to each motor"; +CM_ SG_ 2149581568 Power_Level "Controls the AC current limits to each of the inverters Discrete Mapping, actual current values described by the torque map"; +CM_ SG_ 2149581568 Torque_Map "The torque map selected; torque map is the mapping of the throttle to the torque sent to each motor. 0 is max current amps, 1 is 50 / 100 / 150 / 200 / 250 / 275, 2 and later is tbd"; CM_ SG_ 2149581568 Max_Cell_Temp "the Temp of the hottest cell of the accumulator"; CM_ SG_ 2149581568 Accumulator_State_of_Chg "% charged of the Accumulator"; CM_ SG_ 2149581568 GLV_State_of_Chg "% charged of the Low Voltage Bat"; @@ -488,7 +526,17 @@ CM_ SG_ 2149581824 FR_Wheel_RPM "FR Wheel RPM"; CM_ SG_ 2149582080 RL_Wheel_RPM "RL Wheel RPM"; CM_ SG_ 2149582080 RR_Wheel_RPM "RR Wheel RPM"; CM_ SG_ 2149582080 Relay_States "[Byte 4 / Bits 32-39] 0: BMS OK 1: IMD OK 2: BSPD OK 3: Software OK 4-7: Reserved"; -CM_ SG_ 2149581316 Timestamp "Time in millis"; +CM_ SG_ 2149581312 Timestamp "Time in millis"; +CM_ SG_ 2149585449 Input_Voltage "~20v for LV (LV only. Send 0 for HV)"; +CM_ SG_ 2149585449 Output_Voltage "~12v for LV and ~20v for HV"; +CM_ SG_ 2149585449 Input_Current "Input current (LV only. Send 0 for HV)"; +CM_ SG_ 2149585449 Output_Current "Output current"; +CM_ SG_ 2149585449 DC_DC_Temp "Temp of DC-DC converter"; +CM_ SG_ 2149585450 Input_Voltage "~20v for LV (LV only. Send 0 for HV)"; +CM_ SG_ 2149585450 Output_Voltage "~12v for LV and ~20v for HV"; +CM_ SG_ 2149585450 Input_Current "Input current (LV only. Send 0 for HV)"; +CM_ SG_ 2149585450 Output_Current "Output current"; +CM_ SG_ 2149585450 DC_DC_Temp "Temp of DC-DC converter"; CM_ SG_ 2161115137 Debug "Essentially a print statement up to 8 bytes long that whichever targeted can parse"; CM_ SG_ 2161115649 Timestamp "Time in millis"; CM_ SG_ 2161115650 Timestamp "Time in millis"; @@ -555,6 +603,12 @@ BA_ "VFrameFormat" BO_ 2147492118 1; BA_ "VFrameFormat" BO_ 2147492374 1; BA_ "VFrameFormat" BO_ 2147492630 1; BA_ "VFrameFormat" BO_ 2147492886 1; +BA_ "VFrameFormat" BO_ 2191528450 1; +BA_ "VFrameFormat" BO_ 2191524354 1; +BA_ "VFrameFormat" BO_ 2191524353 1; +BA_ "VFrameFormat" BO_ 2190479874 1; +BA_ "VFrameFormat" BO_ 2190475778 1; +BA_ "VFrameFormat" BO_ 2190475777 1; BA_ "VFrameFormat" BO_ 2147485718 1; BA_ "VFrameFormat" BO_ 2147485974 1; BA_ "VFrameFormat" BO_ 2147486230 1; @@ -565,22 +619,19 @@ BA_ "VFrameFormat" BO_ 2149581313 1; BA_ "VFrameFormat" BO_ 2149583363 1; BA_ "VFrameFormat" BO_ 2149583619 1; BA_ "VFrameFormat" BO_ 2149583875 1; -BA_ "VFrameFormat" BO_ 2149581315 1; BA_ "VFrameFormat" BO_ 2149586440 1; BA_ "VFrameFormat" BO_ 2149586696 1; -BA_ "VFrameFormat" BO_ 2149581320 1; BA_ "VFrameFormat" BO_ 2149587213 1; -BA_ "VFrameFormat" BO_ 2149581325 1; BA_ "VFrameFormat" BO_ 2149587214 1; -BA_ "VFrameFormat" BO_ 2149581326 1; BA_ "VFrameFormat" BO_ 2149587215 1; -BA_ "VFrameFormat" BO_ 2149581327 1; BA_ "VFrameFormat" BO_ 2149587717 1; -BA_ "VFrameFormat" BO_ 2149581317 1; +BA_ "VFrameFormat" BO_ 2149602053 1; BA_ "VFrameFormat" BO_ 2149581568 1; BA_ "VFrameFormat" BO_ 2149581824 1; BA_ "VFrameFormat" BO_ 2149582080 1; -BA_ "VFrameFormat" BO_ 2149581316 1; +BA_ "VFrameFormat" BO_ 2149581312 1; +BA_ "VFrameFormat" BO_ 2149585449 1; +BA_ "VFrameFormat" BO_ 2149585450 1; BA_ "VFrameFormat" BO_ 2161115137 1; BA_ "VFrameFormat" BO_ 2161115649 1; BA_ "VFrameFormat" BO_ 2161115650 1; diff --git a/Autogen/CAN/Inc/GRCAN_MSG_DATA.h b/Autogen/CAN/Inc/GRCAN_MSG_DATA.h index 778affdab..c00113345 100644 --- a/Autogen/CAN/Inc/GRCAN_MSG_DATA.h +++ b/Autogen/CAN/Inc/GRCAN_MSG_DATA.h @@ -53,7 +53,8 @@ See diagram in StateMachine.h (Byte 0) */ 31: BrakeTemp RR (1: OK, 0: Timeout) (Byte 3) */ uint8_t ping_group_3; /** Controls the AC current limits to each of the inverters -Discrete Mapping, actual values TBD (16 possible values) The torque map selected; torque map is the mapping of the throttle to the torque sent to each motor (Byte 4) */ +Discrete Mapping, actual current values described by the torque map The torque map selected; torque map is the mapping of the throttle to the torque sent to each motor. 0 is max current amps, 1 is 50 +/ 100 / 150 / 200 / 250 / 275, 2 and later is tbd (Byte 4) */ uint8_t power_level_torque_map; /** the Temp of the hottest cell of the accumulator (Byte 5) */ uint8_t max_cell_temp; @@ -334,79 +335,6 @@ typedef struct { uint8_t led_latch_flags; } GRCAN_DASH_CONFIG_MSG; -/** TCM Status */ -typedef struct { - /** [Byte 0 / Bits 0-7] -0: Connection Status -1: MQTT Status -2: Epic Shelter Status -3: Camera Status -4-7: Reserved (Byte 0) */ - uint8_t status_bits; - /** Mapache ping (upload) (Byte 1) */ - uint16_t mapache_ping; - /** # of messages on cache (non-synced) (Byte 3) */ - uint32_t cache_size; - /** Byte 7 (Byte 7) */ - uint8_t reserved; -} GRCAN_TCM_STATUS_MSG; - -/** TCM Resource Utilization */ -typedef struct { - /** core 0 frequency in MHz (Byte 0) */ - uint16_t cpu_0_freq; - /** core 0 utilization in % (Byte 2) */ - uint8_t cpu_0_util; - /** core 1 frequency in MHz (Byte 3) */ - uint16_t cpu_1_freq; - /** core 1 utilization in % (Byte 5) */ - uint8_t cpu_1_util; - /** core 2 frequency in MHz (Byte 6) */ - uint16_t cpu_2_freq; - /** core 2 utilization in % (Byte 8) */ - uint8_t cpu_2_util; - /** core 3 frequency in MHz (Byte 9) */ - uint16_t cpu_3_freq; - /** core 3 utilization in % (Byte 11) */ - uint8_t cpu_3_util; - /** core 4 frequency in MHz (Byte 12) */ - uint16_t cpu_4_freq; - /** core 4 utilization in % (Byte 14) */ - uint8_t cpu_4_util; - /** core 5 frequency in MHz (Byte 15) */ - uint16_t cpu_5_freq; - /** core 5 utilization in % (Byte 17) */ - uint8_t cpu_5_util; - /** total cpu utilization in % (Byte 18) */ - uint8_t cpu_total_util; - /** total memory in MB (Byte 19) */ - uint16_t ram_total; - /** used memory in MB (Byte 21) */ - uint16_t ram_used; - /** memory utilization in % (Byte 23) */ - uint8_t ram_util; - /** gpu utilization in % (Byte 24) */ - uint8_t gpu_util; - /** gpu frequency in MHz (Byte 25) */ - uint16_t gpu_freq; - /** total disk space in MB (Byte 27) */ - uint32_t disk_total; - /** used disk space in MB (Byte 31) */ - uint32_t disk_used; - /** disk utilization in % (Byte 35) */ - uint8_t disk_util; - /** cpu temp in ˚C (Byte 36) */ - uint8_t cpu_temp; - /** gpu temp in ˚C (Byte 37) */ - uint8_t gpu_temp; - /** voltage draw in mV (Byte 38) */ - uint16_t voltage_draw; - /** current draw in mA (Byte 40) */ - uint16_t current_draw; - /** power draw in mW (Byte 42) */ - uint16_t power_draw; -} GRCAN_TCM_RESOURCE_UTILIZATION_MSG; - /** ECU Analog Data */ typedef struct { /** 4-20 mA signal (Byte 0) */ @@ -427,8 +355,8 @@ typedef struct { uint16_t aux_signal; /** 0-100% percentage (Byte 16) */ uint16_t acc_pedal_travel; - /** 0-100% percentage (Byte 18) */ - uint16_t brake_pedal_travel; + /** Pressure (Byte 18) */ + uint16_t brake_pedal_pressure; } GRCAN_ECU_ANALOG_DATA_MSG; /** GPS LAT */ @@ -2255,4 +2183,70 @@ typedef struct { uint8_t reserved; } GRCAN_INBOARDFLOOR_IMU_TOF_DATA_MSG; +/** ECU Config */ +typedef struct { + /** Delay for which to consider pings timed out (Byte 0) */ + uint8_t ping_timeout_delay; + /** Minimum brake f psi for which to consider the brakes pressed (Byte 1) */ + uint8_t brake_f_min; + /** Minimum brake r psi for which to consider the brakes pressed (Byte 2) */ + uint8_t brake_r_min; + /** Minimum brake bse psi for which to consider the brakes pressed (Byte 3) */ + uint8_t brake_bse_min; + /** Minimum value that the APPS 1 sensor is expected to read (Byte 4) */ + uint8_t apps_1_min; + /** Minimum value that the APPS 2 sensor is expected to read (Byte 5) */ + uint8_t apps_2_min; + /** Maximum value that the APPS 1 sensor is expected to read (Byte 6) */ + uint8_t apps_1_max; + /** Maximum value that the APPS 2 sensor is expected to read (Byte 7) */ + uint8_t apps_2_max; + /** Percentage deadzone of the APPS for which to not consider the pedals to have traveled (Byte 8) */ + uint8_t apps_deadzone; + /** Minimum acceptable BMS sense value such that the BMS is not considered in failure (Byte 9) */ + uint8_t bms_min_threshold; + /** Maximum acceptable BMS sense value such that the BMS is not considered in failure (Byte 10) */ + uint8_t bms_max_threshold; + /** Minimum acceptable IMD sense value such that the BMS is not considered in failure (Byte 11) */ + uint8_t imd_min_threshold; + /** Maximum acceptable IMD sense value such that the BMS is not considered in failure (Byte 12) */ + uint8_t imd_max_threshold; + /** Minimum acceptable BSPD sense value such that the BMS is not considered in failure (Byte 13) */ + uint8_t bspd_min_threshold; + /** Maximum acceptable BSPD sense value such that the BMS is not considered in failure (Byte 14) */ + uint8_t bspd_max_threshold; + /** Maximum acceptable time to remain precharging before discharging (Byte 15) */ + uint8_t max_precharge_time; + /** TBD (Byte 16) */ + uint8_t regen_strength; + /** Enable or disable regenerative braking (Byte 17) */ + uint8_t enable_regen; + /** Reserved (Byte 18) */ + uint16_t reserved; +} GRCAN_ECU_CONFIG_MSG; + +/** DC-DC Status */ +typedef struct { + /** ~20v for LV (LV only. Send 0 for HV) (Byte 0) */ + uint16_t input_voltage; + /** ~12v for LV and ~20v for HV (Byte 2) */ + uint16_t output_voltage; + /** Input current (LV only. Send 0 for HV) (Byte 4) */ + uint8_t input_current; + /** Output current (Byte 5) */ + uint8_t output_current; + /** Temp of DC-DC converter (Byte 6) */ + uint8_t dc_dc_temp; +} GRCAN_DC_DC_STATUS_MSG; + +/** RTD Light Ctrl */ +typedef struct { + /** Intensity of the red channel on the RTD button dash light ONLY when in GLV On, ignored otherwise (Byte 0) */ + uint8_t red; + /** Intensity of the green channel on the RTD button dash light ONLY when in GLV On, ignored otherwise (Byte 0) */ + uint8_t green; + /** Intensity of the blue channel on the RTD button dash light ONLY when in GLV On, ignored otherwise (Byte 0) */ + uint8_t blue; +} GRCAN_RTD_LIGHT_CTRL_MSG; + #endif diff --git a/Autogen/CAN/Inc/GRCAN_MSG_ID.h b/Autogen/CAN/Inc/GRCAN_MSG_ID.h index f08a20273..89f4075f7 100644 --- a/Autogen/CAN/Inc/GRCAN_MSG_ID.h +++ b/Autogen/CAN/Inc/GRCAN_MSG_ID.h @@ -20,6 +20,7 @@ typedef enum { GRCAN_ACU_CELL_DATA_3 = 0x00F, GRCAN_ACU_CELL_DATA_4 = 0x010, GRCAN_ACU_CELL_DATA_5 = 0x011, + GRCAN_DC_DC_STATUS = 0x012, GRCAN_INV_STATUS_1 = 0x013, GRCAN_INV_STATUS_2 = 0x014, GRCAN_INV_STATUS_3 = 0x015, @@ -29,10 +30,9 @@ typedef enum { GRCAN_FAN_CMD = 0x019, GRCAN_DASH_STATUS = 0x01A, GRCAN_DASH_CONFIG = 0x01B, - GRCAN_TCM_STATUS = 0x029, - GRCAN_TCM_RESOURCE_UTILIZATION = 0x02A, GRCAN_ECU_PINGING_RTT = 0x2D, GRCAN_ECU_ANALOG_DATA = 0x02E, + GRCAN_ECU_CONFIG = 0x02F, GRCAN_UVW_DGPS = 0x030, GRCAN_GPS_LAT = 0x031, GRCAN_GPS_LON = 0x032, @@ -68,6 +68,7 @@ typedef enum { GRCAN_WHEEL_SPEED = 0x050, GRCAN_SUSPENSION_IMU_MAG_DATA = 0x051, GRCAN_INBOARDFLOOR_IMU_TOF_DATA = 0x052, + GRCAN_RTD_LIGHT_CTRL = 0x53, } GRCAN_MSG_ID; #endif // CAN_MSG_IDS_H diff --git a/Autogen/CAN/Inc/GRCAN_NODE_ID.h b/Autogen/CAN/Inc/GRCAN_NODE_ID.h index 653c04fd0..e89745227 100644 --- a/Autogen/CAN/Inc/GRCAN_NODE_ID.h +++ b/Autogen/CAN/Inc/GRCAN_NODE_ID.h @@ -36,6 +36,8 @@ typedef enum { GRCAN_BrakeTemp_RL = 0x1E, GRCAN_BrakeTemp_RR = 0x1F, GRCAN_DGPS = 0x20, + GRCAN_LV_DC_DC = 0x29, + GRCAN_HV_DC_DC = 0x2A, } GRCAN_NODE_ID; #endif // GR_IDS_H diff --git a/Autogen/CAN/Src/MSGparser.pl b/Autogen/CAN/Src/MSGparser.pl index d6d960cbf..6d46d1dc5 100644 --- a/Autogen/CAN/Src/MSGparser.pl +++ b/Autogen/CAN/Src/MSGparser.pl @@ -52,7 +52,7 @@ sub parse_msg_yaml { last; } - if ( $line =~ /^ \s{2} ( \w [\w\s\d.]+ ) : \s* $/smx ) { + if ( $line =~ /^ \s{2} ( .+ ) : \s* $/smx ) { my $name = $1; # Pass by reference so we can skip lines in the array diff --git a/ECU/Application/Inc/CANutils.h b/ECU/Application/Inc/CANutils.h index b29172ef9..ebe084970 100644 --- a/ECU/Application/Inc/CANutils.h +++ b/ECU/Application/Inc/CANutils.h @@ -12,7 +12,7 @@ #define ECU_STATE_DATA_SEND_INTERVAL_MS 20 void ECU_CAN_Send(GRCAN_BUS_ID bus, GRCAN_NODE_ID destNode, GRCAN_MSG_ID messageID, void *data, uint32_t size); void ECU_CAN_Send_DTI(GRCAN_CUSTOM_ID msgID, void *data, uint32_t size); -void SendECUStateDataOverCAN(ECU_StateData *stateData); -void SendECUAnalogDataOverCAN(ECU_StateData *stateData); - +void SendECUStateDataOverCAN(const ECU_StateData *stateData); +void SendECUAnalogDataOverCAN(const ECU_StateData *stateData); +void SendECUConfigOverCAN(const ECU_StateData *stateData); #endif diff --git a/ECU/Application/Inc/Pinging.h b/ECU/Application/Inc/Pinging.h index 0d99226d3..f425b80d1 100644 --- a/ECU/Application/Inc/Pinging.h +++ b/ECU/Application/Inc/Pinging.h @@ -3,7 +3,6 @@ #ifndef PINGING_H #define PINGING_H -#define PINGTIMEOUT_TIME 250U // time in ms before a ping is considered timed out #define PINGTIMEOUT_VALUE (UINT8_MAX - 1) // return time value representing a timed out ping void pingAll(void); // ping all IDs specified, to be run every PINGTIMEOUT_TIME milliseconds diff --git a/ECU/Application/Inc/Config.h b/ECU/Application/Inc/Plan_C.h similarity index 100% rename from ECU/Application/Inc/Config.h rename to ECU/Application/Inc/Plan_C.h diff --git a/ECU/Application/Inc/StateData.h b/ECU/Application/Inc/StateData.h index 6ac3ebe94..97992394a 100644 --- a/ECU/Application/Inc/StateData.h +++ b/ECU/Application/Inc/StateData.h @@ -21,7 +21,6 @@ */ #define SAFE_VOLTAGE_LIMIT 60 -#define BUTTON_REFRESH_RATE_MS 100 #define CRITICAL_MAX_CELL_TEMP_C 60 #define CRITICAL_TS_VOLTAGE 600 @@ -50,10 +49,21 @@ typedef union { typedef volatile struct ECU_StateData { + float apps_deadzone; + float bms_min_thresh; + float bms_max_thresh; + float imd_min_thresh; + float imd_max_thresh; + float bspd_min_thresh; + float bspd_max_thresh; + + float regen_strength; + // TODO: Remove unneeded states float min_amk_heat_cap_throttle_percent; float ts_voltage; + float glv_voltage_20V; float max_cell_temp_c; /** Temperature of hottest cell, celsius */ float vehicle_speed_mph; /** Vehicle speed, MPH */ @@ -62,10 +72,7 @@ typedef volatile struct ECU_StateData { float rr_wheel_rpm; /** RRv wheel, RPM */ float rl_wheel_rpm; /** RL wheel, RPM */ - // 0.5V when things go to shit (X_OK low) (BAD) - // 3V when things almost poggers (X_OK high but SDC not reset) (BAD) - // 2.4V when things are actually poggers (X_OK high and SDC is not triggered) - float ams_sense; + float bms_sense; float imd_sense; float bspd_sense; @@ -80,16 +87,27 @@ typedef volatile struct ECU_StateData { uint16_t Brake_F_Signal; uint16_t aux_signal; uint16_t steering_angle_signal; + uint16_t ping_timeout_delay_ms; + uint16_t brake_f_min; + uint16_t brake_r_min; + uint16_t brake_bse_min; + uint16_t apps_1_min; + uint16_t apps_2_min; + uint16_t apps_1_max; + uint16_t apps_2_max; + uint16_t max_precharge_time_ms; + uint8_t status_bits[3]; int8_t ping_block[3]; /** Node timeout status bits (1=OK, 0=Timeout) */ - uint8_t powerlevel; // 4 bits wide, currently values of 0 - 3 + uint8_t powerlevel; // 4 bits wide uint8_t torquemap; // 4 bits wide uint8_t tractivebattery_soc; uint8_t glv_soc; uint8_t acu_error_warning_bits; uint8_t inverter_fault_map; + bool ts_active_button_press_interrupt; bool ts_active_button_pressed; bool rtd_button_press_interrupt; @@ -102,6 +120,8 @@ typedef volatile struct ECU_StateData { bool imd_light; bool tssi_fault; + bool enable_regen; + bool apps_bse_violation; GR_ECU_State ecu_state; diff --git a/ECU/Application/Inc/StateUtils.h b/ECU/Application/Inc/StateUtils.h index 0be6ed429..c258b6676 100644 --- a/ECU/Application/Inc/StateUtils.h +++ b/ECU/Application/Inc/StateUtils.h @@ -11,28 +11,14 @@ uint32_t MillisecondsSinceBoot(void); // Constants -#define BRAKE_F_MIN 700 // TODO: need to be determined FIXME: Rename better -#define BRAKE_F_MAX 4095 // TODO: need to be determined FIXME: Rename better -#define BRAKE_R_MIN 0 // TODO: need to be determined FIXME: Rename better -#define BRAKE_R_MAX 4095 // TODO: need to be determined FIXME: Rename better -#define THROTTLE_MIN_1 2375 // TODO: need to be determined -#define THROTTLE_MAX_1 1897 // TODO: need to be determined -#define THROTTLE_MIN_2 2430 // TODO: need to be determined -#define THROTTLE_MAX_2 1926 // TODO: need to be determined -#define BSE_MAX 2000 // 1187 max , 1187/4096*3.3 = 0.96 -#define BSE_DEADZONE 500 // 688 #define MAX_APPS_IMPLAUSIBLE_TIME_MS 100 #define MAX_BUZZER_TIME_MS 1000 -#define BSE_MIN 720 -#define REGEN_STRENGTH 2.0f // define ratio of regen braking percent to brake pressure percent #define REGEN_MIN_SPEED_MPH 3.106856f // MPH -#define MAX_CURRENT_AMPS 250.0f // TODO: Change as appropriate +#define MAX_CURRENT_AMPS 300.0f // Determined by Ryan #define MAX_REVERSE_CURRENT_AMPS 20.0f // TODO: Change as appropriate -#define MAX_PRECHARGE_TIME 8000 // in ms - #define ECU_STATUS_MSG_PERIOD_MILLIS (1000) #define TRACTIVE_SYSTEM_MAX_PERMITTED_DISCHARGE_TIME_MILLIS (5000) @@ -43,15 +29,15 @@ uint32_t MillisecondsSinceBoot(void); * Usage: * static uint32_t last_action_time = 0; * if (RATE_LIMIT_100_HZ(MillisecondsSinceBoot(), last_action_time)) { - * // Perform action * last_action_time = MillisecondsSinceBoot(); + * // Perform action * } * * @param x Current time in milliseconds (e.g., from MillisecondsSinceBoot()) * @param y Last time the action was performed in milliseconds * @return true if at least 10 ms have passed since last action, false otherwise */ -#define RATE_LIMIT_100_HZ(x, y) (x - y > 10) +#define RATE_LIMIT_100_HZ(x, y) ((x) - (y) > 10) /** * @brief Macro to rate limit an action to 10 Hz (every 100 ms) @@ -59,24 +45,33 @@ uint32_t MillisecondsSinceBoot(void); * Usage: * static uint32_t last_action_time = 0; * if (RATE_LIMIT_10_HZ(MillisecondsSinceBoot(), last_action_time)) { - * // Perform action * last_action_time = MillisecondsSinceBoot(); + * // Perform action * } * * @param x Current time in milliseconds (e.g., from MillisecondsSinceBoot()) * @param y Last time the action was performed in milliseconds * @return true if at least 100 ms have passed since last action, false otherwise */ -#define RATE_LIMIT_10_HZ(x, y) (x - y > 100) +#define RATE_LIMIT_10_HZ(x, y) ((x) - (y) > 100) + +typedef enum { + SDC_OK, + SDC_ONGOING_FAILURE, + SDC_LATCHED_FAILURE +} SDC_Level; // Checks stateData for critical errors bool CriticalError(volatile const ECU_StateData *stateData); +SDC_Level bmsLevel(volatile const ECU_StateData *stateData); +SDC_Level imdLevel(volatile const ECU_StateData *stateData); +SDC_Level bspdLevel(volatile const ECU_StateData *stateData); bool bmsFailure(volatile const ECU_StateData *stateData); bool imdFailure(volatile const ECU_StateData *stateData); bool bspdFailure(volatile const ECU_StateData *stateData); bool APPS_BSE_Violation(volatile const ECU_StateData *stateData); bool PressingBrake(volatile const ECU_StateData *stateData); -float CalcBrakePercent(volatile const ECU_StateData *stateData); +float CalcBrakePressure(volatile const ECU_StateData *stateData); float CalcAccPedalTravel(volatile const ECU_StateData *stateData); bool APPS_Plausible(volatile const ECU_StateData *stateData); bool vehicle_is_moving(volatile const ECU_StateData *stateData); diff --git a/ECU/Application/Inc/vcp_config.h b/ECU/Application/Inc/vcp_config.h index c97d306a8..77a62a7f7 100644 --- a/ECU/Application/Inc/vcp_config.h +++ b/ECU/Application/Inc/vcp_config.h @@ -1,9 +1,7 @@ #ifndef VCP_CONFIG #define VCP_CONFIG -// #define VCP_CONFIG_CLAIM_USART1 #define VCP_CONFIG_CLAIM_USART2 -// #define VCP_CONFIG_CLAIM_USART3 #define VCP_TX_BUFFER_SIZE 128 diff --git a/ECU/Application/Src/CANdler.c b/ECU/Application/Src/CANdler.c index 7e9b271af..0fb46ba4e 100644 --- a/ECU/Application/Src/CANdler.c +++ b/ECU/Application/Src/CANdler.c @@ -12,8 +12,6 @@ #define WHEEL_RPM_TO_MPH_RATIO 0.0476f -extern ECU_StateData stateLump; - void ReportBadMessageLength(GRCAN_BUS_ID bus_id, GRCAN_MSG_ID msg_id, GRCAN_NODE_ID sender_id) { // TODO Ideally change some state data to note a bad message, ie if ACU @@ -80,6 +78,7 @@ void ECU_CAN_MessageHandler(ECU_StateData *state_data, GRCAN_BUS_ID bus_id, GRCA state_data->ir_minus = GETBIT(acu_status_2->precharge_latch_flags, 4); state_data->ir_plus = GETBIT(acu_status_2->precharge_latch_flags, 5); state_data->acu_software_latch = GETBIT(acu_status_2->precharge_latch_flags, 6); + state_data->glv_voltage_20V = acu_status_2->_20v_voltage * 0.1f; break; case GRCAN_INV_STATUS_1: @@ -115,7 +114,9 @@ void ECU_CAN_MessageHandler(ECU_StateData *state_data, GRCAN_BUS_ID bus_id, GRCA state_data->ts_active_button_press_interrupt = (dash_data->button_flags >> 2) & 1; } - if (state_data->ecu_state == GR_PRECHARGE_COMPLETE) { + if (state_data->ecu_state == GR_GLV_ON) { + state_data->rtd_button_press_interrupt = (dash_data->button_flags >> 1) & 1; + } else if (state_data->ecu_state == GR_PRECHARGE_COMPLETE) { state_data->rtd_button_press_interrupt = (dash_data->button_flags >> 1) & 1; } else if (state_data->ecu_state == GR_DRIVE_ACTIVE) { state_data->rtd_button_press_interrupt = (dash_data->button_flags >> 3) & 1; @@ -123,45 +124,33 @@ void ECU_CAN_MessageHandler(ECU_StateData *state_data, GRCAN_BUS_ID bus_id, GRCA break; - case GRCAN_ECU_ANALOG_DATA: - if (data_length != sizeof(GRCAN_ECU_ANALOG_DATA_MSG)) { + case GRCAN_ECU_CONFIG: + if (data_length != sizeof(GRCAN_ECU_CONFIG_MSG)) { ReportBadMessageLength(bus_id, msg_id, sender_id); break; } - GRCAN_ECU_ANALOG_DATA_MSG *analog_data = (GRCAN_ECU_ANALOG_DATA_MSG *)data; - state_data->bspd_signal = analog_data->bspd_signal; - state_data->bse_signal = analog_data->bse_signal; - state_data->APPS1_Signal = analog_data->apps_1_signal; - state_data->APPS2_Signal = analog_data->apps_2_signal; - state_data->Brake_F_Signal = analog_data->brakeline_f_signal; - state_data->Brake_R_Signal = analog_data->brakeline_r_signal; - state_data->steering_angle_signal = analog_data->steering_angle_signal; - state_data->aux_signal = analog_data->aux_signal; - break; + GRCAN_ECU_CONFIG_MSG *ecu_config = (GRCAN_ECU_CONFIG_MSG *)data; + state_data->ping_timeout_delay_ms = ecu_config->ping_timeout_delay * 10; + state_data->brake_f_min = ecu_config->brake_f_min * 25; + state_data->brake_r_min = ecu_config->brake_r_min * 25; + state_data->brake_bse_min = ecu_config->brake_bse_min * 25; + state_data->apps_1_min = ecu_config->apps_1_min * 10; + state_data->apps_2_min = ecu_config->apps_2_min * 10; + state_data->apps_1_max = ecu_config->apps_1_max * 10; + state_data->apps_2_max = ecu_config->apps_2_max * 10; + state_data->apps_deadzone = ecu_config->apps_deadzone / 25.5f; + state_data->bms_min_thresh = ecu_config->bms_min_threshold / 20.0f; + state_data->bms_max_thresh = ecu_config->bms_max_threshold / 20.0f; + state_data->imd_min_thresh = ecu_config->imd_min_threshold / 20.0f; + state_data->imd_max_thresh = ecu_config->imd_max_threshold / 20.0f; + state_data->bspd_min_thresh = ecu_config->bspd_min_threshold / 20.0f; + state_data->bspd_max_thresh = ecu_config->bspd_max_threshold / 20.0f; + state_data->max_precharge_time_ms = ecu_config->max_precharge_time; + state_data->regen_strength = ecu_config->regen_strength / 10.0f; + state_data->enable_regen = ecu_config->enable_regen; - /* - case GRCAN_STEERING_STATUS: - if (data_length != sizeof(GRCAN_STEERING_STATUS_MSG)) { - ReportBadMessageLength(bus_id, msg_id, sender_id); - break; - } - GRCAN_STEERING_STATUS_MSG *steering_status = (GRCAN_STEERING_STATUS_MSG *)data; - state_data->powerlevel_torquemap = steering_status->encoder_bits; break; - */ - // TODO: fix when sensors done - /* - case GRCAN_SAM_REAR_WHEELSPEED: - if (data_length != sizeof(GRCAN_SAM_REAR_WHEELSPEED_MSG)) { - ReportBadMessageLength(bus_id, msg_id, sender_id); - break; - } - GRCAN_SAM_REAR_WHEELSPEED_MSG *encoder_status = (GRCAN_SAM_REAR_WHEELSPEED_MSG *)data; - state_data->rr_wheel_rpm = encoder_status->wheel_speed * 0.1 - 32768; // TODO: find out which wheel this actually measures: one or 4 sensors? - state_data->vehicle_speed_mph = state_data->rr_wheel_rpm * WHEEL_RPM_TO_MPH_RATIO; - break; - */ default: ReportUnhandledMessage(bus_id, msg_id, sender_id); break; diff --git a/ECU/Application/Src/CANutils.c b/ECU/Application/Src/CANutils.c index 4f1a04898..5b1765cc9 100644 --- a/ECU/Application/Src/CANutils.c +++ b/ECU/Application/Src/CANutils.c @@ -97,7 +97,7 @@ void ECU_CAN_Send_DTI(GRCAN_CUSTOM_ID msgID, void *data, uint32_t size) can_enqueue(stateLump.primary_can, &msg); } -void SendECUStateDataOverCAN(ECU_StateData *stateData) +void SendECUStateDataOverCAN(const ECU_StateData *stateData) { uint32_t currentTime = MillisecondsSinceBoot(); @@ -123,14 +123,15 @@ void SendECUStateDataOverCAN(ECU_StateData *stateData) ECU_CAN_Send(GRCAN_BUS_PRIMARY, GRCAN_ALL, GRCAN_ECU_STATUS_1, (void *)&messages.ECUStatusMsgOne, sizeof(messages.ECUStatusMsgOne)); ECU_CAN_Send(GRCAN_BUS_PRIMARY, GRCAN_ALL, GRCAN_ECU_STATUS_2, (void *)&messages.ECUStatusMsgTwo, sizeof(messages.ECUStatusMsgTwo)); ECU_CAN_Send(GRCAN_BUS_PRIMARY, GRCAN_ALL, GRCAN_ECU_STATUS_3, (void *)&messages.ECUStatusMsgThree, sizeof(messages.ECUStatusMsgThree)); + + SendECUConfigOverCAN(stateData); } -void SendECUAnalogDataOverCAN(ECU_StateData *stateData) +void SendECUAnalogDataOverCAN(const ECU_StateData *stateData) { uint32_t millis_since_boot = MillisecondsSinceBoot(); static uint32_t last_can_tcm_request_millis = 0; - if (millis_since_boot - last_can_tcm_request_millis > 100) { GRCAN_ECU_ANALOG_DATA_MSG message = {.bspd_signal = stateData->bspd_signal, .bse_signal = stateData->bse_signal, @@ -141,8 +142,32 @@ void SendECUAnalogDataOverCAN(ECU_StateData *stateData) .steering_angle_signal = stateData->steering_angle_signal, .aux_signal = stateData->aux_signal, .acc_pedal_travel = CalcAccPedalTravel(stateData) * 65535, - .brake_pedal_travel = CalcBrakePercent(stateData) * 65535}; + .brake_pedal_pressure = CalcBrakePressure(stateData)}; ECU_CAN_Send(GRCAN_BUS_DATA, GRCAN_TCM, GRCAN_ECU_ANALOG_DATA, &message, sizeof(message)); last_can_tcm_request_millis = millis_since_boot; } } + +void SendECUConfigOverCAN(const ECU_StateData *stateData) +{ + GRCAN_ECU_CONFIG_MSG message = {.ping_timeout_delay = (uint8_t)(stateData->ping_timeout_delay_ms / 10.0f), + .brake_f_min = (uint8_t)(stateData->brake_f_min / 25.0f), + .brake_r_min = (uint8_t)(stateData->brake_r_min / 25.0f), + .brake_bse_min = (uint8_t)(stateData->brake_bse_min / 25.0f), + .apps_1_min = (uint8_t)(stateData->apps_1_min / 10.0f), + .apps_2_min = (uint8_t)(stateData->apps_2_min / 10.0f), + .apps_1_max = (uint8_t)(stateData->apps_1_max / 10.0f), + .apps_2_max = (uint8_t)(stateData->apps_2_max / 10), + .apps_deadzone = (uint8_t)(stateData->apps_deadzone * 25.5f), + .bms_min_threshold = (uint8_t)(stateData->bms_min_thresh * 20.0f), + .bms_max_threshold = (uint8_t)(stateData->bms_max_thresh * 20.0f), + .imd_min_threshold = (uint8_t)(stateData->imd_min_thresh * 20.0f), + .imd_max_threshold = (uint8_t)(stateData->imd_max_thresh * 20.0f), + .bspd_min_threshold = (uint8_t)(stateData->bspd_min_thresh * 20.0f), + .bspd_max_threshold = (uint8_t)(stateData->bspd_max_thresh * 20.0f), + .max_precharge_time = (uint8_t)(stateData->max_precharge_time_ms / 10), + .regen_strength = (uint8_t)(stateData->regen_strength * 10), + .enable_regen = stateData->enable_regen}; + + ECU_CAN_Send(GRCAN_BUS_DATA, GRCAN_TCM, GRCAN_ECU_CONFIG, &message, sizeof(message)); +} diff --git a/ECU/Application/Src/Lights.c b/ECU/Application/Src/Lights.c index 12817b010..3e0e7c31d 100644 --- a/ECU/Application/Src/Lights.c +++ b/ECU/Application/Src/Lights.c @@ -1,7 +1,9 @@ #include "Lights.h" #include "CANutils.h" +#include "Logomatic.h" #include "StateData.h" +#include "StateMachine.h" #include "StateUtils.h" #include "adc.h" #include "bitManipulations.h" @@ -18,11 +20,34 @@ void BrakeLightControl(ECU_StateData *stateLump) } } +static bool SDCStartupCondition = true; // prevent false positive TSSI on startup +// PRECONDITION: IMD assumed to give valid readings before this is run void TSSILightControl(ECU_StateData *stateLump) { // EV.5.11.5: Flash, 2 Hz to 5 Hz, 50% duty cycle // Here we chose a period of 286ms - if (stateLump->tssi_fault) { + + bool redCar; + + // if we are before SDC is reset, don't red car unless there is an active failure + if (SDCStartupCondition) { + redCar = false; + + SDC_Level bms = bmsLevel(stateLump); + SDC_Level imd = imdLevel(stateLump); + + if (bms == SDC_OK && imd == SDC_OK) { + SDCStartupCondition = false; + } else if (bms == SDC_ONGOING_FAILURE || imd == SDC_ONGOING_FAILURE) { + SDCStartupCondition = false; + redCar = true; + } + } else { + redCar = bmsFailure(stateLump) || imdFailure(stateLump); + } + + // if red car blink tssi + if (redCar) { LL_GPIO_ResetOutputPin(TSSI_G_CONTROL_GPIO_Port, TSSI_G_CONTROL_Pin); if (MillisecondsSinceBoot() % 286 < 143) { LL_GPIO_SetOutputPin(TSSI_R_CONTROL_GPIO_Port, TSSI_R_CONTROL_Pin); @@ -35,35 +60,93 @@ void TSSILightControl(ECU_StateData *stateLump) } } -void RTDButtonLightControl(ECU_StateData *stateLump) +void TSActiveButtonLightControl(ECU_StateData *stateLump) { - if (stateLump->ecu_state == GR_DRIVE_ACTIVE) { - LL_GPIO_SetOutputPin(RTD_BTN_LED_CONTROL_GPIO_Port, RTD_BTN_LED_CONTROL_Pin); + if (stateLump->ecu_state == GR_GLV_ON || stateLump->ecu_state == GR_GLV_OFF) { + LL_GPIO_SetOutputPin(TS_ACTIVE_BTN_LED_CONTROL_GPIO_Port, TS_ACTIVE_BTN_LED_CONTROL_Pin); } else { - LL_GPIO_ResetOutputPin(RTD_BTN_LED_CONTROL_GPIO_Port, RTD_BTN_LED_CONTROL_Pin); + LL_GPIO_ResetOutputPin(TS_ACTIVE_BTN_LED_CONTROL_GPIO_Port, TS_ACTIVE_BTN_LED_CONTROL_Pin); } } -void TSActiveButtonLightControl(ECU_StateData *stateLump) +void RTD_ButtonLightControl(ECU_StateData *stateLump) { - if (stateLump->ecu_state == GR_GLV_ON || stateLump->ecu_state == GR_GLV_OFF) { - LL_GPIO_SetOutputPin(TS_ACTIVE_BTN_LED_CONTROL_GPIO_Port, TS_ACTIVE_BTN_LED_CONTROL_Pin); + // Ignored anyway if not in GLV On + if (stateLump->ecu_state != GR_GLV_ON) { + return; + } + + // Send every 10 ms + static uint32_t last_rtd_light_update_millis; + if (MillisecondsSinceBoot() - last_rtd_light_update_millis < 10) { + return; + } + last_rtd_light_update_millis = MillisecondsSinceBoot(); + + GRCAN_RTD_LIGHT_CTRL_MSG light_control = {0}; + + if (stateLump->torquemap == 0) { + light_control.red = 0; + light_control.green = 0; + light_control.blue = 0; + + ECU_CAN_Send(GRCAN_BUS_PRIMARY, GRCAN_Dash_Panel, GRCAN_RTD_LIGHT_CTRL, &light_control, sizeof(light_control)); + } else if (stateLump->torquemap == 1) { + float multiplier = 1.0f; + switch (stateLump->powerlevel) { + case 0: + multiplier = 0.05f; + break; + case 1: + multiplier = 0.1f; + break; + case 2: + multiplier = 0.2f; + break; + case 3: + multiplier = 0.4f; + break; + case 4: + multiplier = 0.7f; + break; + case 5: + multiplier = 1.0f; + break; + default: + LOGOMATIC("Invalid powerlevel: %d. Defaulting to 0.\n", stateLump->powerlevel); + multiplier = 0.0f; + } + + light_control.red = (uint8_t)(255 * multiplier); + light_control.green = (uint8_t)(63 * multiplier); + light_control.blue = (uint8_t)(0 * multiplier); + + ECU_CAN_Send(GRCAN_BUS_PRIMARY, GRCAN_Dash_Panel, GRCAN_RTD_LIGHT_CTRL, &light_control, sizeof(light_control)); } else { - LL_GPIO_ResetOutputPin(TS_ACTIVE_BTN_LED_CONTROL_GPIO_Port, TS_ACTIVE_BTN_LED_CONTROL_Pin); + LOGOMATIC("Invalid torquemap: %d. Defaulting to off.\n", stateLump->torquemap); + light_control.red = 0; + light_control.green = 0; + light_control.blue = 0; + ECU_CAN_Send(GRCAN_BUS_PRIMARY, GRCAN_Dash_Panel, GRCAN_RTD_LIGHT_CTRL, &light_control, sizeof(light_control)); } } void dashLights(ECU_StateData *stateLump) { - uint8_t timeState = (MillisecondsSinceBoot() >> 8) % 16; // counter from 0 to 15 that increments every 256 ms: - bool powerLevelLight = (stateLump->ecu_state == GR_GLV_ON) && (timeState == (stateLump->powerlevel + 1) * 2); // 2 Hz light: # of blinks is power level plus one - - // light control for if signal goog - GRCAN_DASH_CONFIG_MSG message = {.led_latch_flags = (bspdFailure(stateLump) || powerLevelLight) << 2 | stateLump->imd_light << 1 | stateLump->bms_light}; + /* + bool bms_nonlatch = stateLump->bms_light; + bool imd_nonlatch = stateLump->imd_light; + bool bspd_nonlatch = bspdFailure(stateLump); + bool bms_latch = !stateLump->bms_light; + bool imd_latch = !stateLump->imd_light; + bool bspd_latch = !bspdFailure(stateLump); - // this is needed for the latch open control - message.led_latch_flags |= ((uint8_t) !(bspdFailure(stateLump) || powerLevelLight) << 5) | ((uint8_t)!stateLump->imd_light << 4) | ((uint8_t)!stateLump->bms_light << 3); + GRCAN_DASH_CONFIG_MSG message = {.led_latch_flags = (bms_nonlatch << 5) | (imd_nonlatch << 4) | (bspd_nonlatch << 3) | (bms_latch << 2) | (imd_latch << 1) | (bspd_latch << 0)}; + */ + GRCAN_DASH_CONFIG_MSG message = {.led_latch_flags = (!bspdFailure(stateLump) << 5) | (!imdFailure(stateLump) << 4) | (!bmsFailure(stateLump) << 3) | (bspdFailure(stateLump) << 2) | + (imdFailure(stateLump) << 1) | (bmsFailure(stateLump) << 0)}; + message.led_latch_flags = ~message.led_latch_flags; // not to spec, needed as of the current iteration of the dash panel code ECU_CAN_Send(GRCAN_BUS_PRIMARY, GRCAN_Dash_Panel, GRCAN_DASH_CONFIG, &message, sizeof(message)); } @@ -71,6 +154,6 @@ void lightControl(ECU_StateData *stateData) { BrakeLightControl(stateData); TSSILightControl(stateData); - RTDButtonLightControl(stateData); + RTD_ButtonLightControl(stateData); dashLights(stateData); } diff --git a/ECU/Application/Src/StateTicks.c b/ECU/Application/Src/StateTicks.c index 586dd056e..499168219 100644 --- a/ECU/Application/Src/StateTicks.c +++ b/ECU/Application/Src/StateTicks.c @@ -26,7 +26,40 @@ * @remark Intentionally not a globally accessible variable */ -ECU_StateData stateLump = {.ecu_state = GR_GLV_ON, .acu_software_latch = 1, .powerlevel = 3}; +ECU_StateData stateLump = { + // Start on GLV On + .ecu_state = GR_GLV_ON, + // Assume ACU good at boot + .acu_software_latch = 1, + // Startup at minimum power + .powerlevel = 0, + // See CANdo specification + .torquemap = 1, + // APPS Deadzone + .apps_deadzone = 0.08f, + // BMS thresholds + .bms_min_thresh = 0.3f, + .bms_max_thresh = 1.6f, + // IMD thresholds + .imd_min_thresh = 0.3f, + .imd_max_thresh = 1.6f, + // BSPD thresholds + .bspd_min_thresh = 0.6f, + .bspd_max_thresh = 1.35f, + // Timings + .ping_timeout_delay_ms = 250, + .max_precharge_time_ms = 8000, + // Pedals + .brake_f_min = 700, + .brake_r_min = 0, + .brake_bse_min = 720, + .apps_1_min = 2375, + .apps_2_min = 2430, + .apps_1_max = 1897, + .apps_2_max = 1926, + // Regen + .regen_strength = 2, + .enable_regen = false}; static uint32_t millis_since_boot; void ECU_State_Tick(void) @@ -39,28 +72,6 @@ void ECU_State_Tick(void) last_ECU_status_msg_millis = millis_since_boot; } - // light control - // false or imd_sense > 0.5 -> false -> no light - // false or imd_sense < 0.5 -> true -> light - // true or imd_sense > 0.5 -> true -> light stays on - // stateLump.bms_light |= !(stateLump.ams_sense > 0.5f); - // stateLump.imd_light |= !(stateLump.imd_sense > 0.5f); - // lgoht control reset - - // true and no failiure -> flase - // true and failiure -> true - // false and failure -> false - // flase and no failure -> false - // stateLump.bms_light &= (bmsFailure(&stateLump)); - // stateLump.imd_light &= (imdFailure(&stateLump)); - - stateLump.bms_light = (stateLump.ams_sense <= 0.4f) || (stateLump.bms_light && bmsFailure(&stateLump)); - stateLump.imd_light = (stateLump.imd_sense <= 0.4f) || (stateLump.imd_light && imdFailure(&stateLump)); - - stateLump.tssi_fault = stateLump.bms_light || stateLump.imd_light; - - // bmsFailure(&stateLump) || imdFailure(&stateLump); - if (stateLump.ts_active_button_press_interrupt) { stateLump.ts_active_button_press_interrupt = false; stateLump.ts_active_button_pressed = true; @@ -128,7 +139,7 @@ void ECU_GLV_On(ECU_StateData *stateData) } if (stateData->rtd_button_pressed) { - stateData->powerlevel = (stateData->powerlevel + 1) % 4; + stateData->powerlevel = (stateData->powerlevel + 1) % 6; LOGOMATIC("Power level now at %d\n", stateData->powerlevel); } } @@ -156,7 +167,7 @@ void ECU_Precharge_Engaged(ECU_StateData *stateData) return; } - if (CriticalError(stateData) || (millis_since_boot - time_start_precharge) >= MAX_PRECHARGE_TIME) { + if (CriticalError(stateData) || (millis_since_boot - time_start_precharge) >= stateData->max_precharge_time_ms) { LOGOMATIC("CRITICAL ERROR! PRECHARGE ENGAGED to TS DISCHARGE START!\n"); ECU_CAN_Send(GRCAN_BUS_PRIMARY, GRCAN_Debugger, GRCAN_DEBUG_2_0, "TS-P-ITR", 8); ECU_Transition_To_Tractive_System_Discharge(stateData); @@ -187,7 +198,7 @@ void ECU_Precharge_Complete(ECU_StateData *stateData) return; } - if (PressingBrake(stateData) && stateData->rtd_button_pressed && (CalcAccPedalTravel(stateData) < 0.05f)) { + if (PressingBrake(stateData) && stateData->rtd_button_pressed && (CalcAccPedalTravel(stateData) < stateData->apps_deadzone)) { GRCAN_INV_CONFIG_MSG inverter_message = {.max_ac_current = 0xFFFF, .max_dc_current = 0xFFFF, .absolute_max_rpm_limit = 0xFFFF, .motor_direction = 0}; ECU_CAN_Send(GRCAN_BUS_PRIMARY, GRCAN_GR_Inv, GRCAN_INV_CONFIG, &inverter_message, sizeof(inverter_message)); LOGOMATIC("PRECHARGE COMPLETE to DRIVE START/ACTIVE!\n"); @@ -235,7 +246,7 @@ void ECU_Drive_Active(ECU_StateData *stateData) if (APPS_BSE_Violation(stateData)) { stateData->apps_bse_violation = true; - } else if (CalcAccPedalTravel(stateData) < 0.05f) { + } else if (CalcAccPedalTravel(stateData) < stateData->apps_deadzone) { stateData->apps_bse_violation = false; } @@ -249,10 +260,36 @@ void ECU_Drive_Active(ECU_StateData *stateData) if (stateData->apps_bse_violation || !apps_plausible) { torque_request = 0; - } else if (PressingBrake(stateData) && 0 > REGEN_MIN_SPEED_MPH) { // stateData->vehicle_speed_mph - torque_request = -MIN_WITH_TYPES(CalcBrakePercent(stateData) * REGEN_STRENGTH, 1.0f) * MAX_REVERSE_CURRENT_AMPS; + } else if (stateData->enable_regen && PressingBrake(stateData) && 0 > REGEN_MIN_SPEED_MPH) { // stateData->vehicle_speed_mph + torque_request = -MIN_WITH_TYPES(CalcBrakePressure(stateData) / 5000.0f * stateData->regen_strength, 1.0f) * MAX_REVERSE_CURRENT_AMPS; } else { - torque_request = fminf(CalcAccPedalTravel(stateData) * MAX_CURRENT_AMPS * (1 << stateData->powerlevel) / 8.0f, MAX_CURRENT_AMPS); + uint16_t max_current = 0; + // Chosen max current for different power level / torque maps + switch (stateData->powerlevel) { + case 0: + max_current = 50; + break; + case 1: + max_current = 100; + break; + case 2: + max_current = 150; + break; + case 3: + max_current = 200; + break; + case 4: + max_current = 250; + break; + case 5: + max_current = 275; + break; + default: + LOGOMATIC("Invalid power level: %d. Defaulting to no current.\n", stateData->powerlevel); + max_current = 0; + break; + } + torque_request = fminf(CalcAccPedalTravel(stateData) * max_current, MAX_CURRENT_AMPS); } static uint32_t last_can_inverter_request_millis = 0; diff --git a/ECU/Application/Src/StateUtils.c b/ECU/Application/Src/StateUtils.c index efef6b4a0..c0e0dca94 100644 --- a/ECU/Application/Src/StateUtils.c +++ b/ECU/Application/Src/StateUtils.c @@ -11,6 +11,7 @@ #include "GRCAN_MSG_ID.h" #include "GRCAN_NODE_ID.h" #include "Logomatic.h" +#include "Plan_C.h" #include "StateData.h" #include "Unused.h" #include "main.h" @@ -58,9 +59,45 @@ bool CriticalError(volatile const ECU_StateData *stateData) return problem; } +SDC_Level bmsLevel(volatile const ECU_StateData *stateData) +{ + // TODO: DYNAMIC LOGIC HERE + if (stateData->bms_sense < stateData->bms_min_thresh) { + return SDC_ONGOING_FAILURE; + } else if (stateData->bms_sense > stateData->bms_max_thresh) { + return SDC_LATCHED_FAILURE; + } + + return SDC_OK; +} + +SDC_Level imdLevel(volatile const ECU_StateData *stateData) +{ + // TODO: DYNAMIC LOGIC HERE + if (stateData->imd_sense < stateData->imd_min_thresh) { + return SDC_ONGOING_FAILURE; + } else if (stateData->imd_sense > stateData->imd_max_thresh) { + return SDC_LATCHED_FAILURE; + } + + return SDC_OK; +} + +SDC_Level bspdLevel(volatile const ECU_StateData *stateData) +{ + if (stateData->bspd_sense < stateData->bspd_min_thresh) { + return SDC_ONGOING_FAILURE; + } else if (stateData->bspd_sense > stateData->bspd_max_thresh) { + return SDC_LATCHED_FAILURE; + } + + return SDC_OK; +} + bool bmsFailure(volatile const ECU_StateData *stateData) { - return stateData->ams_sense < 0.5f || stateData->ams_sense > 1.6f; // 0.5 to 1.6 is valid + SDC_Level level = bmsLevel(stateData); + return level == SDC_ONGOING_FAILURE || level == SDC_LATCHED_FAILURE; } bool imdFailure(volatile const ECU_StateData *stateData) @@ -71,7 +108,8 @@ bool imdFailure(volatile const ECU_StateData *stateData) return false; } - return stateData->imd_sense < 0.5f || stateData->imd_sense > 1.6f; // 0.5 to 1.6 is valid + SDC_Level level = imdLevel(stateData); + return level == SDC_ONGOING_FAILURE || level == SDC_LATCHED_FAILURE; } bool bspdFailure(volatile const ECU_StateData *stateData) @@ -79,8 +117,8 @@ bool bspdFailure(volatile const ECU_StateData *stateData) #ifdef PLAN_C return false; #endif - - return stateData->bspd_sense < 0.6f || stateData->bspd_sense > 1.35f; // possible values are 0.3, 1.2, 1.6 + SDC_Level level = bspdLevel(stateData); + return level == SDC_ONGOING_FAILURE || level == SDC_LATCHED_FAILURE; } bool APPS_BSE_Violation(volatile const ECU_StateData *stateData) @@ -89,11 +127,9 @@ bool APPS_BSE_Violation(volatile const ECU_StateData *stateData) return false; #endif - // Checks 2 * APPS_1 is within 10% of APPS_2 and break + throttle at the same time - return PressingBrake(stateData) && CalcAccPedalTravel(stateData) >= 0.25f; + return PressingBrake(stateData) && CalcAccPedalTravel(stateData) > stateData->apps_deadzone; } -// TODO: reconsider deadzones bool PressingBrake(volatile const ECU_StateData *stateData) { #ifdef PLAN_C @@ -104,54 +140,35 @@ bool PressingBrake(volatile const ECU_StateData *stateData) } #endif - // uint16_t brakeRangeF = BRAKE_F_MAX - BRAKE_F_MIN; - // uint16_t brakeRangeR = BRAKE_R_MAX - BRAKE_R_MIN; - // bool brakeFpress = stateData->Brake_F_Signal - BRAKE_F_MIN > BSE_DEADZONE * brakeRangeF; - // bool brakeRpress = stateData->Brake_R_Signal - BRAKE_R_MIN > BSE_DEADZONE * brakeRangeR; - // return brakeFpress || brakeRpress; - // FIXME: DELETE THE FOLLOWING CONTROL BLOCK FOR BRAKE TESTING - if (stateData->Brake_F_Signal > (BRAKE_F_MIN) || stateData->bse_signal > (BSE_MIN)) { - return true; - } - return false; - // Ideally TCM receives values of 0 after this is no longer called xD. + return (stateData->Brake_F_Signal > stateData->brake_f_min) || (stateData->bse_signal > stateData->brake_bse_min); } -float CalcBrakePercent(volatile const ECU_StateData *stateData) +float CalcBrakePressure(volatile const ECU_StateData *stateData) { #ifdef PLAN_C return 0; #endif - if (stateData->bse_signal <= BSE_MIN) { - return 0; - } - - const uint16_t numerator = stateData->bse_signal - BSE_MIN; - const uint16_t denominator = BSE_MAX - BSE_MIN; - - if (numerator > denominator) { - return 1.0f; - } - - return (float)numerator / (float)denominator; + float psi_front = stateData->bse_signal / 4096.0f * 5000.0f; + float psi_rear = stateData->Brake_F_Signal / 4096.0f * 5000.0f; + return fmaxf(psi_front, psi_rear); } // TODO: reconsider deadzone float CalcAccPedalTravel(volatile const ECU_StateData *stateData) { - float appspos1 = (stateData->APPS1_Signal - THROTTLE_MIN_1) / (float)(THROTTLE_MAX_1 - THROTTLE_MIN_1); - float appspos2 = (stateData->APPS2_Signal - THROTTLE_MIN_2) / (float)(THROTTLE_MAX_2 - THROTTLE_MIN_2); + float appspos1 = (stateData->APPS1_Signal - stateData->apps_1_min) / (float)(stateData->apps_1_max - stateData->apps_1_min); + float appspos2 = (stateData->APPS2_Signal - stateData->apps_2_min) / (float)(stateData->apps_2_max - stateData->apps_2_min); float travel = fminf(fmaxf((appspos1 + appspos2) / 2.0f, 0.0f), 1.0f); - return travel > 0.05f ? (travel - 0.05f) / 0.95f : 0.0f; + return travel > stateData->apps_deadzone ? (travel - stateData->apps_deadzone) / (1.0f - stateData->apps_deadzone) : 0.0f; } // APPS implausibility check (within 10% travel) bool APPS_Plausible(volatile const ECU_StateData *stateData) { - float appspos1 = (stateData->APPS1_Signal - THROTTLE_MIN_1) / (float)(THROTTLE_MAX_1 - THROTTLE_MIN_1); - float appspos2 = (stateData->APPS2_Signal - THROTTLE_MIN_2) / (float)(THROTTLE_MAX_2 - THROTTLE_MIN_2); + float appspos1 = (stateData->APPS1_Signal - stateData->apps_1_min) / (float)(stateData->apps_1_max - stateData->apps_1_min); + float appspos2 = (stateData->APPS2_Signal - stateData->apps_2_min) / (float)(stateData->apps_2_max - stateData->apps_2_min); float error = fabsf(appspos1 - appspos2); diff --git a/ECU/Core/Inc/main.h b/ECU/Core/Inc/main.h index 9d4c3ae2c..57c09c1de 100644 --- a/ECU/Core/Inc/main.h +++ b/ECU/Core/Inc/main.h @@ -44,8 +44,8 @@ extern "C" { /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ -#include "Config.h" #include "GRCAN_NODE_ID.h" +#include "Plan_C.h" /* USER CODE END Includes */ /* Exported types ------------------------------------------------------------*/ @@ -72,7 +72,7 @@ enum { /* Insulation Monitoring Device - Sense */ ADC_BUFFER_SENSE_IMD = 8, /* Accumulator Management System - Sense */ - ADC_BUFFER_SENSE_AMS = 9, + ADC_BUFFER_SENSE_BMS = 9, /* Steering Angle - Signal */ ADC_BUFFER_SIG_STEERING_ANGLE = 10, }; diff --git a/ECU/Core/Inc/stm32g4xx_it.h b/ECU/Core/Inc/stm32g4xx_it.h index 3ae674261..e08bcd52a 100644 --- a/ECU/Core/Inc/stm32g4xx_it.h +++ b/ECU/Core/Inc/stm32g4xx_it.h @@ -56,7 +56,7 @@ void DebugMon_Handler(void); void PendSV_Handler(void); void SysTick_Handler(void); /* USER CODE BEGIN EFP */ -extern ECU_StateData stateLump; + /* USER CODE END EFP */ #ifdef __cplusplus diff --git a/ECU/Core/Src/main.c b/ECU/Core/Src/main.c index 8e9fc3bea..5d7e457f6 100644 --- a/ECU/Core/Src/main.c +++ b/ECU/Core/Src/main.c @@ -39,13 +39,13 @@ #include "Lights.h" #include "Logomatic.h" #include "Pinging.h" +#include "Plan_C.h" #include "StateTicks.h" #include "StateUtils.h" #include "adc.h" #include "can.h" #include "stm32g4xx_hal.h" #include "vcp.h" -// #define PLAN_C /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -209,7 +209,7 @@ void write_adc_values_to_state_data(void) // TODO: determine conversion factors for all of these (uint to float) stateLump.bspd_sense = ADC_outputs[ADC_BUFFER_SENSE_BSPD] / 4095.0 * 3.3; stateLump.imd_sense = ADC_outputs[ADC_BUFFER_SENSE_IMD] / 4095.0 * 3.3; - stateLump.ams_sense = ADC_outputs[ADC_BUFFER_SENSE_AMS] / 4095.0 * 3.3; + stateLump.bms_sense = ADC_outputs[ADC_BUFFER_SENSE_BMS] / 4095.0 * 3.3; } void ADC_Configure(void) diff --git a/ECU/Test/Src/StateTicksTest.c b/ECU/Test/Src/StateTicksTest.c index 968a86193..8f6883419 100644 --- a/ECU/Test/Src/StateTicksTest.c +++ b/ECU/Test/Src/StateTicksTest.c @@ -79,12 +79,51 @@ static void ECU_Pseudo_State_Tick(ECU_StateData *stateLumpTest) int main(void) { + ECU_StateData defaultState = {// Start on GLV On + .ecu_state = GR_GLV_ON, + // Assume ACU good at boot + .acu_software_latch = 1, + // Startup at minimum power + .powerlevel = 0, + // See CANdo specification + .torquemap = 1, + // APPS Deadzone + .apps_deadzone = 0.08f, + // BMS thresholds + .bms_min_thresh = 0.3f, + .bms_max_thresh = 1.6f, + // IMD thresholds + .imd_min_thresh = 0.3f, + .imd_max_thresh = 1.6f, + // BSPD thresholds + .bspd_min_thresh = 0.6f, + .bspd_max_thresh = 1.35f, + // Timings + .ping_timeout_delay_ms = 250, + .max_precharge_time_ms = 8000, + // Pedals + .brake_f_min = 700, + .brake_r_min = 0, + .brake_bse_min = 720, + .apps_1_min = 2375, + .apps_2_min = 2430, + .apps_1_max = 1897, + .apps_2_max = 1926, + // Regen + .regen_strength = 2, + .enable_regen = false}; + + defaultState.bms_sense = 1.5; + defaultState.imd_sense = 1.5; + defaultState.bspd_sense = 1.2; + { // ########################### // ## Step 0.0 ## // ########################### LOGOMATIC("State Ticks test started\n"); - ECU_StateData stateLumpTest = {.ecu_state = GR_GLV_ON, .ams_sense = 1.5, .imd_sense = 1.5, .bspd_sense = 1.2}; + ECU_StateData stateLumpTest = defaultState; + LOGOMATIC("Check GLV ON at boot\n"); stateLumpTest.ecu_state = GR_GLV_ON; stateLumpTest.acu_software_latch = 1; @@ -109,8 +148,8 @@ int main(void) // ## Step 0.2 ## // ########################## LOGOMATIC("Press throttle (1 and 2): STAY IN GLV ON\n"); - stateLumpTest.APPS1_Signal = THROTTLE_MAX_1; - stateLumpTest.APPS2_Signal = THROTTLE_MAX_2; + stateLumpTest.APPS1_Signal = stateLumpTest.apps_1_max; + stateLumpTest.APPS2_Signal = stateLumpTest.apps_2_max; ECU_Pseudo_State_Tick(&stateLumpTest); if (stateLumpTest.ecu_state != GR_GLV_ON) { LOGOMATIC("0.2 Failure: ecu state not in GLV ON\n"); @@ -120,11 +159,11 @@ int main(void) LOGOMATIC("0.2 Failure: TSSI reports faulty\n"); return 1; } - stateLumpTest.APPS1_Signal = THROTTLE_MIN_1; - stateLumpTest.APPS2_Signal = THROTTLE_MIN_2; + stateLumpTest.APPS1_Signal = stateLumpTest.apps_1_min; + stateLumpTest.APPS2_Signal = stateLumpTest.apps_2_min; LOGOMATIC("Press brake: STAY IN GLV ON\n"); - stateLumpTest.bse_signal = BSE_MAX; + stateLumpTest.bse_signal = stateLumpTest.brake_bse_min + 69; ECU_Pseudo_State_Tick(&stateLumpTest); if (stateLumpTest.ecu_state != GR_GLV_ON) { LOGOMATIC("0.2 Failure: ecu state not in GLV ON\n"); @@ -136,7 +175,7 @@ int main(void) } LOGOMATIC("Release brake: STAY IN GLV ON\n"); - stateLumpTest.bse_signal = 0.0f; + stateLumpTest.bse_signal = 0; ECU_Pseudo_State_Tick(&stateLumpTest); if (stateLumpTest.ecu_state != GR_GLV_ON) { LOGOMATIC("0.2 Failure: ecu state not in GLV ON\n"); @@ -217,7 +256,7 @@ int main(void) // ## Step 0.7 ## // ########################## LOGOMATIC("Press and release the RTD button WHILE pressing the brake\n"); - stateLumpTest.bse_signal = BSE_MAX; + stateLumpTest.bse_signal = stateLumpTest.brake_bse_min + 69; LOGOMATIC("Press RTD\n"); stateLumpTest.rtd_button_press_interrupt = true; ECU_Pseudo_State_Tick(&stateLumpTest); @@ -236,7 +275,7 @@ int main(void) // ## Step 0.8 ## // ########################## LOGOMATIC("Release Brakes -> STAY IN DRIVE ACTIVE\n"); - stateLumpTest.bse_signal = 0.0f; + stateLumpTest.bse_signal = 0; ECU_Pseudo_State_Tick(&stateLumpTest); if (stateLumpTest.ecu_state != GR_DRIVE_ACTIVE) { LOGOMATIC("0.8 Failure: ecu state not in drive active\n"); @@ -251,8 +290,8 @@ int main(void) // ## Step 0.9 ## // ########################## LOGOMATIC("Press Throttle -> STAY IN DRIVE ACTIVE\n"); - stateLumpTest.APPS1_Signal = THROTTLE_MAX_1; - stateLumpTest.APPS2_Signal = THROTTLE_MAX_2; + stateLumpTest.APPS1_Signal = stateLumpTest.apps_1_max; + stateLumpTest.APPS2_Signal = stateLumpTest.apps_2_max; ECU_Pseudo_State_Tick(&stateLumpTest); if (stateLumpTest.ecu_state != GR_DRIVE_ACTIVE) { LOGOMATIC("0.9 Failure: ecu state not in drive active\n"); @@ -283,9 +322,9 @@ int main(void) // ## Step 0.11 ## // ########################## LOGOMATIC("Press Throttle and Brake -> STAY IN DRIVE ACTIVE\n"); - stateLumpTest.APPS1_Signal = THROTTLE_MAX_1; - stateLumpTest.APPS2_Signal = THROTTLE_MAX_2; - stateLumpTest.bse_signal = BSE_MAX; + stateLumpTest.APPS1_Signal = stateLumpTest.apps_1_max; + stateLumpTest.APPS2_Signal = stateLumpTest.apps_2_max; + stateLumpTest.bse_signal = stateLumpTest.brake_bse_min + 69; ECU_Pseudo_State_Tick(&stateLumpTest); if (stateLumpTest.ecu_state != GR_DRIVE_ACTIVE) { LOGOMATIC("0.11 Failure: ecu state not in drive active\n"); @@ -300,9 +339,9 @@ int main(void) // ## Step 0.12 ## // ########################## LOGOMATIC("Release Throttle and Brake-> STAY IN DRIVE ACTIVE\n"); - stateLumpTest.APPS1_Signal = 0; - stateLumpTest.APPS2_Signal = 0; - stateLumpTest.bse_signal = 0.0f; + stateLumpTest.APPS1_Signal = stateLumpTest.apps_1_min; + stateLumpTest.APPS2_Signal = stateLumpTest.apps_2_min; + stateLumpTest.bse_signal = 0; ECU_Pseudo_State_Tick(&stateLumpTest); if (stateLumpTest.ecu_state != GR_DRIVE_ACTIVE) { LOGOMATIC("0.12 Failure: ecu state not in drive active\n"); @@ -317,8 +356,8 @@ int main(void) // ## Step 0.13 ## // ########################## LOGOMATIC("Press Throttle -> STAY IN DRIVE ACTIVE\n"); - stateLumpTest.APPS1_Signal = THROTTLE_MAX_1; - stateLumpTest.APPS2_Signal = THROTTLE_MAX_2; + stateLumpTest.APPS1_Signal = stateLumpTest.apps_1_max; + stateLumpTest.APPS2_Signal = stateLumpTest.apps_2_max; ECU_Pseudo_State_Tick(&stateLumpTest); if (stateLumpTest.ecu_state != GR_DRIVE_ACTIVE) { LOGOMATIC("0.13 Failure: ecu state not in drive active\n"); @@ -333,8 +372,8 @@ int main(void) // ## Step 0.14 ## // ########################## LOGOMATIC("Release Throttle -> STAY IN DRIVE ACTIVE\n"); - stateLumpTest.APPS1_Signal = 0; - stateLumpTest.APPS2_Signal = 0; + stateLumpTest.APPS1_Signal = stateLumpTest.apps_1_min; + stateLumpTest.APPS2_Signal = stateLumpTest.apps_2_min; ECU_Pseudo_State_Tick(&stateLumpTest); if (stateLumpTest.ecu_state != GR_DRIVE_ACTIVE) { LOGOMATIC("0.14 Failure: ecu state not in drive active\n"); @@ -374,8 +413,8 @@ int main(void) // ## Step 0.16 ## // ########################## LOGOMATIC("Press Throttle -> STAY IN Precharge Complete\n"); - stateLumpTest.APPS1_Signal = THROTTLE_MAX_1; - stateLumpTest.APPS2_Signal = THROTTLE_MAX_2; + stateLumpTest.APPS1_Signal = stateLumpTest.apps_1_max; + stateLumpTest.APPS2_Signal = stateLumpTest.apps_2_max; ECU_Pseudo_State_Tick(&stateLumpTest); if (stateLumpTest.ecu_state != GR_PRECHARGE_COMPLETE) { LOGOMATIC("0.16 Failure: ecu state not in precharge complete\n"); @@ -390,8 +429,8 @@ int main(void) // ## Step 0.17 ## // ########################## LOGOMATIC("Release Throttle -> STAY IN Precharge Complete\n"); - stateLumpTest.APPS1_Signal = 0; - stateLumpTest.APPS2_Signal = 0; + stateLumpTest.APPS1_Signal = stateLumpTest.apps_1_min; + stateLumpTest.APPS2_Signal = stateLumpTest.apps_2_min; ECU_Pseudo_State_Tick(&stateLumpTest); if (stateLumpTest.ecu_state != GR_PRECHARGE_COMPLETE) { LOGOMATIC("0.17 Failure: ecu state not in precharge complete\n"); @@ -451,7 +490,7 @@ int main(void) // ## Step 1.0 ## // ########################## LOGOMATIC("Reset system\n"); - ECU_StateData stateLumpTest = {.ecu_state = GR_GLV_ON, .ams_sense = 1.5, .imd_sense = 1.5, .bspd_sense = 1.5}; + ECU_StateData stateLumpTest = defaultState; LOGOMATIC("State Tick Test 1 started\n"); ECU_Pseudo_State_Tick(&stateLumpTest); if (stateLumpTest.ecu_state != GR_GLV_ON) {