diff --git a/.github/workflows/Autogen.yml b/.github/workflows/Autogen.yml
new file mode 100644
index 000000000..248eaedd9
--- /dev/null
+++ b/.github/workflows/Autogen.yml
@@ -0,0 +1,61 @@
+name: Autogen
+run-name: Autogen - ${{ github.ref_name }}
+
+on:
+ pull_request:
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ canfigurator:
+ name: CANfigurator
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ steps:
+ - name: Checkout Pull Request
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
+ with:
+ fetch-depth: 1
+ ref: ${{ github.event.pull_request.head.ref }}
+ token: ${{ secrets.AUTOFORMAT_COMMIT_TOKEN }}
+
+ - name: Setup Perl
+ uses: shogo82148/actions-setup-perl@b6cfc127f1b0a63ac98797800f641494d80f42f8 # v1.37.1
+ with:
+ install-modules: 'YAML::XS'
+
+ - name: Run CAN Parser
+ run: |
+ set -o pipefail
+ echo "CAN Parser Output
" >> $GITHUB_STEP_SUMMARY
+ echo "" >> $GITHUB_STEP_SUMMARY
+ echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
+ make -C Autogen/CAN all 2>&1 | tee -a $GITHUB_STEP_SUMMARY
+ echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
+ echo "" >> $GITHUB_STEP_SUMMARY
+ echo " " >> $GITHUB_STEP_SUMMARY
+
+ - name: Auto Format Header Files
+ run: |
+ set -o pipefail
+ echo "Clang-Format Output
" >> $GITHUB_STEP_SUMMARY
+ echo "" >> $GITHUB_STEP_SUMMARY
+ echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
+ clang-format -i --verbose Autogen/CAN/Inc/*.h 2>&1 | tee -a $GITHUB_STEP_SUMMARY
+ echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
+ echo "" >> $GITHUB_STEP_SUMMARY
+ echo " " >> $GITHUB_STEP_SUMMARY
+
+ - name: Save Changes
+ uses: EndBug/add-and-commit@a94899bca583c204427a224a7af87c02f9b325d5 # v9.1.4
+ if: github.ref_type != 'tag'
+ env:
+ HOME: ${{ github.workspace }}
+ with:
+ default_author: github_actions
+ message: 'Automatic CANfigurator: Updated CAN files automatically'
+ fetch: 'false'
+ add: 'Autogen/CAN/Inc/*.h --force'
diff --git a/Autogen/CAN/.gitignore b/Autogen/CAN/.gitignore
new file mode 100644
index 000000000..446fc01fc
--- /dev/null
+++ b/Autogen/CAN/.gitignore
@@ -0,0 +1,6 @@
+inc/
+!inc/output.dbc
+
+# CANfigurator
+Inc/*.h
+Doc/*.dbc
diff --git a/Autogen/CAN/CANfigurator.cmake b/Autogen/CAN/CANfigurator.cmake
new file mode 100644
index 000000000..a538eafca
--- /dev/null
+++ b/Autogen/CAN/CANfigurator.cmake
@@ -0,0 +1,2 @@
+add_library(CANfigurator INTERFACE)
+target_include_directories(CANfigurator INTERFACE ${CMAKE_CURRENT_LIST_DIR}/Inc)
diff --git a/Autogen/CAN/Doc/format.CANdo b/Autogen/CAN/Doc/format.CANdo
new file mode 100644
index 000000000..d9af89e89
--- /dev/null
+++ b/Autogen/CAN/Doc/format.CANdo
@@ -0,0 +1,5004 @@
+routing:
+ messages:
+ ACU:
+ CAN1:
+ Debugger:
+ - msg: Debug 2.0
+ - msg: Ping
+ ECU:
+ - msg: Ping
+ - msg: ACU Status 1
+ - msg: ACU Status 2
+ - msg: ACU Status 3
+ - msg: DC-DC Status
+ CAN2:
+ Debugger:
+ - msg: Debug FD
+ - msg: Ping
+ ECU:
+ - msg: Ping
+ - msg: ACU Cell Data 1
+ - msg: ACU Cell Data 2
+ - msg: ACU Cell Data 3
+ - msg: ACU Cell Data 4
+ - msg: ACU Cell Data 5
+ CAN3:
+ Charger:
+ - msg: Charger Control
+ can_id_override: 0x1806E5F4
+ Charger:
+ CAN3:
+ ACU:
+ - msg: Charger Data
+ can_id_override: 0x18FF50E5
+ Dash Panel:
+ CAN1:
+ Debugger:
+ - msg: Debug 2.0
+ - msg: Ping
+ ECU:
+ - msg: Ping
+ - msg: Dash Status
+ Debugger:
+ CAN1:
+ ECU:
+ - msg: Debug 2.0
+ - msg: Ping
+ - msg: ECU config
+ ACU:
+ - msg: Debug 2.0
+ - msg: Ping
+ TCM:
+ - msg: Debug 2.0
+ - msg: Ping
+ Dash Panel:
+ - msg: Debug 2.0
+ - msg: Ping
+ GR Inverter 1:
+ - msg: Debug 2.0
+ - msg: Ping
+ GR Inverter 2:
+ - msg: Debug 2.0
+ - msg: Ping
+ GR Inverter 3:
+ - msg: Debug 2.0
+ - msg: Ping
+ GR Inverter 4:
+ - msg: Debug 2.0
+ - msg: Ping
+ Fan Controller 1:
+ - msg: Debug 2.0
+ - msg: Ping
+ Fan Controller 2:
+ - msg: Debug 2.0
+ - msg: Ping
+ Fan Controller 3:
+ - msg: Debug 2.0
+ - msg: Ping
+ Fan Controller 4:
+ - msg: Debug 2.0
+ - msg: Ping
+ Fan Controller 5:
+ - msg: Debug 2.0
+ - msg: Ping
+ Fan Controller 6:
+ - msg: Debug 2.0
+ - msg: Ping
+ Fan Controller 7:
+ - msg: Debug 2.0
+ - msg: Ping
+ Fan Controller 8:
+ - msg: Debug 2.0
+ - msg: Ping
+ LV DC-DC:
+ - msg: Debug 2.0
+ - msg: Ping
+ - msg: Ping
+ CAN2:
+ ECU:
+ - msg: Debug FD
+ - msg: Ping
+ ACU:
+ - msg: Debug FD
+ - msg: Ping
+ TCM:
+ - msg: Debug FD
+ - msg: Ping
+ Steering Wheel:
+ - msg: Debug FD
+ - msg: Ping
+ SAM1:
+ - msg: Debug FD
+ - msg: Ping
+ SAM2:
+ - msg: Debug FD
+ - msg: Ping
+ SAM3:
+ - msg: Debug FD
+ - msg: Ping
+ SAM4:
+ - msg: Debug FD
+ - msg: Ping
+ SAM5:
+ - msg: Debug FD
+ - msg: Ping
+ SAM6:
+ - msg: Debug FD
+ - msg: Ping
+ SAM7:
+ - msg: Debug FD
+ - msg: Ping
+ SAM8:
+ - msg: Debug FD
+ - msg: Ping
+ SAM9:
+ - msg: Debug FD
+ - msg: Ping
+ SAM10:
+ - msg: Debug FD
+ - msg: Ping
+ SAM11:
+ - msg: Debug FD
+ - msg: Ping
+ SAM12:
+ - msg: Debug FD
+ - msg: Ping
+ SAM13:
+ - msg: Debug FD
+ - msg: Ping
+ SAM14:
+ - msg: Debug FD
+ - msg: Ping
+ SAM15:
+ - msg: Debug FD
+ - msg: Ping
+ SAM16:
+ - msg: Debug FD
+ - msg: Ping
+ SAM17:
+ - msg: Debug FD
+ - msg: Ping
+ SAM18:
+ - msg: Debug FD
+ - msg: Ping
+ SAM19:
+ - msg: Debug FD
+ - msg: Ping
+ SAM20:
+ - msg: Debug FD
+ - msg: Ping
+ CAN3:
+ Charging SDC:
+ - msg: Ping
+ DTI Inverter:
+ CAN1:
+ ECU:
+ - msg: DTI Data 1
+ can_id_override: 0x2016
+ - msg: DTI Data 2
+ can_id_override: 0x2116
+ - msg: DTI Data 3
+ can_id_override: 0x2216
+ - msg: DTI Data 4
+ can_id_override: 0x2316
+ - msg: DTI Data 5
+ can_id_override: 0x2416
+ ECU:
+ CAN1:
+ DTI Inverter:
+ - msg: DTI Control 1
+ can_id_override: 0x116
+ - msg: DTI Control 2
+ can_id_override: 0x216
+ - msg: DTI Control 3
+ can_id_override: 0x316
+ - msg: DTI Control 4
+ can_id_override: 0x416
+ - msg: DTI Control 5
+ can_id_override: 0x516
+ - msg: DTI Control 6
+ can_id_override: 0x616
+ - msg: DTI Control 7
+ can_id_override: 0x716
+ - msg: DTI Control 8
+ can_id_override: 0x816
+ - msg: DTI Control 9
+ can_id_override: 0x916
+ - msg: DTI Control 10
+ can_id_override: 0xA16
+ - msg: DTI Control 11
+ can_id_override: 0xB16
+ - msg: DTI Control 12
+ can_id_override: 0xC16
+ Debugger:
+ - msg: Debug 2.0
+ - msg: Ping
+ ECU:
+ - msg: Ping
+ - msg: ECU Status 1
+ - msg: ECU Status 2
+ - msg: ECU Status 3
+ ACU:
+ - msg: ACU Precharge
+ - msg: ACU Config Charge Parameters
+ - msg: ACU Config Operational Parameters
+ GR Inverter 1:
+ - msg: Inverter Config
+ - msg: Inverter Command
+ GR Inverter 2:
+ - msg: Inverter Config
+ - msg: Inverter Command
+ GR Inverter 3:
+ - msg: Inverter Config
+ - msg: Inverter Command
+ GR Inverter 4:
+ - msg: Inverter Config
+ - msg: Inverter Command
+ Fan Controller 1:
+ - msg: Fan Command
+ Fan Controller 2:
+ - msg: Fan Command
+ Fan Controller 3:
+ - msg: Fan Command
+ Fan Controller 4:
+ - msg: Fan Command
+ Fan Controller 5:
+ - msg: Fan Command
+ Fan Controller 6:
+ - msg: Fan Command
+ Fan Controller 7:
+ - msg: Fan Command
+ Fan Controller 8:
+ - msg: Fan Command
+ Dash Panel:
+ - msg: Dash Config
+ - msg: Dash Warning Flags
+ - msg: Specific Brake IR
+ CAN2:
+ Debugger:
+ - msg: Debug FD
+ - msg: Ping
+ ECU:
+ - msg: Ping
+ Steering Wheel:
+ - msg: Steering Config
+ - msg: ECU Ping Information
+ TCM:
+ - msg: ECU Pedals Data
+ can_id_override: 0x2020000
+ Energy Meter:
+ CAN3:
+ ACU:
+ - msg: EM Measurement
+ can_id_override: 0x10d
+ - msg: EM Team Data 1
+ can_id_override: 0x30d
+ - msg: EM Team Data 2
+ can_id_override: 0x30e
+ - msg: EM Status
+ can_id_override: 0x40d
+ - msg: EM Temperature
+ can_id_override: 0x60d
+
+ Fan Controller 1:
+ CAN1:
+ Debugger:
+ - msg: Debug 2.0
+ - msg: Ping
+ ECU:
+ - msg: Ping
+ - msg: Fan Status
+ Fan Controller 2:
+ CAN1:
+ Debugger:
+ - msg: Debug 2.0
+ - msg: Ping
+ ECU:
+ - msg: Ping
+ - msg: Fan Status
+ Fan Controller 3:
+ CAN1:
+ Debugger:
+ - msg: Debug 2.0
+ - msg: Ping
+ ECU:
+ - msg: Ping
+ - msg: Fan Status
+ Fan Controller 4:
+ CAN1:
+ Debugger:
+ - msg: Debug 2.0
+ - msg: Ping
+ ECU:
+ - msg: Ping
+ - msg: Fan Status
+ Fan Controller 5:
+ CAN1:
+ Debugger:
+ - msg: Debug 2.0
+ - msg: Ping
+ ECU:
+ - msg: Ping
+ - msg: Fan Status
+ Fan Controller 6:
+ CAN1:
+ Debugger:
+ - msg: Debug 2.0
+ - msg: Ping
+ ECU:
+ - msg: Ping
+ - msg: Fan Status
+ Fan Controller 7:
+ CAN1:
+ Debugger:
+ - msg: Debug 2.0
+ - msg: Ping
+ ECU:
+ - msg: Ping
+ - msg: Fan Status
+ Fan Controller 8:
+ CAN1:
+ Debugger:
+ - msg: Debug 2.0
+ - msg: Ping
+ ECU:
+ - msg: Ping
+ - msg: Fan Status
+ GR Inverter 1:
+ CAN1:
+ Debugger:
+ - msg: Debug 2.0
+ - msg: Ping
+ ECU:
+ - msg: Ping
+ - msg: Inverter Status 1
+ - msg: Inverter Status 2
+ - msg: Inverter Status 3
+ GR Inverter 2:
+ CAN1:
+ Debugger:
+ - msg: Debug 2.0
+ - msg: Ping
+ ECU:
+ - msg: Ping
+ - msg: Inverter Status 1
+ - msg: Inverter Status 2
+ - msg: Inverter Status 3
+ GR Inverter 3:
+ CAN1:
+ Debugger:
+ - msg: Debug 2.0
+ - msg: Ping
+ ECU:
+ - msg: Ping
+ - msg: Inverter Status 1
+ - msg: Inverter Status 2
+ - msg: Inverter Status 3
+ GR Inverter 4:
+ CAN1:
+ Debugger:
+ - msg: Debug 2.0
+ - msg: Ping
+ ECU:
+ - msg: Ping
+ - msg: Inverter Status 1
+ - msg: Inverter Status 2
+ - msg: Inverter Status 3
+ IMD:
+ CAN3:
+ ACU:
+ - msg: IMD response
+ can_id_override: 0x23
+ - msg: IMD isolation info
+ can_id_override: 0x18EFF4FE
+ - msg: IMD voltage
+ can_id_override: 0x18EFF4FE
+ - msg: IMD IT-system
+ can_id_override: 0x18EFF4FE
+ - msg: IMD request
+ can_id_override: 0x18EFF4FE
+ - msg: IMD request
+ can_id_override: 0x18EFF4FE
+ - msg: IMD general
+ can_id_override: 0x18FF01F4
+ LV DC-DC:
+ CAN1:
+ Debugger:
+ - msg: Ping
+ ECU:
+ - msg: Ping
+ - msg: DC-DC Status
+ SAM1:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ ECU:
+ - msg: SAM Brake IR
+ SAM2:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ ECU:
+ - msg: SAM Brake IR
+ SAM3:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ ECU:
+ - msg: SAM Brake IR
+ SAM4:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ ECU:
+ - msg: SAM Brake IR
+ SAM5:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ ECU:
+ - msg: SAM IMU
+ - msg: SAM TOF
+ SAM6:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ SAM7:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ SAM8:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ SAM9:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ SAM10:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ SAM11:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ SAM12:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ SAM13:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ SAM14:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ SAM15:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ SAM16:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ SAM17:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ SAM18:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ SAM19:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ SAM20:
+ CAN2:
+ Debugger:
+ - msg: Ping
+ Steering Wheel:
+ CAN2:
+ Debugger:
+ - msg: Debug FD
+ - msg: Ping
+ ECU:
+ - msg: Ping
+ - msg: Steering Status
+ TCM:
+ CAN1:
+ Debugger:
+ - msg: Ping
+ CAN2:
+ Debugger:
+ - msg: Ping
+ Steering Wheel:
+ - msg: TCM Status
+ - msg: TCM Resource Utilization
+ DGPS:
+ CAN2:
+ ECU:
+ - msg: UVW DGPS
+ - msg: GPS LAT
+ - msg: GPS LON
+ - msg: GPS ALT
+ - msg: GPS PX
+ - msg: GPS QY
+ - msg: GPS RZ
+
+byte order: little_endian
+
+Message ID:
+ Debug 2.0:
+ MSG ID: 0x000
+ MSG LENGTH: 8
+ Debug:
+ bit_start: 0
+ # Essentially a print statement up to 8 bytes long that whichever targeted can parse
+ data type: s
+ Debug FD:
+ MSG ID: 0x001
+ MSG LENGTH: 64
+ Debug:
+ bit_start: 0
+ # Essentially a print statement up to 64 bytes long that whichever targeted can parse
+ data type: s
+ Ping:
+ MSG ID: 0x002
+ MSG LENGTH: 4
+ Timestamp:
+ bit_start: 0
+ # Time in millis
+ data type: u32
+ units: ms
+ scaled min: 0
+ scaled max: 4,294,967,296
+ map equation: "1x"
+ ECU Status 1:
+ MSG ID: 0x003
+ MSG LENGTH: 8
+ ECU State:
+ bit_start: 0
+ # See diagram
+ data type: u8
+ units: Enum
+ ACU Node Status:
+ bit_start: 8
+ # 1: OK, 0: Timeout
+ data type: b
+ units: Bool
+ GR Inv 1 Status:
+ bit_start: 9
+ # 1: OK, 0: Timeout
+ data type: b
+ units: Bool
+ GR Inv 2 Status:
+ bit_start: 10
+ # 1: OK, 0: Timeout
+ data type: b
+ units: Bool
+ GR Inv 3 Status:
+ bit_start: 11
+ # 1: OK, 0: Timeout
+ data type: b
+ units: Bool
+ GR Inv 4 Status:
+ bit_start: 12
+ # 1: OK, 0: Timeout
+ data type: b
+ units: Bool
+ Fan Controller 1:
+ bit_start: 13
+ # 1: OK, 0: Timeout
+ data type: b
+ units: Bool
+ Fan Controller 2:
+ bit_start: 14
+ # 1: OK, 0: Timeout
+ data type: b
+ units: Bool
+ Fan Controller 3:
+ bit_start: 15
+ # 1: OK, 0: Timeout
+ data type: b
+ units: Bool
+ Fan Controller 4:
+ bit_start: 16
+ # 1: OK, 0: Timeout
+ data type: b
+ units: Bool
+ Fan Controller 5:
+ bit_start: 17
+ # 1: OK, 0: Timeout
+ data type: b
+ units: Bool
+ Fan Controller 6:
+ bit_start: 18
+ # 1: OK, 0: Timeout
+ data type: b
+ units: Bool
+ Fan Controller 7:
+ bit_start: 19
+ # 1: OK, 0: Timeout
+ data type: b
+ units: Bool
+ Fan Controller 8:
+ bit_start: 20
+ # 1: OK, 0: Timeout
+ data type: b
+ units: Bool
+ Dash:
+ bit_start: 21
+ # 1: OK, 0: Timeout
+ data type: b
+ units: Bool
+ Steering:
+ bit_start: 22
+ # 1: OK, 0: Timeout
+ data type: b
+ units: Bool
+ Reserved:
+ bit_start: 23-31
+ Power Level:
+ bit_start: 32
+ # Controls the AC current limits to each of the inverters
+ # Discrete Mapping, actual values TBD (16 possible values)
+ data type: u4
+ Torque Map:
+ bit_start: 36
+ # The torque map selected; torque map is the mapping of the throttle to the torque sent to each motor
+ data type: u4
+ Max Cell Temp:
+ bit_start: 40
+ # the temperature of the hottest cell of the accumulator
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Accumulator State of Charge:
+ bit_start: 48
+ # % charged of the Accumulator
+ data type: u8
+ units: '%'
+ scaled min: 0
+ scaled max: 100
+ map equation: "20x/51"
+ GLV State of Charge:
+ bit_start: 56
+ # % charged of the Low Voltage Bat
+ data type: u8
+ units: '%'
+ scaled min: 0
+ scaled max: 100
+ map equation: "20x/51"
+ ECU Status 2:
+ MSG ID: 0x004
+ MSG LENGTH: 8
+ Tractive System Voltage:
+ bit_start: 0
+ # Output terminal voltage of accumulator
+ data type: u16
+ units: Volts
+ scaled min: 0
+ scaled max: 655.35
+ map equation: "0.01x"
+ Vehicle Speed:
+ bit_start: 16
+ # Absolute value of speed
+ data type: u16
+ units: MPH
+ scaled min: 0
+ scaled max: 655.35
+ map equation: "0.01x"
+ FR Wheel RPM:
+ bit_start: 32
+ # Wheel RPM
+ data type: u16
+ units: RPM
+ scaled min: -3276.8
+ scaled max: 3276.7
+ map equation: "0.1x-3276.8"
+ FL Wheel RPM:
+ bit_start: 48
+ # Wheel RPM
+ data type: u16
+ units: RPM
+ scaled min: -3276.8
+ scaled max: 3276.7
+ map equation: "0.1x-3276.8"
+ ECU Status 3:
+ MSG ID: 0x005
+ MSG LENGTH: 4
+ RR Wheel RPM:
+ bit_start: 0
+ # Wheel RPM
+ data type: u16
+ units: RPM
+ scaled min: -3276.8
+ scaled max: 3276.7
+ map equation: "0.1x-3276.8"
+ RL Wheel RPM:
+ bit_start: 16
+ # Wheel RPM
+ data type: u16
+ units: RPM
+ scaled min: -3276.8
+ scaled max: 3276.7
+ map equation: "0.1x-3276.8"
+ ECU config:
+ MSG ID: 0x006
+ MSG LENGTH: 0
+ Reserved:
+ bit_start: 0
+ ACU Status 1:
+ MSG ID: 0x007
+ MSG LENGTH: 8
+ Accumulator Voltage:
+ bit_start: 0
+ # All cell voltages added up
+ data type: u16
+ units: Volts
+ scaled min: 0
+ scaled max: 655.35
+ map equation: "0.01x"
+ TS Voltage:
+ bit_start: 16
+ # Output terminal voltage of accumulator
+ data type: u16
+ units: Volts
+ scaled min: 0
+ scaled max: 655.35
+ map equation: "0.01x"
+ Accumulator Current:
+ bit_start: 32
+ # Current output of accumulator
+ data type: i16
+ units: Amps
+ scaled min: -327.68
+ scaled max: 327.67
+ map equation: "0.01x"
+ Accumulator SOC:
+ bit_start: 48
+ # Accumulator state of charge (Based on lowest cell)
+ data type: u8
+ units: '%'
+ scaled min: 0
+ scaled max: 100
+ map equation: "20x/51"
+ GLV SOC:
+ bit_start: 56
+ # GLV state of charge
+ data type: u8
+ units: '%'
+ scaled min: 0
+ scaled max: 100
+ map equation: "20x/51"
+ ACU Status 2:
+ MSG ID: 0x008
+ MSG LENGTH: 7
+ 20v Voltage:
+ bit_start: 0
+ # 20v GLV voltage
+ data type: u8
+ units: Volts
+ scaled min: 0
+ scaled max: 25.5
+ map equation: "0.1x"
+ 12v Voltage:
+ bit_start: 8
+ # 12v supply voltage
+ data type: u8
+ units: Volts
+ scaled min: 0
+ scaled max: 25.5
+ map equation: "0.1x"
+ SDC Voltage:
+ bit_start: 16
+ # Voltage before ACU Latch
+ data type: u8
+ units: Volts
+ scaled min: 0
+ scaled max: 25.5
+ map equation: "0.1x"
+ Min Cell Voltage:
+ bit_start: 24
+ # Lowest cell voltage in accumulator
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Max Cell Temp:
+ bit_start: 32
+ # Hottest cell in accumulator
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Over Temp Error:
+ bit_start: 40
+ # Over temp (>60c)
+ data type: b
+ units: Bool
+ Over Voltage Error:
+ bit_start: 41
+ # Over voltage (>4.2v per cell)
+ data type: b
+ units: Bool
+ Under Voltage Error:
+ bit_start: 42
+ # Under voltage (<2.5v per cell)
+ data type: b
+ units: Bool
+ Over Current Error:
+ bit_start: 43
+ # Over current (discharge)
+ data type: b
+ units: Bool
+ Under Current Error:
+ bit_start: 44
+ # Over current (charging)
+ data type: b
+ units: Bool
+ Under Voltage 20v Warning:
+ bit_start: 45
+ # 20v GLV too low (<15?)
+ data type: b
+ units: Bool
+ Under Voltage 12v Warning:
+ bit_start: 46
+ # 12v supply too low (<10?)
+ data type: b
+ units: Bool
+ Under Voltage SDC Warning:
+ bit_start: 47
+ # SDC too low (<9?)
+ data type: b
+ units: Bool
+ Precharge Error:
+ bit_start: 48
+ # Precharge timed out
+ data type: b
+ units: Bool
+ IR- / Precharge State:
+ bit_start: 49
+ # 0: Open 1: Closed
+ data type: b
+ units: Bool
+ IR+ State:
+ bit_start: 50
+ # 0: Open 1: Closed
+ data type: b
+ units: Bool
+ Software Latch:
+ bit_start: 51
+ # 0: Open 1: Closed
+ data type: b
+ units: Bool
+ Reserved:
+ bit_start: 52-55
+ ACU Status 3:
+ MSG ID: 0x009
+ MSG LENGTH: 8
+ HV Input Voltage:
+ bit_start: 0
+ # 600v input voltage
+ data type: u16
+ units: Volts
+ scaled min: 0
+ scaled max: 655.35
+ map equation: "0.01x"
+ HV Output Voltage:
+ bit_start: 16
+ # 20v output voltage
+ data type: u16
+ units: Volts
+ scaled min: 0
+ scaled max: 655.35
+ map equation: "0.01x"
+ HV Input Current:
+ bit_start: 32
+ # 600v input current
+ data type: u16
+ units: Amps
+ scaled min: 0
+ scaled max: 65.535
+ map equation: "0.001x"
+ HV Output Current:
+ bit_start: 48
+ # 20v output current
+ data type: u16
+ units: Amps
+ scaled min: 0
+ scaled max: 65.535
+ map equation: "0.001x"
+ ACU Precharge:
+ MSG ID: 0x00A
+ MSG LENGTH: 1
+ Set TS Active:
+ bit_start: 0
+ # 0: shutdown, 1: go TS Active/Precharge
+ data type: b
+ units: Bool
+ ACU Config Charge Parameters:
+ MSG ID: 0x00B
+ MSG LENGTH: 4
+ Charge Voltage:
+ bit_start: 0
+ # Sets the Target Charging voltage
+ data type: u16
+ units: Volts
+ scaled min: 0
+ scaled max: 6553.5
+ map equation: "0.1x"
+ Charge Current:
+ bit_start: 16
+ # Sets the Target Charging Current
+ data type: u16
+ units: Amps
+ scaled min: 0
+ scaled max: 6553.5
+ map equation: "0.1x"
+ ACU Config Operational Parameters:
+ MSG ID: 0x00C
+ MSG LENGTH: 2
+ Minimium Cell Voltage:
+ bit_start: 0
+ # Sets the threshold for Minimum Cell Voltage before Shutdown
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Max Cell Temperature:
+ bit_start: 8
+ # Sets the threshold for Max Cell Temperature before Shutdown
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ ACU Cell Data 1:
+ MSG ID: 0x00D
+ MSG LENGTH: 64
+ Cell 0 Voltage:
+ bit_start: 0
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 0 Temp:
+ bit_start: 8
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 1 Voltage:
+ bit_start: 16
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 1 Temp:
+ bit_start: 24
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 2 Voltage:
+ bit_start: 32
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 2 Temp:
+ bit_start: 40
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 3 Voltage:
+ bit_start: 48
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 3 Temp:
+ bit_start: 56
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 4 Voltage:
+ bit_start: 64
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 4 Temp:
+ bit_start: 72
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 5 Voltage:
+ bit_start: 80
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 5 Temp:
+ bit_start: 88
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 6 Voltage:
+ bit_start: 96
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 6 Temp:
+ bit_start: 104
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 7 Voltage:
+ bit_start: 112
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 7 Temp:
+ bit_start: 120
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 8 Voltage:
+ bit_start: 128
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 8 Temp:
+ bit_start: 136
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 9 Voltage:
+ bit_start: 144
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 9 Temp:
+ bit_start: 152
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 10 Voltage:
+ bit_start: 160
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 10 Temp:
+ bit_start: 168
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 11 Voltage:
+ bit_start: 176
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 11 Temp:
+ bit_start: 184
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 12 Voltage:
+ bit_start: 192
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 12 Temp:
+ bit_start: 200
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 13 Voltage:
+ bit_start: 208
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 13 Temp:
+ bit_start: 216
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 14 Voltage:
+ bit_start: 224
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 14 Temp:
+ bit_start: 232
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 15 Voltage:
+ bit_start: 240
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 15 Temp:
+ bit_start: 248
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 16 Voltage:
+ bit_start: 256
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 16 Temp:
+ bit_start: 264
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 17 Voltage:
+ bit_start: 272
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 17 Temp:
+ bit_start: 280
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 18 Voltage:
+ bit_start: 288
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 18 Temp:
+ bit_start: 296
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 19 Voltage:
+ bit_start: 304
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 19 Temp:
+ bit_start: 312
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 20 Voltage:
+ bit_start: 320
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 20 Temp:
+ bit_start: 328
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 21 Voltage:
+ bit_start: 336
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 21 Temp:
+ bit_start: 344
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 22 Voltage:
+ bit_start: 352
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 22 Temp:
+ bit_start: 360
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 23 Voltage:
+ bit_start: 368
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 23 Temp:
+ bit_start: 376
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 24 Voltage:
+ bit_start: 384
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 24 Temp:
+ bit_start: 392
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 25 Voltage:
+ bit_start: 400
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 25 Temp:
+ bit_start: 408
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 26 Voltage:
+ bit_start: 416
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 26 Temp:
+ bit_start: 424
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 27 Voltage:
+ bit_start: 432
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 27 Temp:
+ bit_start: 440
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 28 Voltage:
+ bit_start: 448
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 28 Temp:
+ bit_start: 456
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 29 Voltage:
+ bit_start: 464
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 29 Temp:
+ bit_start: 472
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 30 Voltage:
+ bit_start: 480
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 30 Temp:
+ bit_start: 488
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 31 Voltage:
+ bit_start: 496
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 31 Temp:
+ bit_start: 504
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ ACU Cell Data 2:
+ MSG ID: 0x00E
+ MSG LENGTH: 64
+ Cell 32 Voltage:
+ bit_start: 0
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 32 Temp:
+ bit_start: 8
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 33 Voltage:
+ bit_start: 16
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 33 Temp:
+ bit_start: 24
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 34 Voltage:
+ bit_start: 32
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 34 Temp:
+ bit_start: 40
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 35 Voltage:
+ bit_start: 48
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 35 Temp:
+ bit_start: 56
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 36 Voltage:
+ bit_start: 64
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 36 Temp:
+ bit_start: 72
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 37 Voltage:
+ bit_start: 80
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 37 Temp:
+ bit_start: 88
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 38 Voltage:
+ bit_start: 96
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 38 Temp:
+ bit_start: 104
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 39 Voltage:
+ bit_start: 112
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 39 Temp:
+ bit_start: 120
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 40 Voltage:
+ bit_start: 128
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 40 Temp:
+ bit_start: 136
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 41 Voltage:
+ bit_start: 144
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 41 Temp:
+ bit_start: 152
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 42 Voltage:
+ bit_start: 160
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 42 Temp:
+ bit_start: 168
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 43 Voltage:
+ bit_start: 176
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 43 Temp:
+ bit_start: 184
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 44 Voltage:
+ bit_start: 192
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 44 Temp:
+ bit_start: 200
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 45 Voltage:
+ bit_start: 208
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 45 Temp:
+ bit_start: 216
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 46 Voltage:
+ bit_start: 224
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 46 Temp:
+ bit_start: 232
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 47 Voltage:
+ bit_start: 240
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 47 Temp:
+ bit_start: 248
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 48 Voltage:
+ bit_start: 256
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 48 Temp:
+ bit_start: 264
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 49 Voltage:
+ bit_start: 272
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 49 Temp:
+ bit_start: 280
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 50 Voltage:
+ bit_start: 288
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 50 Temp:
+ bit_start: 296
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 51 Voltage:
+ bit_start: 304
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 51 Temp:
+ bit_start: 312
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 52 Voltage:
+ bit_start: 320
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 52 Temp:
+ bit_start: 328
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 53 Voltage:
+ bit_start: 336
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 53 Temp:
+ bit_start: 344
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 54 Voltage:
+ bit_start: 352
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 54 Temp:
+ bit_start: 360
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 55 Voltage:
+ bit_start: 368
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 55 Temp:
+ bit_start: 376
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 56 Voltage:
+ bit_start: 384
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 56 Temp:
+ bit_start: 392
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 57 Voltage:
+ bit_start: 400
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 57 Temp:
+ bit_start: 408
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 58 Voltage:
+ bit_start: 416
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 58 Temp:
+ bit_start: 424
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 59 Voltage:
+ bit_start: 432
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 59 Temp:
+ bit_start: 440
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 60 Voltage:
+ bit_start: 448
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 60 Temp:
+ bit_start: 456
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 61 Voltage:
+ bit_start: 464
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 61 Temp:
+ bit_start: 472
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 62 Voltage:
+ bit_start: 480
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 62 Temp:
+ bit_start: 488
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 63 Voltage:
+ bit_start: 496
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 63 Temp:
+ bit_start: 504
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ ACU Cell Data 3:
+ MSG ID: 0x00F
+ MSG LENGTH: 64
+ Cell 64 Voltage:
+ bit_start: 0
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 64 Temp:
+ bit_start: 8
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 65 Voltage:
+ bit_start: 16
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 65 Temp:
+ bit_start: 24
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 66 Voltage:
+ bit_start: 32
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 66 Temp:
+ bit_start: 40
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 67 Voltage:
+ bit_start: 48
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 67 Temp:
+ bit_start: 56
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 68 Voltage:
+ bit_start: 64
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 68 Temp:
+ bit_start: 72
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 69 Voltage:
+ bit_start: 80
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 69 Temp:
+ bit_start: 88
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 70 Voltage:
+ bit_start: 96
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 70 Temp:
+ bit_start: 104
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 71 Voltage:
+ bit_start: 112
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 71 Temp:
+ bit_start: 120
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 72 Voltage:
+ bit_start: 128
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 72 Temp:
+ bit_start: 136
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 73 Voltage:
+ bit_start: 144
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 73 Temp:
+ bit_start: 152
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 74 Voltage:
+ bit_start: 160
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 74 Temp:
+ bit_start: 168
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 75 Voltage:
+ bit_start: 176
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 75 Temp:
+ bit_start: 184
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 76 Voltage:
+ bit_start: 192
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 76 Temp:
+ bit_start: 200
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 77 Voltage:
+ bit_start: 208
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 77 Temp:
+ bit_start: 216
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 78 Voltage:
+ bit_start: 224
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 78 Temp:
+ bit_start: 232
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 79 Voltage:
+ bit_start: 240
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 79 Temp:
+ bit_start: 248
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 80 Voltage:
+ bit_start: 256
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 80 Temp:
+ bit_start: 264
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 81 Voltage:
+ bit_start: 272
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 81 Temp:
+ bit_start: 280
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 82 Voltage:
+ bit_start: 288
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 82 Temp:
+ bit_start: 296
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 83 Voltage:
+ bit_start: 304
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 83 Temp:
+ bit_start: 312
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 84 Voltage:
+ bit_start: 320
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 84 Temp:
+ bit_start: 328
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 85 Voltage:
+ bit_start: 336
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 85 Temp:
+ bit_start: 344
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 86 Voltage:
+ bit_start: 352
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 86 Temp:
+ bit_start: 360
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 87 Voltage:
+ bit_start: 368
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 87 Temp:
+ bit_start: 376
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 88 Voltage:
+ bit_start: 384
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 88 Temp:
+ bit_start: 392
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 89 Voltage:
+ bit_start: 400
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 89 Temp:
+ bit_start: 408
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 90 Voltage:
+ bit_start: 416
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 90 Temp:
+ bit_start: 424
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 91 Voltage:
+ bit_start: 432
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 91 Temp:
+ bit_start: 440
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 92 Voltage:
+ bit_start: 448
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 92 Temp:
+ bit_start: 456
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 93 Voltage:
+ bit_start: 464
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 93 Temp:
+ bit_start: 472
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 94 Voltage:
+ bit_start: 480
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 94 Temp:
+ bit_start: 488
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 95 Voltage:
+ bit_start: 496
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 95 Temp:
+ bit_start: 504
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ ACU Cell Data 4:
+ MSG ID: 0x010
+ MSG LENGTH: 64
+ Cell 96 Voltage:
+ bit_start: 0
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 96 Temp:
+ bit_start: 8
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 97 Voltage:
+ bit_start: 16
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 97 Temp:
+ bit_start: 24
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 98 Voltage:
+ bit_start: 32
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 98 Temp:
+ bit_start: 40
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 99 Voltage:
+ bit_start: 48
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 99 Temp:
+ bit_start: 56
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 100 Voltage:
+ bit_start: 64
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 100 Temp:
+ bit_start: 72
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 101 Voltage:
+ bit_start: 80
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 101 Temp:
+ bit_start: 88
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 102 Voltage:
+ bit_start: 96
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 102 Temp:
+ bit_start: 104
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 103 Voltage:
+ bit_start: 112
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 103 Temp:
+ bit_start: 120
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 104 Voltage:
+ bit_start: 128
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 104 Temp:
+ bit_start: 136
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 105 Voltage:
+ bit_start: 144
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 105 Temp:
+ bit_start: 152
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 106 Voltage:
+ bit_start: 160
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 106 Temp:
+ bit_start: 168
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 107 Voltage:
+ bit_start: 176
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 107 Temp:
+ bit_start: 184
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 108 Voltage:
+ bit_start: 192
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 108 Temp:
+ bit_start: 200
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 109 Voltage:
+ bit_start: 208
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 109 Temp:
+ bit_start: 216
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 110 Voltage:
+ bit_start: 224
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 110 Temp:
+ bit_start: 232
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 111 Voltage:
+ bit_start: 240
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 111 Temp:
+ bit_start: 248
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 112 Voltage:
+ bit_start: 256
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 112 Temp:
+ bit_start: 264
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 113 Voltage:
+ bit_start: 272
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 113 Temp:
+ bit_start: 280
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 114 Voltage:
+ bit_start: 288
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 114 Temp:
+ bit_start: 296
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 115 Voltage:
+ bit_start: 304
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 115 Temp:
+ bit_start: 312
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 116 Voltage:
+ bit_start: 320
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 116 Temp:
+ bit_start: 328
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 117 Voltage:
+ bit_start: 336
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 117 Temp:
+ bit_start: 344
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 118 Voltage:
+ bit_start: 352
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 118 Temp:
+ bit_start: 360
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 119 Voltage:
+ bit_start: 368
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 119 Temp:
+ bit_start: 376
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 120 Voltage:
+ bit_start: 384
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 120 Temp:
+ bit_start: 392
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 121 Voltage:
+ bit_start: 400
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 121 Temp:
+ bit_start: 408
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 122 Voltage:
+ bit_start: 416
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 122 Temp:
+ bit_start: 424
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 123 Voltage:
+ bit_start: 432
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 123 Temp:
+ bit_start: 440
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 124 Voltage:
+ bit_start: 448
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 124 Temp:
+ bit_start: 456
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 125 Voltage:
+ bit_start: 464
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 125 Temp:
+ bit_start: 472
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 126 Voltage:
+ bit_start: 480
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 126 Temp:
+ bit_start: 488
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 127 Voltage:
+ bit_start: 496
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 127 Temp:
+ bit_start: 504
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ ACU Cell Data 5:
+ MSG ID: 0x011
+ MSG LENGTH: 64
+ Cell 128 Voltage:
+ bit_start: 0
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 128 Temp:
+ bit_start: 8
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 129 Voltage:
+ bit_start: 16
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 129 Temp:
+ bit_start: 24
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 130 Voltage:
+ bit_start: 32
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 130 Temp:
+ bit_start: 40
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 131 Voltage:
+ bit_start: 48
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 131 Temp:
+ bit_start: 56
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 132 Voltage:
+ bit_start: 64
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 132 Temp:
+ bit_start: 72
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 133 Voltage:
+ bit_start: 80
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 133 Temp:
+ bit_start: 88
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 134 Voltage:
+ bit_start: 96
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 134 Temp:
+ bit_start: 104
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 135 Voltage:
+ bit_start: 112
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 135 Temp:
+ bit_start: 120
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 136 Voltage:
+ bit_start: 128
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 136 Temp:
+ bit_start: 136
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 137 Voltage:
+ bit_start: 144
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 137 Temp:
+ bit_start: 152
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 138 Voltage:
+ bit_start: 160
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 138 Temp:
+ bit_start: 168
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 139 Voltage:
+ bit_start: 176
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 139 Temp:
+ bit_start: 184
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 140 Voltage:
+ bit_start: 192
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 140 Temp:
+ bit_start: 200
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 141 Voltage:
+ bit_start: 208
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 141 Temp:
+ bit_start: 216
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 142 Voltage:
+ bit_start: 224
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 142 Temp:
+ bit_start: 232
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 143 Voltage:
+ bit_start: 240
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 143 Temp:
+ bit_start: 248
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 144 Voltage:
+ bit_start: 256
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 144 Temp:
+ bit_start: 264
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 145 Voltage:
+ bit_start: 272
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 145 Temp:
+ bit_start: 280
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 146 Voltage:
+ bit_start: 288
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 146 Temp:
+ bit_start: 296
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 147 Voltage:
+ bit_start: 304
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 147 Temp:
+ bit_start: 312
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 148 Voltage:
+ bit_start: 320
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 148 Temp:
+ bit_start: 328
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 149 Voltage:
+ bit_start: 336
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 149 Temp:
+ bit_start: 344
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 150 Voltage:
+ bit_start: 352
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 150 Temp:
+ bit_start: 360
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 151 Voltage:
+ bit_start: 368
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 151 Temp:
+ bit_start: 376
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 152 Voltage:
+ bit_start: 384
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 152 Temp:
+ bit_start: 392
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 153 Voltage:
+ bit_start: 400
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 153 Temp:
+ bit_start: 408
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 154 Voltage:
+ bit_start: 416
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 154 Temp:
+ bit_start: 424
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 155 Voltage:
+ bit_start: 432
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 155 Temp:
+ bit_start: 440
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 156 Voltage:
+ bit_start: 448
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 156 Temp:
+ bit_start: 456
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 157 Voltage:
+ bit_start: 464
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 157 Temp:
+ bit_start: 472
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 158 Voltage:
+ bit_start: 480
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 158 Temp:
+ bit_start: 488
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ Cell 159 Voltage:
+ bit_start: 496
+ # Cell n voltage
+ data type: u8
+ units: Volts
+ scaled min: 2
+ scaled max: 4.55
+ map equation: "0.01x+2"
+ Cell 159 Temp:
+ bit_start: 504
+ # Cell n temperature
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 63.75
+ map equation: "0.25x"
+ DC-DC Status:
+ MSG ID: 0x012
+ MSG LENGTH: 7
+ Input Voltage:
+ bit_start: 0
+ # ~20v for LV (LV only. Send 0 for HV)
+ data type: u16
+ units: Volts
+ scaled min: 0
+ scaled max: 65.535
+ map equation: "x/1000"
+ Output Voltage:
+ bit_start: 16
+ # ~12v for LV and ~20v for HV
+ data type: u16
+ units: Volts
+ scaled min: 0
+ scaled max: 65.535
+ map equation: "x/1000"
+ Input Current:
+ bit_start: 32
+ # Input current (LV only. Send 0 for HV)
+ data type: u8
+ units: Amps
+ scaled min: 0
+ scaled max: 25.5
+ map equation: "0.1x"
+ Output Current:
+ bit_start: 40
+ # Output current
+ data type: u8
+ units: Amps
+ scaled min: 0
+ scaled max: 25.5
+ map equation: "0.1x"
+ DC-DC Temp:
+ bit_start: 48
+ # Temp of DC-DC converter
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 255
+ map equation: "1x"
+ Inverter Status 1:
+ MSG ID: 0x013
+ MSG LENGTH: 6
+ AC current:
+ bit_start: 0
+ # 0.01 * current, int16_t
+ data type: u16
+ units: Amps
+ scaled min: -327.68
+ scaled max: 327.67
+ map equation: "0.01x-327.68"
+ DC current:
+ bit_start: 16
+ # 0.01 * current, int16_t
+ data type: u16
+ units: Amps
+ scaled min: 0
+ scaled max: 655.35
+ map equation: "0.01x"
+ Motor RPM:
+ bit_start: 32
+ # RPM, int16_t
+ data type: u16
+ units: RPM
+ scaled min: -32768
+ scaled max: 32767
+ map equation: "x-32768"
+ Inverter Status 2:
+ MSG ID: 0x014
+ MSG LENGTH: 6
+ U MOSFET temperature:
+ bit_start: 0
+ # Celsius + 40, uint8_t
+ data type: u8
+ units: Celsius
+ scaled min: -40
+ scaled max: 215
+ map equation: "x-40"
+ V MOSFET temperature:
+ bit_start: 16
+ # Celsius + 40, uint8_t
+ data type: u8
+ units: Celsius
+ scaled min: -40
+ scaled max: 215
+ map equation: "x-40"
+ W MOSFET temperature:
+ bit_start: 32
+ # Celsius + 40, uint8_t
+ data type: u8
+ units: Celsius
+ scaled min: -40
+ scaled max: 215
+ map equation: "x-40"
+ Inverter Status 3:
+ MSG ID: 0x015
+ MSG LENGTH: 2
+ Motor temperature:
+ bit_start: 0
+ # Celsius + 40, uint8_t
+ data type: u8
+ units: Celsius
+ scaled min: -40
+ scaled max: 215
+ map equation: "x-40"
+ Over voltage faults:
+ bit_start: 16
+ # TS above set max voltage
+ data type: b
+ units: Bool
+ Under voltage fault:
+ bit_start: 17
+ # TS below set min voltage
+ data type: b
+ units: Bool
+ Inv. overtemp fault:
+ bit_start: 18
+ # Inverter over set max temp
+ data type: b
+ units: Bool
+ Motor overtemp fault:
+ bit_start: 19
+ # Motor over set max temp
+ data type: b
+ units: Bool
+ Transistor fault:
+ bit_start: 20
+ # Mosfet or mosfet drive error
+ data type: b
+ units: Bool
+ Encoder fault:
+ bit_start: 21
+ # Encoder communication or calc error
+ data type: b
+ units: Bool
+ CAN fault:
+ bit_start: 22
+ # CAN message error or timeout
+ data type: b
+ units: Bool
+ Future use:
+ bit_start: 23
+ data type: b
+ units: Bool
+ Inverter Config:
+ MSG ID: 0x016
+ MSG LENGTH: 7
+ Max AC Current:
+ bit_start: 0
+ # Max AC Current
+ data type: u16
+ units: Amps
+ scaled min: -327.68
+ scaled max: 327.67
+ map equation: "0.01x-327.68"
+ Max DC Current:
+ bit_start: 16
+ # Max DC Current
+ data type: u16
+ units: Amps
+ scaled min: -327.68
+ scaled max: 327.67
+ map equation: "0.01x-327.68"
+ Absolute Max RPM Limit:
+ bit_start: 32
+ # 0: No limit n :limited at n RPM
+ data type: u16
+ units: RPM
+ scaled min: -32768
+ scaled max: 32767
+ map equation: "x-32768"
+ Motor direction:
+ bit_start: 48
+ # Write 1 inverts direction
+ data type: b
+ units: Enable
+ scaled min: "-"
+ scaled max: "-"
+ map equation: "-"
+ Inverter Command:
+ MSG ID: 0x017
+ MSG LENGTH: 8
+ Set AC Current:
+ bit_start: 0
+ # Commanded AC Current
+ data type: u16
+ units: Amps
+ scaled min: -327.68
+ scaled max: 327.67
+ map equation: "0.01x-327.68"
+ Set DC Current:
+ bit_start: 16
+ # Commanded DC Current
+ data type: u16
+ units: Amps
+ scaled min: -327.68
+ scaled max: 327.67
+ map equation: "0.01x-327.68"
+ RPM Limit:
+ bit_start: 32
+ # 0: No limit n :limited at n RPM
+ data type: u16
+ units: RPM
+ scaled min: -32768
+ scaled max: 32767
+ map equation: "x-32768"
+ Field weakening:
+ bit_start: 48
+ # Field weakening strength
+ data type: u8
+ units: Amps
+ scaled min: 0
+ scaled max: 25.5
+ map equation: "0.1x"
+ Drive enable:
+ bit_start: 56
+ # Write this to 1 every 100ms to enable inverter
+ data type: b
+ units: Enable
+ scaled min: "-"
+ scaled max: "-"
+ map equation: "-"
+ Fan Status:
+ MSG ID: 0x018
+ MSG LENGTH: 4
+ Fan Speed:
+ bit_start: 0
+ # Fan RPM
+ data type: u16
+ units: RPM
+ scaled min: 0
+ scaled max: 65535
+ map equation: "1x"
+ Input Voltage:
+ bit_start: 16
+ # 0-22
+ data type: u8
+ units: Volts
+ scaled min: 0
+ scaled max: 25.5
+ map equation: "0.1x"
+ Input Current:
+ bit_start: 24
+ # 0-10
+ data type: u8
+ units: Amps
+ scaled min: 0
+ scaled max: 25.5
+ map equation: "0.1x"
+ Fan Command:
+ MSG ID: 0x019
+ MSG LENGTH: 1
+ Fan Command:
+ bit_start: 0
+ # 0-100 Percent
+ data type: u8
+ units: '%'
+ scaled min: 0
+ scaled max: 255
+ map equation: "1x"
+ Dash Status:
+ MSG ID: 0x01A
+ MSG LENGTH: 3
+ BMS LED:
+ bit_start: 0
+ # State of BMS LED
+ data type: b
+ units: Bool
+ IMD LED:
+ bit_start: 1
+ # State of IMD LED
+ data type: b
+ units: Bool
+ BSPD LED:
+ bit_start: 2
+ # State of BSPD LED
+ data type: b
+ units: Bool
+ TS Button Data:
+ bit_start: 8
+ # MSB is state (1: pressed)
+ # Other 7 bits represent the time in 0.1s that it has been in that state
+ data type: s8
+ units: Seconds
+ scaled min: 0
+ scaled max: 12.7
+ map equation: "abs(x)/10"
+ RTD Button Data:
+ bit_start: 16
+ # MSB is state (1: pressed)
+ # Other 7 bits represent the time in 0.1s that it has been in that state
+ data type: s8
+ units: Seconds
+ scaled min: 0
+ scaled max: 12.7
+ map equation: "abs(x)/10"
+ Dash Config:
+ MSG ID: 0x01B
+ MSG LENGTH: 7
+ BMS LED:
+ bit_start: 0
+ # LED command (0: off, 1: on)
+ data type: b
+ units: Bool
+ IMD LED:
+ bit_start: 1
+ # LED command (0: off, 1: on)
+ data type: b
+ units: Bool
+ BSPD LED:
+ bit_start: 2
+ # LED command (0: off, 1: on)
+ data type: b
+ units: Bool
+ Button LED 1 R:
+ bit_start: 8
+ # Discarded input but still send it, set by ECU State
+ data type: u8
+ units: RGB
+ scaled min: 0
+ scaled max: 255
+ map equation: "1x"
+ Button LED 1 G:
+ bit_start: 16
+ # Discarded input but still send it, set by ECU State
+ data type: u8
+ units: RGB
+ scaled min: 0
+ scaled max: 255
+ map equation: "1x"
+ Button LED 1 B:
+ bit_start: 24
+ # Discarded input but still send it, set by ECU State
+ data type: u8
+ units: RGB
+ scaled min: 0
+ scaled max: 255
+ map equation: "1x"
+ Button LED 2 R:
+ bit_start: 32
+ # Discarded input but still send it, set by ECU State
+ data type: u8
+ units: RGB
+ scaled min: 0
+ scaled max: 255
+ map equation: "1x"
+ Button LED 2 G:
+ bit_start: 40
+ # Discarded input but still send it, set by ECU State
+ data type: u8
+ units: RGB
+ scaled min: 0
+ scaled max: 255
+ map equation: "1x"
+ Button LED 2 B:
+ bit_start: 48
+ # Discarded input but still send it, set by ECU State
+ data type: u8
+ units: RGB
+ scaled min: 0
+ scaled max: 255
+ map equation: "1x"
+ Steering Status:
+ MSG ID: 0x01C
+ MSG LENGTH: 2
+ Current Encoder:
+ bit_start: 0
+ # Position of knob (1-16)
+ data type: u4
+ units: Position
+ scaled min: 1
+ scaled max: 16
+ map equation: "1x"
+ Torque Map Encoder:
+ bit_start: 4
+ # Position of knob (1-16)
+ data type: u4
+ units: Position
+ scaled min: 1
+ scaled max: 16
+ map equation: "1x"
+ Regen:
+ bit_start: 8
+ # Position of knob (1-16)
+ data type: u4
+ units: Position
+ scaled min: 1
+ scaled max: 16
+ map equation: "1x"
+ Button 1:
+ bit_start: 12
+ # Button State
+ data type: b
+ units: Bool
+ Button 2:
+ bit_start: 13
+ # Button State
+ data type: b
+ units: Bool
+ Button 3:
+ bit_start: 14
+ # Button State
+ data type: b
+ units: Bool
+ Button 4:
+ bit_start: 15
+ # Button State
+ data type: b
+ units: Bool
+ Steering Config:
+ MSG ID: 0x01D
+ MSG LENGTH: 0
+ Reserved:
+ bit_start: 0
+ SAM Brake IR:
+ MSG ID: 0x01E
+ MSG LENGTH: 1
+ Temp:
+ bit_start: 0
+ # IR Temp of Brakes
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 255
+ map equation: "1x"
+ SAM Tire Temp:
+ MSG ID: 0x01F
+ MSG LENGTH: 4
+ Outside Temp:
+ bit_start: 0
+ # Furthest from chassis
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 255
+ map equation: "1x"
+ Outside Middle Temp:
+ bit_start: 8
+ # Middle of tire
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 255
+ map equation: "1x"
+ Inside Middle Temp:
+ bit_start: 16
+ # Middle of tire
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 255
+ map equation: "1x"
+ Inside Temp:
+ bit_start: 24
+ # Closest to chassis
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 255
+ map equation: "1x"
+ SAM IMU:
+ MSG ID: 0x020
+ MSG LENGTH: 12
+ Accel X:
+ bit_start: 0
+ # Acceleration in X-axis
+ data type: u16
+ units: Meters/s^2
+ scaled min: -327.68
+ scaled max: 327.67
+ map equation: "0.01x-327.68"
+ Accel Y:
+ bit_start: 16
+ # Acceleration in Y-axis
+ data type: u16
+ units: Meters/s^2
+ scaled min: -327.68
+ scaled max: 327.67
+ map equation: "0.01x-327.68"
+ Accel Z:
+ bit_start: 32
+ # Acceleration in Z-axis
+ data type: u16
+ units: Meters/s^2
+ scaled min: -327.68
+ scaled max: 327.67
+ map equation: "0.01x-327.68"
+ Gyro X:
+ bit_start: 48
+ # Angular velocity in X-axis
+ data type: u16
+ units: Meters/s^2
+ scaled min: -32.768
+ scaled max: 32.767
+ map equation: "0.001x-32.768"
+ Gyro Y:
+ bit_start: 64
+ # Angular velocity in Y-axis
+ data type: u16
+ units: Meters/s^2
+ scaled min: -32.768
+ scaled max: 32.767
+ map equation: "0.001x-32.768"
+ Gyro Z:
+ bit_start: 80
+ # Angular velocity in Z-axis
+ data type: u16
+ units: Meters/s^2
+ scaled min: -32.768
+ scaled max: 32.767
+ map equation: "0.001x-32.768"
+ SAM GPS 1:
+ MSG ID: 0x021
+ MSG LENGTH: 8
+ Latitude:
+ bit_start: 0
+ # Latitude in decimal degrees
+ data type: u32
+ units: Degrees
+ Longitude:
+ bit_start: 32
+ # Longitude in decimal degrees
+ data type: u32
+ units: Degrees
+ SAM GPS 2:
+ MSG ID: 0x022
+ MSG LENGTH: 8
+ Accuracy:
+ bit_start: 0
+ # GPS position accuracy
+ data type: u32
+ Attitude:
+ bit_start: 32
+ # Vehicle attitude
+ data type: u32
+ SAM GPS Time:
+ MSG ID: 0x023
+ MSG LENGTH: 8
+ Time:
+ bit_start: 0
+ # Time in seconds since GPS Epoch
+ data type: u32
+ Time of Week Ms:
+ bit_start: 32
+ # Time of week in milliseconds
+ data type: u32
+ SAM GPS Heading:
+ MSG ID: 0x024
+ MSG LENGTH: 4
+ Heading from North:
+ bit_start: 0
+ # Heading angle relative to true North
+ data type: u32
+ SAM Sus Pots:
+ MSG ID: 0x025
+ MSG LENGTH: 1
+ Suspension Angle:
+ bit_start: 0
+ # Pot Pos
+ data type: u8
+ units: degrees
+ scaled min: 0
+ scaled max: 255
+ map equation: "1x"
+ SAM TOF:
+ MSG ID: 0x026
+ MSG LENGTH: 2
+ Height:
+ bit_start: 0
+ # Ride Height
+ data type: u16
+ units: mm
+ scaled min: 0
+ scaled max: 255
+ map equation: "x/256"
+ SAM Rear Wheelspeed:
+ MSG ID: 0x027
+ MSG LENGTH: 2
+ Speed:
+ bit_start: 0
+ # Wheel RPM
+ data type: u16
+ units: RPM
+ scaled min: -3276.8
+ scaled max: 3276.7
+ map equation: "0.1x--3276.8"
+ SAM Pushrod Force:
+ MSG ID: 0x028
+ MSG LENGTH: 2
+ Load Force:
+ bit_start: 0
+ # Pushrod Force
+ data type: u16
+ units: N
+ scaled min: -3276.8
+ scaled max: 3276.7
+ map equation: "0.1x--3276.8"
+ TCM Status:
+ MSG ID: 0x029
+ MSG LENGTH: 8
+ Connection Status:
+ bit_start: 0
+ # 1: OK, 0: Timeout
+ data type: b
+ units: Bool
+ MQTT Status:
+ bit_start: 1
+ # 1: OK, 0: Timeout
+ data type: b
+ units: Bool
+ Epic Shelter Status:
+ bit_start: 2
+ # 1: In Progress, 0: Idle
+ data type: b
+ units: Bool
+ Camera Status:
+ bit_start: 3
+ # 1: Recording, 0: Idle
+ data type: b
+ units: Bool
+ Reserved:
+ bit_start: 4-7
+ Ping:
+ bit_start: 8
+ # Mapache ping (upload)
+ data type: u16
+ units: ms
+ Cache Size:
+ bit_start: 24
+ # # 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
+ # core 0 frequency in MHz
+ data type: u16
+ units: '%'
+ CPU 0 Util:
+ bit_start: 16
+ # core 0 utilization in %
+ data type: u8
+ units: '%'
+ CPU 1 Freq:
+ bit_start: 24
+ # core 1 frequency in MHz
+ data type: u16
+ units: '%'
+ CPU 1 Util:
+ bit_start: 40
+ # core 1 utilization in %
+ data type: u8
+ CPU 2 Freq:
+ bit_start: 48
+ # core 2 frequency in MHz
+ data type: u16
+ units: '%'
+ CPU 2 Util:
+ bit_start: 64
+ # core 2 utilization in %
+ data type: u8
+ CPU 3 Freq:
+ bit_start: 72
+ # core 3 frequency in MHz
+ data type: u16
+ CPU 3 Util:
+ bit_start: 88
+ # core 3 utilization in %
+ data type: u8
+ CPU 4 Freq:
+ bit_start: 96
+ # core 4 frequency in MHz
+ data type: u16
+ CPU 4 Util:
+ bit_start: 112
+ # core 4 utilization in %
+ data type: u8
+ CPU 5 Freq:
+ bit_start: 120
+ # core 5 frequency in MHz
+ data type: u16
+ CPU 5 Util:
+ bit_start: 136
+ # core 5 utilization in %
+ data type: u8
+ units: Watts
+ CPU Total Util:
+ bit_start: 144
+ # total cpu utilization in %
+ data type: u8
+ RAM Total:
+ bit_start: 152
+ # total memory in MB
+ data type: u16
+ RAM Used:
+ bit_start: 168
+ # used memory in MB
+ data type: u16
+ RAM Util:
+ bit_start: 184
+ # memory utilization in %
+ data type: u8
+ GPU Util:
+ bit_start: 192
+ # gpu utilization in %
+ data type: u8
+ GPU Freq:
+ bit_start: 200
+ # gpu frequency in MHz
+ data type: u16
+ Disk Total:
+ bit_start: 216
+ # total disk space in MB
+ data type: u32
+ Disk Used:
+ bit_start: 248
+ # used disk space in MB
+ data type: u32
+ Disk Util:
+ bit_start: 280
+ # disk utilization in %
+ data type: u8
+ units: Celsius
+ CPU Temp:
+ bit_start: 288
+ # cpu temp in ˚C
+ data type: u8
+ GPU Temp:
+ bit_start: 296
+ # gpu temp in ˚C
+ data type: u8
+ Voltage Draw:
+ bit_start: 304
+ # voltage draw in mV
+ data type: u16
+ Current Draw:
+ bit_start: 320
+ # current draw in mA
+ data type: u16
+ Power Draw:
+ bit_start: 336
+ # power draw in mW
+ data type: u16
+ units: Celsius
+ Dash Warning Flags:
+ MSG ID: 0x02B
+ MSG LENGTH: 1
+ BSE APPS Violation:
+ bit_start: 0
+ # 1: Violation, 0: OK
+ data type: b
+ units: Bool
+ Reserved:
+ bit_start: 1
+ Reserved:
+ bit_start: 2
+ Reserved:
+ bit_start: 3
+ Reserved:
+ bit_start: 4
+ Reserved:
+ bit_start: 5
+ Reserved:
+ bit_start: 6
+ Reserved:
+ bit_start: 7
+ Specific Brake IR:
+ MSG ID: 0x02C
+ MSG LENGTH: 2
+ Wheel identifier:
+ bit_start: 0
+ # Wheel identifier according to the wiki
+ data type: u8
+ Temp:
+ bit_start: 8
+ # IR Temp of Brakes
+ data type: u8
+ units: Celsius
+ scaled min: 0
+ scaled max: 255
+ map equation: "1x"
+ ECU Ping Information:
+ MSG ID: 0x02D
+ MSG LENGTH: 3
+ Online pings:
+ bit_start: 0
+ # Literal copy of ECU Status's status bit map
+ data type: b[24]
+ units: Bool map
+ ECU Pedals Data:
+ MSG ID: 0x02E
+ MSG LENGTH: 10
+ APPS1_SIGNAL:
+ bit_start: 0
+ # APPS 1 Signal
+ data type: u16
+ units: '%'
+ scaled min: 0
+ scaled max: 100
+ map equation: "x/655.35"
+ APPS2_SIGNAL:
+ bit_start: 16
+ # APPS 2 Signal
+ data type: u16
+ units: '%'
+ scaled min: 0
+ scaled max: 100
+ map equation: "x/655.35"
+ BSE_SIGNAL:
+ bit_start: 32
+ # Brake Force Signal
+ data type: u16
+ units: '%'
+ scaled min: 0
+ scaled max: 100
+ map equation: "x/655.35"
+ BRAKE_F_SIGNAL:
+ bit_start: 48
+ # Brake Pressure Signal
+ data type: u16
+ units: '%'
+ scaled min: 0
+ scaled max: 100
+ map equation: "x/655.35"
+ BRAKE_R_SIGNAL:
+ bit_start: 48
+ # Brake Pressure Signal
+ data type: u16
+ units: '%'
+ scaled min: 0
+ scaled max: 100
+ map equation: "x/655.35"
+ GPS LAT:
+ MSG ID: 0x031
+ MSG LENGTH: 8
+ LAT:
+ bit_start: 0
+ # lattitude
+ data type: double
+ GPS LON:
+ MSG ID: 0x032
+ MSG LENGTH: 8
+ LON:
+ bit_start: 0
+ # longitude
+ data type: double
+ GPS ALT:
+ MSG ID: 0x033
+ MSG LENGTH: 8
+ ALT:
+ bit_start: 0
+ # altitude
+ data type: double
+ GPS PX:
+ MSG ID: 0x034
+ MSG LENGTH: 8
+ Theta:
+ bit_start: 0
+ data type: i16
+ map equation: "x/1000"
+ Acc:
+ bit_start: 16
+ data type: i16
+ map equation: "x/100"
+ status:
+ bit_start: 32
+ data type: u32
+ GPS QY:
+ MSG ID: 0x035
+ MSG LENGTH: 8
+ Theta:
+ bit_start: 0
+ data type: i16
+ map equation: "x/1000"
+ Acc:
+ bit_start: 16
+ data type: i16
+ map equation: "x/100"
+ status:
+ bit_start: 32
+ data type: u32
+ GPS RZ:
+ MSG ID: 0x036
+ MSG LENGTH: 8
+ Theta:
+ bit_start: 0
+ data type: i16
+ map equation: "x/1000"
+ Acc:
+ bit_start: 16
+ data type: i16
+ map equation: "x/100"
+ status:
+ bit_start: 32
+ data type: u32
+ UVW DGPS:
+ MSG ID: 0x030
+ MSG LENGTH: 6
+ DGPS_U:
+ bit_start: 0
+ # U
+ data type: i16
+ map equation: "x/100"
+ DGPS_V:
+ bit_start: 16
+ # V
+ data type: i16
+ map equation: "x/100"
+ DGPS_W:
+ bit_start: 32
+ # W
+ data type: i16
+ map equation: "x/100"
+
+Custom CAN ID:
+ DTI Control 1:
+ CAN ID: 116
+ Length: 2
+ signals:
+ - name: "Target AC Current"
+ bit_start: 0
+ # This command sets the target motor AC current (peak, not
+ # RMS). When the controller receives this message, it
+ # automatically switches to current control mode.
+ # This value must not be above the limits of the inverter 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 parameters)
+
+ DTI Control 2:
+ CAN ID: 216
+ Length: 2
+ signals:
+ - name: "Target Brake Current"
+ bit_start: 0
+ # 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.
+
+ DTI Control 3:
+ CAN ID: 316
+ Length: 4
+ signals:
+ - name: "Target ERPM"
+ bit_start: 0
+ # This command 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
+
+ DTI Control 4:
+ CAN ID: 416
+ Length: 2
+ signals:
+ - name: "Target Position"
+ bit_start: 0
+ # This value targets the desired position of the motor in degrees.
+ # This command is used to hold a position of the motor.
+ # This feature is enabled only if encoder is used as position
+ # sensor. The value has to be multiplied by 10 before sending.
+
+ DTI Control 5:
+ CAN ID: 516
+ Length: 2
+ signals:
+ - name: "R-AC Current"
+ bit_start: 0
+ # This command sets a relative AC current to the minimum and
+ # maximum limits set by configuration. This achieves the same
+ # function as the “Set AC current” command. Gives you a freedom
+ # to send values between -100,0% and 100,0%. You do not need
+ # to know the motor limit parameters.
+ # This value must be between -100 and 100 and must be
+ # multiplied by 10 before sending.
+
+ DTI Control 6:
+ CAN ID: 616
+ Length: 2
+ signals:
+ - name: "R-AC Brake Current"
+ bit_start: 0
+ # Targets the relative brake current of the motor. It will result
+ # negative torque relatively to the forward direction of the motor.
+ # This value must be between 0 and 100 and must be multiplied
+ # by 10 before sending Gives you a freedom to send values
+ # between 0% and 100,0%. You do not need to know the motor
+ # limit parameters.
+ # This value must be between 0 and 100 and has to be multiplied
+ # by 10 before sending
+
+ DTI Control 7:
+ CAN ID: 716
+ Length: 1
+ signals:
+ - name: "Digital Output 1"
+ bit_start: 0
+ # Sets the digital output 1 to HIGH (1) or LOW (0) state
+ - name: "Digital Output 2"
+ bit_start: 1
+ # Sets the digital output 1 to HIGH (1) or LOW (0) state
+ - name: "Digital Output 3"
+ bit_start: 2
+ # Sets the digital output 1 to HIGH (1) or LOW (0) state
+ - name: "Digital Output 4"
+ bit_start: 3
+ # Sets the digital output 1 to HIGH (1) or LOW (0) state
+
+ DTI Control 8:
+ CAN ID: 816
+ Length: 2
+ signals:
+ - name: "Max AC Current"
+ bit_start: 0
+ # This value determines the maximum allowable drive current on
+ # the AC side. With this function you are able maximize the
+ # maximum torque on the motor.
+ # The value must be multiplied by 10 before sending.
+
+ DTI Control 9:
+ CAN ID: 916
+ Length: 2
+ signals:
+ - name: "Max Brake AC Current"
+ bit_start: 0
+ # This value sets the maximum allowable brake current on the AC
+ # side.
+ # This value must be multiplied by 10 before sending, only
+ # negative currents are accepted.
+
+ DTI Control 10:
+ CAN ID: A16
+ Length: 2
+ signals:
+ - name: "Max DC Current"
+ bit_start: 0
+ # This value determines the maximum allowable drive current on
+ # the DC side. With this command the BMS can limit the
+ # maximum allowable battery discharge current.
+ # The value has to be multiplied by 10 before sending.
+
+ DTI Control 11:
+ CAN ID: B16
+ Length: 2
+ signals:
+ - name: "Max Brake DC Current"
+ bit_start: 0
+ # This value determines the maximum allowable brake current
+ # on the DC side. With this command the BMS can limit the
+ # maximum allowable battery charge current.
+ # The value has to be multiplied by 10 before sending. Only
+ # negative currents are accepted.
+
+ DTI Control 12:
+ CAN ID: C16
+ Length: 1
+ signals:
+ - name: "Drive Enable"
+ bit_start: 0
+ # 0: Drive not allowed
+ # 1: Drive allowed
+ # Only 0 and 1 values are accepted. Must be sent periodically to
+ # be enabled.
+
+ DTI Data 1:
+ CAN ID: 2016
+ Length: 8
+ signals:
+ - name: "ERPM"
+ bit_start: 0
+ # Electrical RPM
+ # Equation: ERPM = Motor RPM * number of the motor pole pairs.
+ - name: "Duty Cycle"
+ bit_start: 32
+ # The controller duty cycle. The sign of this value will represent
+ # whether the motor is running(positive) current or regenerating
+ # (negative) current.
+ - name: "Input Voltage"
+ bit_start: 48
+ # Input voltage is the DC voltage.
+
+ DTI Data 2:
+ CAN ID: 2116
+ Length: 8
+ signals:
+ - name: "AC Current"
+ bit_start: 0
+ # The motor current. The sign of this value represents whether the
+ # motor is running(positive) current or regenerating (negative)
+ # current.
+ - name: "DC Current"
+ bit_start: 16
+ # DC Current: Current on DC side. The sign of this value
+ # represents whether the motor is running(positive) current or
+ # regenerating (negative) current.
+ - name: "RESERVED"
+ bit_start: 32
+ # Filled with FF’s. For future use.
+
+ DTI Data 3:
+ CAN ID: 2216
+ Length: 8
+ signals:
+ - name: "Controller Temp"
+ bit_start: 0
+ # Temperature of the inverter semiconductors.
+ - name: "Motor Temp"
+ bit_start: 16
+ # Temperature of the motor measured by the inverter
+ - name: "Fault Codes"
+ bit_start: 32
+ # 0x00 : NO FAULTS
+ # 0x01 : Overvoltage - The input voltage is higher than the set
+ # maximum.
+ # 0x02 : Undervoltage - The input voltage is lower than the set
+ # minimum.
+ # 0x03 : DRV - Transistor or transistor drive error
+ # 0x04 : ABS. Overcurrent - The AC current is higher than the
+ # set absolute maximum current.
+ # 0x05 : CTLR Overtemp. - The controller temperature is higher
+ # than the set maximum.
+ # 0x06 : Motor Overtemp. - The motor temperature is higher than
+ # the set maximum.
+ # 0x07 : Sensor wire fault - Something went wrong with the
+ # sensor differential signals.
+ # 0x08 : Sensor general fault - An error occurred while
+ # processing the sensor signals
+ # 0x09 : CAN Command error - CAN message received contains
+ # parameter out of boundaries
+ # 0x0A : Analog input error – Redundant output out of range
+ - name: "RESERVED"
+ bit_start: 40
+ # Filled with FF’s. For future use.
+
+ DTI Data 4:
+ CAN ID: 2316
+ Length: 8
+ signals:
+ - name: "FOC Id"
+ bit_start: 0
+ # FOC algorithm component Id.
+ - name: "FOC Iq"
+ bit_start: 32
+ # FOC algorithm component Id\q.
+
+ DTI Data 5:
+ CAN ID: 2416
+ Length: 8
+ signals:
+ - name: "Throttle"
+ bit_start: 0
+ # Throttle signal derived from analog inputs or CAN2
+ - name: "Brake"
+ bit_start: 8
+ # Brake signal derived from analog inputs or CAN2
+ - name: "Digital input 1"
+ bit_start: 16
+ # 1: Digital input is active
+ # 0: Digital input is inactive
+ - name: "Digital input 2"
+ bit_start: 17
+ - name: "Digital input 3"
+ bit_start: 18
+ - name: "Digital input 4"
+ bit_start: 19
+ - name: "Digital output 1"
+ bit_start: 20
+ # 1: Digital output is active
+ # 0: Digital output is inactive
+ - name: "Digital output 2"
+ bit_start: 21
+ - name: "Digital output 3"
+ bit_start: 22
+ - name: "Digital output 4"
+ bit_start: 23
+ - name: "Drive Enable"
+ bit_start: 24
+ # 1: Drive enabled
+ # 0: Drive disabled
+ # Drive can be enabled/disbled by the digital input or/and via
+ # CAN2 interface
+ - name: "Capacitor temp limit"
+ bit_start: 32
+ # 1: Capacitor temperature limit active
+ # 0: Capacitor temperature limit inactive
+ # The inverter can limit the output power to not to overheat the
+ # internal capacitors. (only valid HW version 3.6 or newer)
+ - name: "DC current limit"
+ bit_start: 33
+ # 1: DC current limit active
+ # 0: DC current limit inactive
+ - name: "Drive enable limit"
+ bit_start: 34
+ # 1: Drive enable limit active
+ # 0: Drive enable limit inactive
+ # Indicates whether the drive enable limitation is active or inactive.
+ # Used for software development purposes. For true indication
+ # of the drive state please use byte 3, bit 24 of this message.
+ - name: "IGBT acceleration temperature limit"
+ bit_start: 35
+ # 1: IGBT acceleration limit active
+ # 0: IGBT acceleration limit inactive
+ - name: "IGBT temperature limit"
+ bit_start: 36
+ # 1: IGBT temperature limit active
+ # 0: IGBT temperature limit inactive
+ - name: "Input voltage limit"
+ bit_start: 37
+ # 1: Input voltage limit active
+ # 0: Input voltage limit inactive
+ - name: "Motor acceleration temperature limit"
+ bit_start: 38
+ # 1: Motor acceleration temperature limit active
+ # 0: Motor acceleration temperature limit inactive
+ - name: "Motor temperature limit"
+ bit_start: 39
+ # 1: Motor temperature limit active
+ # 0: Motor temperature limit inactive
+ - name: "RPM min limit"
+ bit_start: 40
+ # 1: RPM min limit active
+ # 0: RPM min limit inactive
+ - name: "RPM max limit"
+ bit_start: 41
+ # 1: RPM max limit active
+ # 0: RPM max limit inactive
+ - name: "Power limit"
+ bit_start: 42
+ # 1: Power limit by configuration active
+ # 0: Power limit by configuration inactive
+ - name: "RESERVED"
+ bit_start: 43
+ # Set to 0.
+ - name: "RESERVED"
+ bit_start: 48
+ # Filled with FF’s. For future use.
+ - name: "CAN Version"
+ bit_start: 56
+ # Indicates the CAN map version. For ex: 23 -> 2,3 (V2,3)
+
+ IMD general:
+ CAN ID: 18FF01F4
+ Length: 8
+ signals:
+ - name: "R_Iso_Corrected"
+ bit_start: 0
+ - name: "R_Iso_Status"
+ bit_start: 16
+ - name: "Iso_Meas_Count"
+ bit_start: 24
+ - name: "Status"
+ bit_start: 32
+ # Bit 0: true = Device error active
+ # Bit 1: true = HV_pos connection failure
+ # Bit 2: true = HV_neg connection failure
+ # Bit 3: true = Earth connection failure
+ # Bit 4: true = Iso Alarm (iso value below threshold error)
+ # Bit 5: true = Iso Warning (iso value below threshold warning)
+ # Bit 6: true = Iso Outdated (value „Time elapsed since lst measurement“ > = „measurement timeout“)
+ # Bit 7: true = Unbalance Alarm (unbalance value below threshold)
+ # Bit 8: true = Undervoltage Alarm
+ # Bit 9: true = Unsafe to Start
+ # Bit 10: true = Earthlift open
+ - name: "Activity"
+ bit_start: 48
+ - name: "RESERVED"
+ bit_start: 56
+ # Filled with FF’s
+
+ IMD isolation info:
+ CAN ID: 18EFF4FE
+ Length: 0
+ signals: []
+
+ IMD voltage:
+ CAN ID: 18EFF4FE
+ Length: 0
+ signals: []
+
+ IMD IT-system:
+ CAN ID: 18EFF4FE
+ Length: 0
+ signals: []
+
+ IMD request:
+ CAN ID: 18EFF4FE
+ Length: 0
+ signals: []
+
+ IMD response:
+ CAN ID: 23
+ Length: 0
+ signals: []
+
+ Charger Data:
+ CAN ID: 18FF50E5
+ Length: 8
+ signals:
+ - name: "Output Voltage"
+ bit_start: 0
+ - name: "Output Current"
+ bit_start: 16
+ - name: "Hardware Failure"
+ bit_start: 17
+ # Bit 0: Hardware Failure: 0-Normal, 1-Error
+ - name: "OverTemp"
+ bit_start: 18
+ # Bit 1: OverTemp: 0-Normal, 1-Error
+ - name: "Input Voltage Error"
+ bit_start: 19
+ # Bit 2: Input Voltage: 0-Normal, 1-Wrong input voltage
+ - name: "Connection Error"
+ bit_start: 20
+ # Bit 3: Starting State: 0-Correct, 1-Wrong polarity or NC
+ - name: "Communication State"
+ bit_start: 21
+ # Bit 4: Communication State: 0-Normal, 1-Timeout
+ - name: "RESERVED"
+ bit_start: 24
+
+ Charger Control:
+ CAN ID: 1806E5F4
+ Length: 5
+ signals:
+ - name: "Set Voltage"
+ bit_start: 0
+ - name: "Set Current"
+ bit_start: 16
+ - name: "Charge Enable"
+ bit_start: 17
+ # 1: Start Charging
+ # 0: Stop Charging
+
+ EM Measurement:
+ CAN ID: 10d
+ Length: 8
+ signals:
+ - name: "Current"
+ bit_start: 0
+ # TS Current
+ - name: "Voltage"
+ bit_start: 32
+ # TS Voltage
+
+ EM Status:
+ CAN ID: 40d
+ Length: 8
+ signals:
+ - name: "Violation"
+ bit_start: 0
+ # Violation occured?
+ - name: "Logging"
+ bit_start: 1
+ # Logging enabled?
+ - name: "Energy"
+ bit_start: 8
+ # Energy used in Wh
+
+ EM Temperature:
+ CAN ID: 60d
+ Length: 8
+ signals:
+ - name: "Mux Signal"
+ bit_start: 0-2
+ # n = [0-6]
+ - name: "Num Sensors"
+ bit_start: 3-7
+ # Number of sensors up to 32
+ - name: "Min Temp"
+ bit_start: 8
+ # Min temp of all sensors
+ - name: "Max Temp"
+ bit_start: 16
+ # Max temp of all sensors
+ - name: "Temp 5n"
+ bit_start: 24
+ # [0,5,10,15,20,25,30] based on n above
+ - name: "Temp 5n+1"
+ bit_start: 32
+ - name: "Temp 5n+2"
+ bit_start: 40
+ - name: "Temp 5n+3"
+ bit_start: 48
+ - name: "Temp 5n+4"
+ bit_start: 56
+
+ EM Team Data 1:
+ CAN ID: 30d
+ Length: 8
+ signals:
+ - name: "Team Signal 1"
+ bit_start: 0
+ # Fuck if I know
+ - name: "Team Signal 2"
+ bit_start: 32
+ # Fuck if I know
+
+ EM Team Data 2:
+ CAN ID: 30e
+ Length: 8
+ signals:
+ - name: "Team Signal 3"
+ bit_start: 0
+ # Fuck if I know
+ - name: "Team Signal 4"
+ bit_start: 32
+ # Fuck if I know
+
+GR ID:
+ CCU : "0x2A"
+ DTI Inverter: "0x00"
+ Energy Meter: "0x00"
+ Charger: "0x00"
+ IMD: "0x00"
+ Debugger: "0x01"
+ ECU: "0x02"
+ ACU: "0x03"
+ TCM: "0x04"
+ Dash Panel: "0x05"
+ Steering Wheel: "0x06"
+ GR Inverter 1: "0x08"
+ GR Inverter 2: "0x09"
+ GR Inverter 3: "0x0A"
+ GR Inverter 4: "0x0B"
+ Charging SDC: "0x0C"
+ Fan Controller 1: "0x0D"
+ Fan Controller 2: "0x0E"
+ Fan Controller 3: "0x0F"
+ Fan Controller 4: "0x10"
+ Fan Controller 5: "0x11"
+ Fan Controller 6: "0x12"
+ Fan Controller 7: "0x13"
+ Fan Controller 8: "0x14"
+ SAM1: "0x15"
+ SAM2: "0x16"
+ SAM3: "0x17"
+ SAM4: "0x18"
+ SAM5: "0x19"
+ SAM6: "0x1A"
+ SAM7: "0x1B"
+ SAM8: "0x1C"
+ SAM9: "0x1D"
+ SAM10: "0x1E"
+ SAM11: "0x1F"
+ SAM12: "0x20"
+ SAM13: "0x21"
+ SAM14: "0x22"
+ SAM15: "0x23"
+ SAM16: "0x24"
+ SAM17: "0x25"
+ SAM18: "0x26"
+ SAM19: "0x27"
+ SAM20: "0x28"
+ LV DC-DC: "0x29"
+ DGPS: "0x30"
+ ALL: "0xFF"
diff --git a/Autogen/CAN/Doc/output.dbc b/Autogen/CAN/Doc/output.dbc
new file mode 100644
index 000000000..8ee9813c6
--- /dev/null
+++ b/Autogen/CAN/Doc/output.dbc
@@ -0,0 +1,1312 @@
+VERSION ""
+
+NS_ :
+
+BS_:
+
+BU_: ACU Charger Charging_SDC DGPS DTI_Inverter Dash_Panel Debugger ECU Energy_Meter Fan_Controller_1 Fan_Controller_2 Fan_Controller_3 Fan_Controller_4 Fan_Controller_5 Fan_Controller_6 Fan_Controller_7 Fan_Controller_8 GR_Inverter_1 GR_Inverter_2 GR_Inverter_3 GR_Inverter_4 IMD LV_DC_DC SAM1 SAM10 SAM11 SAM12 SAM13 SAM14 SAM15 SAM16 SAM17 SAM18 SAM19 SAM2 SAM20 SAM3 SAM4 SAM5 SAM6 SAM7 SAM8 SAM9 Steering_Wheel TCM ALL
+
+BO_ 2147680257 ACU_Debug_2_0_to_Debugger: 8 ACU
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger
+
+BO_ 2147680769 ACU_Ping_to_Debugger: 4 ACU
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2147680770 ACU_Ping_to_ECU: 4 ACU
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2147682050 ACU_ACU_Status_1_to_ECU: 8 ACU
+ SG_ Accumulator_Voltage : 0|16@1+ (0.01,0) [0|655.35] "Volts" ECU
+ SG_ TS_Voltage : 16|16@1+ (0.01,0) [0|655.35] "Volts" ECU
+ SG_ Accumulator_Current : 32|16@1- (0.01,0) [-327.68|327.67] "Amps" ECU
+ SG_ Accumulator_SOC : 48|8@1+ (0.392157,0) [0|100] "%" ECU
+ SG_ GLV_SOC : 56|8@1+ (0.392157,0) [0|100] "%" ECU
+
+BO_ 2147682306 ACU_ACU_Status_2_to_ECU: 7 ACU
+ SG_ 20v_Voltage : 0|8@1+ (0.1,0) [0|25.5] "Volts" ECU
+ SG_ 12v_Voltage : 8|8@1+ (0.1,0) [0|25.5] "Volts" ECU
+ SG_ SDC_Voltage : 16|8@1+ (0.1,0) [0|25.5] "Volts" ECU
+ SG_ Min_Cell_Voltage : 24|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Max_Cell_Temp : 32|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Over_Temp_Error : 40|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Over_Voltage_Error : 41|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Under_Voltage_Error : 42|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Over_Current_Error : 43|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Under_Current_Error : 44|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Under_Voltage_20v_Warning : 45|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Under_Voltage_12v_Warning : 46|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Under_Voltage_SDC_Warning : 47|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Precharge_Error : 48|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ IR__Precharge_State : 49|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ IR_State : 50|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Software_Latch : 51|1@1+ (1,0) [0|0] "Bool" ECU
+
+BO_ 2147682562 ACU_ACU_Status_3_to_ECU: 8 ACU
+ SG_ HV_Input_Voltage : 0|16@1+ (0.01,0) [0|655.35] "Volts" ECU
+ SG_ HV_Output_Voltage : 16|16@1+ (0.01,0) [0|655.35] "Volts" ECU
+ SG_ HV_Input_Current : 32|16@1+ (0.001,0) [0|65.535] "Amps" ECU
+ SG_ HV_Output_Current : 48|16@1+ (0.001,0) [0|65.535] "Amps" ECU
+
+BO_ 2147684866 ACU_DC_DC_Status_to_ECU: 7 ACU
+ SG_ Input_Voltage : 0|16@1+ (0.001,0) [0|65.535] "Volts" ECU
+ SG_ Output_Voltage : 16|16@1+ (0.001,0) [0|65.535] "Volts" ECU
+ SG_ Input_Current : 32|8@1+ (0.1,0) [0|25.5] "Amps" ECU
+ SG_ Output_Current : 40|8@1+ (0.1,0) [0|25.5] "Amps" ECU
+ SG_ DC_DC_Temp : 48|8@1+ (1,0) [0|255] "Celsius" ECU
+
+BO_ 2147680513 ACU_Debug_FD_to_Debugger: 64 ACU
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger
+
+BO_ 2147680769 ACU_Ping_to_Debugger: 4 ACU
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2147680770 ACU_Ping_to_ECU: 4 ACU
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2147683586 ACU_ACU_Cell_Data_1_to_ECU: 64 ACU
+ SG_ Cell_0_Voltage : 0|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_0_Temp : 8|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_1_Voltage : 16|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_1_Temp : 24|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_2_Voltage : 32|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_2_Temp : 40|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_3_Voltage : 48|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_3_Temp : 56|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_4_Voltage : 64|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_4_Temp : 72|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_5_Voltage : 80|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_5_Temp : 88|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_6_Voltage : 96|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_6_Temp : 104|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_7_Voltage : 112|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_7_Temp : 120|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_8_Voltage : 128|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_8_Temp : 136|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_9_Voltage : 144|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_9_Temp : 152|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_10_Voltage : 160|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_10_Temp : 168|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_11_Voltage : 176|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_11_Temp : 184|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_12_Voltage : 192|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_12_Temp : 200|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_13_Voltage : 208|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_13_Temp : 216|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_14_Voltage : 224|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_14_Temp : 232|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_15_Voltage : 240|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_15_Temp : 248|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_16_Voltage : 256|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_16_Temp : 264|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_17_Voltage : 272|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_17_Temp : 280|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_18_Voltage : 288|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_18_Temp : 296|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_19_Voltage : 304|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_19_Temp : 312|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_20_Voltage : 320|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_20_Temp : 328|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_21_Voltage : 336|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_21_Temp : 344|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_22_Voltage : 352|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_22_Temp : 360|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_23_Voltage : 368|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_23_Temp : 376|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_24_Voltage : 384|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_24_Temp : 392|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_25_Voltage : 400|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_25_Temp : 408|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_26_Voltage : 416|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_26_Temp : 424|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_27_Voltage : 432|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_27_Temp : 440|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_28_Voltage : 448|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_28_Temp : 456|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_29_Voltage : 464|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_29_Temp : 472|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_30_Voltage : 480|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_30_Temp : 488|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_31_Voltage : 496|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_31_Temp : 504|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+
+BO_ 2147683842 ACU_ACU_Cell_Data_2_to_ECU: 64 ACU
+ SG_ Cell_32_Voltage : 0|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_32_Temp : 8|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_33_Voltage : 16|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_33_Temp : 24|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_34_Voltage : 32|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_34_Temp : 40|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_35_Voltage : 48|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_35_Temp : 56|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_36_Voltage : 64|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_36_Temp : 72|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_37_Voltage : 80|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_37_Temp : 88|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_38_Voltage : 96|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_38_Temp : 104|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_39_Voltage : 112|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_39_Temp : 120|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_40_Voltage : 128|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_40_Temp : 136|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_41_Voltage : 144|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_41_Temp : 152|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_42_Voltage : 160|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_42_Temp : 168|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_43_Voltage : 176|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_43_Temp : 184|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_44_Voltage : 192|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_44_Temp : 200|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_45_Voltage : 208|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_45_Temp : 216|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_46_Voltage : 224|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_46_Temp : 232|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_47_Voltage : 240|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_47_Temp : 248|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_48_Voltage : 256|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_48_Temp : 264|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_49_Voltage : 272|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_49_Temp : 280|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_50_Voltage : 288|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_50_Temp : 296|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_51_Voltage : 304|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_51_Temp : 312|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_52_Voltage : 320|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_52_Temp : 328|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_53_Voltage : 336|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_53_Temp : 344|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_54_Voltage : 352|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_54_Temp : 360|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_55_Voltage : 368|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_55_Temp : 376|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_56_Voltage : 384|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_56_Temp : 392|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_57_Voltage : 400|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_57_Temp : 408|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_58_Voltage : 416|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_58_Temp : 424|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_59_Voltage : 432|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_59_Temp : 440|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_60_Voltage : 448|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_60_Temp : 456|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_61_Voltage : 464|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_61_Temp : 472|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_62_Voltage : 480|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_62_Temp : 488|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_63_Voltage : 496|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_63_Temp : 504|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+
+BO_ 2147684098 ACU_ACU_Cell_Data_3_to_ECU: 64 ACU
+ SG_ Cell_64_Voltage : 0|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_64_Temp : 8|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_65_Voltage : 16|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_65_Temp : 24|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_66_Voltage : 32|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_66_Temp : 40|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_67_Voltage : 48|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_67_Temp : 56|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_68_Voltage : 64|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_68_Temp : 72|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_69_Voltage : 80|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_69_Temp : 88|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_70_Voltage : 96|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_70_Temp : 104|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_71_Voltage : 112|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_71_Temp : 120|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_72_Voltage : 128|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_72_Temp : 136|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_73_Voltage : 144|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_73_Temp : 152|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_74_Voltage : 160|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_74_Temp : 168|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_75_Voltage : 176|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_75_Temp : 184|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_76_Voltage : 192|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_76_Temp : 200|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_77_Voltage : 208|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_77_Temp : 216|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_78_Voltage : 224|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_78_Temp : 232|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_79_Voltage : 240|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_79_Temp : 248|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_80_Voltage : 256|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_80_Temp : 264|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_81_Voltage : 272|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_81_Temp : 280|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_82_Voltage : 288|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_82_Temp : 296|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_83_Voltage : 304|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_83_Temp : 312|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_84_Voltage : 320|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_84_Temp : 328|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_85_Voltage : 336|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_85_Temp : 344|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_86_Voltage : 352|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_86_Temp : 360|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_87_Voltage : 368|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_87_Temp : 376|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_88_Voltage : 384|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_88_Temp : 392|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_89_Voltage : 400|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_89_Temp : 408|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_90_Voltage : 416|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_90_Temp : 424|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_91_Voltage : 432|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_91_Temp : 440|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_92_Voltage : 448|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_92_Temp : 456|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_93_Voltage : 464|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_93_Temp : 472|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_94_Voltage : 480|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_94_Temp : 488|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_95_Voltage : 496|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_95_Temp : 504|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+
+BO_ 2147684354 ACU_ACU_Cell_Data_4_to_ECU: 64 ACU
+ SG_ Cell_96_Voltage : 0|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_96_Temp : 8|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_97_Voltage : 16|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_97_Temp : 24|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_98_Voltage : 32|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_98_Temp : 40|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_99_Voltage : 48|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_99_Temp : 56|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_100_Voltage : 64|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_100_Temp : 72|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_101_Voltage : 80|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_101_Temp : 88|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_102_Voltage : 96|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_102_Temp : 104|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_103_Voltage : 112|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_103_Temp : 120|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_104_Voltage : 128|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_104_Temp : 136|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_105_Voltage : 144|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_105_Temp : 152|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_106_Voltage : 160|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_106_Temp : 168|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_107_Voltage : 176|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_107_Temp : 184|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_108_Voltage : 192|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_108_Temp : 200|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_109_Voltage : 208|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_109_Temp : 216|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_110_Voltage : 224|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_110_Temp : 232|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_111_Voltage : 240|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_111_Temp : 248|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_112_Voltage : 256|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_112_Temp : 264|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_113_Voltage : 272|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_113_Temp : 280|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_114_Voltage : 288|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_114_Temp : 296|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_115_Voltage : 304|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_115_Temp : 312|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_116_Voltage : 320|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_116_Temp : 328|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_117_Voltage : 336|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_117_Temp : 344|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_118_Voltage : 352|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_118_Temp : 360|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_119_Voltage : 368|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_119_Temp : 376|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_120_Voltage : 384|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_120_Temp : 392|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_121_Voltage : 400|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_121_Temp : 408|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_122_Voltage : 416|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_122_Temp : 424|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_123_Voltage : 432|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_123_Temp : 440|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_124_Voltage : 448|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_124_Temp : 456|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_125_Voltage : 464|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_125_Temp : 472|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_126_Voltage : 480|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_126_Temp : 488|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_127_Voltage : 496|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_127_Temp : 504|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+
+BO_ 2147684610 ACU_ACU_Cell_Data_5_to_ECU: 64 ACU
+ SG_ Cell_128_Voltage : 0|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_128_Temp : 8|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_129_Voltage : 16|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_129_Temp : 24|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_130_Voltage : 32|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_130_Temp : 40|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_131_Voltage : 48|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_131_Temp : 56|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_132_Voltage : 64|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_132_Temp : 72|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_133_Voltage : 80|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_133_Temp : 88|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_134_Voltage : 96|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_134_Temp : 104|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_135_Voltage : 112|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_135_Temp : 120|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_136_Voltage : 128|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_136_Temp : 136|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_137_Voltage : 144|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_137_Temp : 152|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_138_Voltage : 160|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_138_Temp : 168|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_139_Voltage : 176|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_139_Temp : 184|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_140_Voltage : 192|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_140_Temp : 200|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_141_Voltage : 208|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_141_Temp : 216|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_142_Voltage : 224|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_142_Temp : 232|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_143_Voltage : 240|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_143_Temp : 248|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_144_Voltage : 256|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_144_Temp : 264|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_145_Voltage : 272|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_145_Temp : 280|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_146_Voltage : 288|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_146_Temp : 296|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_147_Voltage : 304|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_147_Temp : 312|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_148_Voltage : 320|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_148_Temp : 328|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_149_Voltage : 336|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_149_Temp : 344|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_150_Voltage : 352|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_150_Temp : 360|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_151_Voltage : 368|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_151_Temp : 376|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_152_Voltage : 384|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_152_Temp : 392|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_153_Voltage : 400|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_153_Temp : 408|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_154_Voltage : 416|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_154_Temp : 424|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_155_Voltage : 432|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_155_Temp : 440|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_156_Voltage : 448|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_156_Temp : 456|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_157_Voltage : 464|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_157_Temp : 472|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_158_Voltage : 480|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_158_Temp : 488|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Cell_159_Voltage : 496|8@1+ (0.01,2) [2|4.55] "Volts" ECU
+ SG_ Cell_159_Temp : 504|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+
+BO_ 2550588916 ACU_Charger_Control_to_Charger: 5 ACU
+
+BO_ 2566869221 Charger_Charger_Data_to_ACU: 8 Charger
+
+BO_ 2147811329 Dash_Panel_Debug_2_0_to_Debugger: 8 Dash_Panel
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger
+
+BO_ 2147811841 Dash_Panel_Ping_to_Debugger: 4 Dash_Panel
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2147811842 Dash_Panel_Ping_to_ECU: 4 Dash_Panel
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2147817986 Dash_Panel_Dash_Status_to_ECU: 3 Dash_Panel
+ SG_ BMS_LED : 0|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ IMD_LED : 1|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ BSPD_LED : 2|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ TS_Button_Data : 8|8@1- (0.1,0) [0|12.7] "Seconds" ECU
+ SG_ RTD_Button_Data : 16|8@1- (0.1,0) [0|12.7] "Seconds" ECU
+
+BO_ 2147549186 Debugger_Debug_2_0_to_ECU: 8 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" ECU
+
+BO_ 2147549698 Debugger_Ping_to_ECU: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2147550722 Debugger_ECU_config_to_ECU: 0 Debugger
+
+BO_ 2147549187 Debugger_Debug_2_0_to_ACU: 8 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" ACU
+
+BO_ 2147549699 Debugger_Ping_to_ACU: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ACU
+
+BO_ 2147549188 Debugger_Debug_2_0_to_TCM: 8 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" TCM
+
+BO_ 2147549700 Debugger_Ping_to_TCM: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" TCM
+
+BO_ 2147549189 Debugger_Debug_2_0_to_Dash_Panel: 8 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Dash_Panel
+
+BO_ 2147549701 Debugger_Ping_to_Dash_Panel: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Dash_Panel
+
+BO_ 2147549192 Debugger_Debug_2_0_to_GR_Inverter_1: 8 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" GR_Inverter_1
+
+BO_ 2147549704 Debugger_Ping_to_GR_Inverter_1: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" GR_Inverter_1
+
+BO_ 2147549193 Debugger_Debug_2_0_to_GR_Inverter_2: 8 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" GR_Inverter_2
+
+BO_ 2147549705 Debugger_Ping_to_GR_Inverter_2: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" GR_Inverter_2
+
+BO_ 2147549194 Debugger_Debug_2_0_to_GR_Inverter_3: 8 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" GR_Inverter_3
+
+BO_ 2147549706 Debugger_Ping_to_GR_Inverter_3: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" GR_Inverter_3
+
+BO_ 2147549195 Debugger_Debug_2_0_to_GR_Inverter_4: 8 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" GR_Inverter_4
+
+BO_ 2147549707 Debugger_Ping_to_GR_Inverter_4: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" GR_Inverter_4
+
+BO_ 2147549197 Debugger_Debug_2_0_to_Fan_Controller_1: 8 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Fan_Controller_1
+
+BO_ 2147549709 Debugger_Ping_to_Fan_Controller_1: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Fan_Controller_1
+
+BO_ 2147549198 Debugger_Debug_2_0_to_Fan_Controller_2: 8 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Fan_Controller_2
+
+BO_ 2147549710 Debugger_Ping_to_Fan_Controller_2: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Fan_Controller_2
+
+BO_ 2147549199 Debugger_Debug_2_0_to_Fan_Controller_3: 8 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Fan_Controller_3
+
+BO_ 2147549711 Debugger_Ping_to_Fan_Controller_3: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Fan_Controller_3
+
+BO_ 2147549200 Debugger_Debug_2_0_to_Fan_Controller_4: 8 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Fan_Controller_4
+
+BO_ 2147549712 Debugger_Ping_to_Fan_Controller_4: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Fan_Controller_4
+
+BO_ 2147549201 Debugger_Debug_2_0_to_Fan_Controller_5: 8 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Fan_Controller_5
+
+BO_ 2147549713 Debugger_Ping_to_Fan_Controller_5: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Fan_Controller_5
+
+BO_ 2147549202 Debugger_Debug_2_0_to_Fan_Controller_6: 8 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Fan_Controller_6
+
+BO_ 2147549714 Debugger_Ping_to_Fan_Controller_6: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Fan_Controller_6
+
+BO_ 2147549203 Debugger_Debug_2_0_to_Fan_Controller_7: 8 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Fan_Controller_7
+
+BO_ 2147549715 Debugger_Ping_to_Fan_Controller_7: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Fan_Controller_7
+
+BO_ 2147549204 Debugger_Debug_2_0_to_Fan_Controller_8: 8 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Fan_Controller_8
+
+BO_ 2147549716 Debugger_Ping_to_Fan_Controller_8: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Fan_Controller_8
+
+BO_ 2147549225 Debugger_Debug_2_0_to_LV_DC_DC: 8 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" LV_DC_DC
+
+BO_ 2147549737 Debugger_Ping_to_LV_DC_DC: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" LV_DC_DC
+
+BO_ 2147549737 Debugger_Ping_to_LV_DC_DC: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" LV_DC_DC
+
+BO_ 2147549442 Debugger_Debug_FD_to_ECU: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" ECU
+
+BO_ 2147549698 Debugger_Ping_to_ECU: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2147549443 Debugger_Debug_FD_to_ACU: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" ACU
+
+BO_ 2147549699 Debugger_Ping_to_ACU: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ACU
+
+BO_ 2147549444 Debugger_Debug_FD_to_TCM: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" TCM
+
+BO_ 2147549700 Debugger_Ping_to_TCM: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" TCM
+
+BO_ 2147549446 Debugger_Debug_FD_to_Steering_Wheel: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Steering_Wheel
+
+BO_ 2147549702 Debugger_Ping_to_Steering_Wheel: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Steering_Wheel
+
+BO_ 2147549461 Debugger_Debug_FD_to_SAM1: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM1
+
+BO_ 2147549717 Debugger_Ping_to_SAM1: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM1
+
+BO_ 2147549462 Debugger_Debug_FD_to_SAM2: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM2
+
+BO_ 2147549718 Debugger_Ping_to_SAM2: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM2
+
+BO_ 2147549463 Debugger_Debug_FD_to_SAM3: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM3
+
+BO_ 2147549719 Debugger_Ping_to_SAM3: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM3
+
+BO_ 2147549464 Debugger_Debug_FD_to_SAM4: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM4
+
+BO_ 2147549720 Debugger_Ping_to_SAM4: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM4
+
+BO_ 2147549465 Debugger_Debug_FD_to_SAM5: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM5
+
+BO_ 2147549721 Debugger_Ping_to_SAM5: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM5
+
+BO_ 2147549466 Debugger_Debug_FD_to_SAM6: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM6
+
+BO_ 2147549722 Debugger_Ping_to_SAM6: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM6
+
+BO_ 2147549467 Debugger_Debug_FD_to_SAM7: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM7
+
+BO_ 2147549723 Debugger_Ping_to_SAM7: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM7
+
+BO_ 2147549468 Debugger_Debug_FD_to_SAM8: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM8
+
+BO_ 2147549724 Debugger_Ping_to_SAM8: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM8
+
+BO_ 2147549469 Debugger_Debug_FD_to_SAM9: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM9
+
+BO_ 2147549725 Debugger_Ping_to_SAM9: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM9
+
+BO_ 2147549470 Debugger_Debug_FD_to_SAM10: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM10
+
+BO_ 2147549726 Debugger_Ping_to_SAM10: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM10
+
+BO_ 2147549471 Debugger_Debug_FD_to_SAM11: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM11
+
+BO_ 2147549727 Debugger_Ping_to_SAM11: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM11
+
+BO_ 2147549472 Debugger_Debug_FD_to_SAM12: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM12
+
+BO_ 2147549728 Debugger_Ping_to_SAM12: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM12
+
+BO_ 2147549473 Debugger_Debug_FD_to_SAM13: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM13
+
+BO_ 2147549729 Debugger_Ping_to_SAM13: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM13
+
+BO_ 2147549474 Debugger_Debug_FD_to_SAM14: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM14
+
+BO_ 2147549730 Debugger_Ping_to_SAM14: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM14
+
+BO_ 2147549475 Debugger_Debug_FD_to_SAM15: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM15
+
+BO_ 2147549731 Debugger_Ping_to_SAM15: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM15
+
+BO_ 2147549476 Debugger_Debug_FD_to_SAM16: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM16
+
+BO_ 2147549732 Debugger_Ping_to_SAM16: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM16
+
+BO_ 2147549477 Debugger_Debug_FD_to_SAM17: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM17
+
+BO_ 2147549733 Debugger_Ping_to_SAM17: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM17
+
+BO_ 2147549478 Debugger_Debug_FD_to_SAM18: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM18
+
+BO_ 2147549734 Debugger_Ping_to_SAM18: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM18
+
+BO_ 2147549479 Debugger_Debug_FD_to_SAM19: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM19
+
+BO_ 2147549735 Debugger_Ping_to_SAM19: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM19
+
+BO_ 2147549480 Debugger_Debug_FD_to_SAM20: 64 Debugger
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" SAM20
+
+BO_ 2147549736 Debugger_Ping_to_SAM20: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" SAM20
+
+BO_ 2147549708 Debugger_Ping_to_Charging_SDC: 4 Debugger
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Charging_SDC
+
+BO_ 2147491862 DTI_Inverter_DTI_Data_1_to_ECU: 8 DTI_Inverter
+
+BO_ 2147492118 DTI_Inverter_DTI_Data_2_to_ECU: 8 DTI_Inverter
+
+BO_ 2147492374 DTI_Inverter_DTI_Data_3_to_ECU: 8 DTI_Inverter
+
+BO_ 2147492630 DTI_Inverter_DTI_Data_4_to_ECU: 8 DTI_Inverter
+
+BO_ 2147492886 DTI_Inverter_DTI_Data_5_to_ECU: 8 DTI_Inverter
+
+BO_ 278 ECU_DTI_Control_1_to_DTI_Inverter: 2 ECU
+
+BO_ 534 ECU_DTI_Control_2_to_DTI_Inverter: 2 ECU
+
+BO_ 790 ECU_DTI_Control_3_to_DTI_Inverter: 4 ECU
+
+BO_ 1046 ECU_DTI_Control_4_to_DTI_Inverter: 2 ECU
+
+BO_ 1302 ECU_DTI_Control_5_to_DTI_Inverter: 2 ECU
+
+BO_ 1558 ECU_DTI_Control_6_to_DTI_Inverter: 2 ECU
+
+BO_ 1814 ECU_DTI_Control_7_to_DTI_Inverter: 1 ECU
+
+BO_ 2147485718 ECU_DTI_Control_8_to_DTI_Inverter: 2 ECU
+
+BO_ 2147485974 ECU_DTI_Control_9_to_DTI_Inverter: 2 ECU
+
+BO_ 2147486230 ECU_DTI_Control_10_to_DTI_Inverter: 2 ECU
+
+BO_ 2147486486 ECU_DTI_Control_11_to_DTI_Inverter: 2 ECU
+
+BO_ 2147486742 ECU_DTI_Control_12_to_DTI_Inverter: 1 ECU
+
+BO_ 2147614721 ECU_Debug_2_0_to_Debugger: 8 ECU
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger
+
+BO_ 2147615233 ECU_Ping_to_Debugger: 4 ECU
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2147615234 ECU_Ping_to_ECU: 4 ECU
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2147615490 ECU_ECU_Status_1_to_ECU: 8 ECU
+ SG_ ECU_State : 0|8@1+ (1,0) [0|0] "" ECU
+ SG_ ACU_Node_Status : 8|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ GR_Inv_1_Status : 9|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ GR_Inv_2_Status : 10|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ GR_Inv_3_Status : 11|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ GR_Inv_4_Status : 12|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Fan_Controller_1 : 13|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Fan_Controller_2 : 14|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Fan_Controller_3 : 15|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Fan_Controller_4 : 16|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Fan_Controller_5 : 17|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Fan_Controller_6 : 18|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Fan_Controller_7 : 19|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Fan_Controller_8 : 20|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Dash : 21|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Steering : 22|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Power_Level : 32|4@1+ (1,0) [0|0] "" ECU
+ SG_ Torque_Map : 36|4@1+ (1,0) [0|0] "" ECU
+ SG_ Max_Cell_Temp : 40|8@1+ (0.25,0) [0|63.75] "Celsius" ECU
+ SG_ Accumulator_State_of_Charge : 48|8@1+ (0.392157,0) [0|100] "%" ECU
+ SG_ GLV_State_of_Charge : 56|8@1+ (0.392157,0) [0|100] "%" ECU
+
+BO_ 2147615746 ECU_ECU_Status_2_to_ECU: 8 ECU
+ SG_ Tractive_System_Voltage : 0|16@1+ (0.01,0) [0|655.35] "Volts" ECU
+ SG_ Vehicle_Speed : 16|16@1+ (0.01,0) [0|655.35] "MPH" ECU
+ SG_ FR_Wheel_RPM : 32|16@1+ (0.1,-3276.8) [-3276.8|3276.7] "RPM" ECU
+ SG_ FL_Wheel_RPM : 48|16@1+ (0.1,-3276.8) [-3276.8|3276.7] "RPM" ECU
+
+BO_ 2147616002 ECU_ECU_Status_3_to_ECU: 4 ECU
+ SG_ RR_Wheel_RPM : 0|16@1+ (0.1,-3276.8) [-3276.8|3276.7] "RPM" ECU
+ SG_ RL_Wheel_RPM : 16|16@1+ (0.1,-3276.8) [-3276.8|3276.7] "RPM" ECU
+
+BO_ 2147617283 ECU_ACU_Precharge_to_ACU: 1 ECU
+ SG_ Set_TS_Active : 0|1@1+ (1,0) [0|0] "Bool" ACU
+
+BO_ 2147617539 ECU_ACU_Config_Charge_Parameters_to_ACU: 4 ECU
+ SG_ Charge_Voltage : 0|16@1+ (0.1,0) [0|6553.5] "Volts" ACU
+ SG_ Charge_Current : 16|16@1+ (0.1,0) [0|6553.5] "Amps" ACU
+
+BO_ 2147617795 ECU_ACU_Config_Operational_Parameters_to_ACU: 2 ECU
+ SG_ Minimium_Cell_Voltage : 0|8@1+ (0.01,2) [2|4.55] "Volts" ACU
+ SG_ Max_Cell_Temperature : 8|8@1+ (0.25,0) [0|63.75] "Celsius" ACU
+
+BO_ 2147620360 ECU_Inverter_Config_to_GR_Inverter_1: 7 ECU
+ SG_ Max_AC_Current : 0|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" GR_Inverter_1
+ SG_ Max_DC_Current : 16|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" GR_Inverter_1
+ SG_ Absolute_Max_RPM_Limit : 32|16@1+ (1,-32768) [-32768|32767] "RPM" GR_Inverter_1
+ SG_ Motor_direction : 48|1@1+ (1,0) ["-"|"-"] "Enable" GR_Inverter_1
+
+BO_ 2147620616 ECU_Inverter_Command_to_GR_Inverter_1: 8 ECU
+ SG_ Set_AC_Current : 0|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" GR_Inverter_1
+ SG_ Set_DC_Current : 16|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" GR_Inverter_1
+ SG_ RPM_Limit : 32|16@1+ (1,-32768) [-32768|32767] "RPM" GR_Inverter_1
+ SG_ Field_weakening : 48|8@1+ (0.1,0) [0|25.5] "Amps" GR_Inverter_1
+ SG_ Drive_enable : 56|1@1+ (1,0) ["-"|"-"] "Enable" GR_Inverter_1
+
+BO_ 2147620361 ECU_Inverter_Config_to_GR_Inverter_2: 7 ECU
+ SG_ Max_AC_Current : 0|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" GR_Inverter_2
+ SG_ Max_DC_Current : 16|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" GR_Inverter_2
+ SG_ Absolute_Max_RPM_Limit : 32|16@1+ (1,-32768) [-32768|32767] "RPM" GR_Inverter_2
+ SG_ Motor_direction : 48|1@1+ (1,0) ["-"|"-"] "Enable" GR_Inverter_2
+
+BO_ 2147620617 ECU_Inverter_Command_to_GR_Inverter_2: 8 ECU
+ SG_ Set_AC_Current : 0|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" GR_Inverter_2
+ SG_ Set_DC_Current : 16|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" GR_Inverter_2
+ SG_ RPM_Limit : 32|16@1+ (1,-32768) [-32768|32767] "RPM" GR_Inverter_2
+ SG_ Field_weakening : 48|8@1+ (0.1,0) [0|25.5] "Amps" GR_Inverter_2
+ SG_ Drive_enable : 56|1@1+ (1,0) ["-"|"-"] "Enable" GR_Inverter_2
+
+BO_ 2147620362 ECU_Inverter_Config_to_GR_Inverter_3: 7 ECU
+ SG_ Max_AC_Current : 0|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" GR_Inverter_3
+ SG_ Max_DC_Current : 16|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" GR_Inverter_3
+ SG_ Absolute_Max_RPM_Limit : 32|16@1+ (1,-32768) [-32768|32767] "RPM" GR_Inverter_3
+ SG_ Motor_direction : 48|1@1+ (1,0) ["-"|"-"] "Enable" GR_Inverter_3
+
+BO_ 2147620618 ECU_Inverter_Command_to_GR_Inverter_3: 8 ECU
+ SG_ Set_AC_Current : 0|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" GR_Inverter_3
+ SG_ Set_DC_Current : 16|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" GR_Inverter_3
+ SG_ RPM_Limit : 32|16@1+ (1,-32768) [-32768|32767] "RPM" GR_Inverter_3
+ SG_ Field_weakening : 48|8@1+ (0.1,0) [0|25.5] "Amps" GR_Inverter_3
+ SG_ Drive_enable : 56|1@1+ (1,0) ["-"|"-"] "Enable" GR_Inverter_3
+
+BO_ 2147620363 ECU_Inverter_Config_to_GR_Inverter_4: 7 ECU
+ SG_ Max_AC_Current : 0|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" GR_Inverter_4
+ SG_ Max_DC_Current : 16|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" GR_Inverter_4
+ SG_ Absolute_Max_RPM_Limit : 32|16@1+ (1,-32768) [-32768|32767] "RPM" GR_Inverter_4
+ SG_ Motor_direction : 48|1@1+ (1,0) ["-"|"-"] "Enable" GR_Inverter_4
+
+BO_ 2147620619 ECU_Inverter_Command_to_GR_Inverter_4: 8 ECU
+ SG_ Set_AC_Current : 0|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" GR_Inverter_4
+ SG_ Set_DC_Current : 16|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" GR_Inverter_4
+ SG_ RPM_Limit : 32|16@1+ (1,-32768) [-32768|32767] "RPM" GR_Inverter_4
+ SG_ Field_weakening : 48|8@1+ (0.1,0) [0|25.5] "Amps" GR_Inverter_4
+ SG_ Drive_enable : 56|1@1+ (1,0) ["-"|"-"] "Enable" GR_Inverter_4
+
+BO_ 2147621133 ECU_Fan_Command_to_Fan_Controller_1: 1 ECU
+ SG_ Fan_Command : 0|8@1+ (1,0) [0|255] "%" Fan_Controller_1
+
+BO_ 2147621134 ECU_Fan_Command_to_Fan_Controller_2: 1 ECU
+ SG_ Fan_Command : 0|8@1+ (1,0) [0|255] "%" Fan_Controller_2
+
+BO_ 2147621135 ECU_Fan_Command_to_Fan_Controller_3: 1 ECU
+ SG_ Fan_Command : 0|8@1+ (1,0) [0|255] "%" Fan_Controller_3
+
+BO_ 2147621136 ECU_Fan_Command_to_Fan_Controller_4: 1 ECU
+ SG_ Fan_Command : 0|8@1+ (1,0) [0|255] "%" Fan_Controller_4
+
+BO_ 2147621137 ECU_Fan_Command_to_Fan_Controller_5: 1 ECU
+ SG_ Fan_Command : 0|8@1+ (1,0) [0|255] "%" Fan_Controller_5
+
+BO_ 2147621138 ECU_Fan_Command_to_Fan_Controller_6: 1 ECU
+ SG_ Fan_Command : 0|8@1+ (1,0) [0|255] "%" Fan_Controller_6
+
+BO_ 2147621139 ECU_Fan_Command_to_Fan_Controller_7: 1 ECU
+ SG_ Fan_Command : 0|8@1+ (1,0) [0|255] "%" Fan_Controller_7
+
+BO_ 2147621140 ECU_Fan_Command_to_Fan_Controller_8: 1 ECU
+ SG_ Fan_Command : 0|8@1+ (1,0) [0|255] "%" Fan_Controller_8
+
+BO_ 2147621637 ECU_Dash_Config_to_Dash_Panel: 7 ECU
+ SG_ BMS_LED : 0|1@1+ (1,0) [0|0] "Bool" Dash_Panel
+ SG_ IMD_LED : 1|1@1+ (1,0) [0|0] "Bool" Dash_Panel
+ SG_ BSPD_LED : 2|1@1+ (1,0) [0|0] "Bool" Dash_Panel
+ SG_ Button_LED_1_R : 8|8@1+ (1,0) [0|255] "RGB" Dash_Panel
+ SG_ Button_LED_1_G : 16|8@1+ (1,0) [0|255] "RGB" Dash_Panel
+ SG_ Button_LED_1_B : 24|8@1+ (1,0) [0|255] "RGB" Dash_Panel
+ SG_ Button_LED_2_R : 32|8@1+ (1,0) [0|255] "RGB" Dash_Panel
+ SG_ Button_LED_2_G : 40|8@1+ (1,0) [0|255] "RGB" Dash_Panel
+ SG_ Button_LED_2_B : 48|8@1+ (1,0) [0|255] "RGB" Dash_Panel
+
+BO_ 2147625733 ECU_Dash_Warning_Flags_to_Dash_Panel: 1 ECU
+ SG_ BSE_APPS_Violation : 0|1@1+ (1,0) [0|0] "Bool" Dash_Panel
+
+BO_ 2147625989 ECU_Specific_Brake_IR_to_Dash_Panel: 2 ECU
+ SG_ Wheel_identifier : 0|8@1+ (1,0) [0|0] "" Dash_Panel
+ SG_ Temp : 8|8@1+ (1,0) [0|255] "Celsius" Dash_Panel
+
+BO_ 2147614977 ECU_Debug_FD_to_Debugger: 64 ECU
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger
+
+BO_ 2147615233 ECU_Ping_to_Debugger: 4 ECU
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2147615234 ECU_Ping_to_ECU: 4 ECU
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2147622150 ECU_Steering_Config_to_Steering_Wheel: 0 ECU
+
+BO_ 2147626246 ECU_ECU_Ping_Information_to_Steering_Wheel: 3 ECU
+ SG_ Online_pings : 0|24@1+ (1,0) [0|0] "Bool map" Steering_Wheel
+
+BO_ 2181169152 ECU_ECU_Pedals_Data_to_TCM: 10 ECU
+ SG_ APPS1_SIGNAL : 0|16@1+ (0.0015259,0) [0|100] "%" TCM
+ SG_ APPS2_SIGNAL : 16|16@1+ (0.0015259,0) [0|100] "%" TCM
+ SG_ BSE_SIGNAL : 32|16@1+ (0.0015259,0) [0|100] "%" TCM
+ SG_ BRAKE_R_SIGNAL : 48|16@1+ (0.0015259,0) [0|100] "%" TCM
+ SG_ BRAKE_F_SIGNAL : 48|16@1+ (0.0015259,0) [0|100] "%" TCM
+
+BO_ 269 Energy_Meter_EM_Measurement_to_ACU: 8 Energy_Meter
+
+BO_ 781 Energy_Meter_EM_Team_Data_1_to_ACU: 8 Energy_Meter
+
+BO_ 782 Energy_Meter_EM_Team_Data_2_to_ACU: 8 Energy_Meter
+
+BO_ 1037 Energy_Meter_EM_Status_to_ACU: 8 Energy_Meter
+
+BO_ 1549 Energy_Meter_EM_Temperature_to_ACU: 8 Energy_Meter
+
+BO_ 2148335617 Fan_Controller_1_Debug_2_0_to_Debugger: 8 Fan_Controller_1
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger
+
+BO_ 2148336129 Fan_Controller_1_Ping_to_Debugger: 4 Fan_Controller_1
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2148336130 Fan_Controller_1_Ping_to_ECU: 4 Fan_Controller_1
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2148341762 Fan_Controller_1_Fan_Status_to_ECU: 4 Fan_Controller_1
+ SG_ Fan_Speed : 0|16@1+ (1,0) [0|65535] "RPM" ECU
+ SG_ Input_Voltage : 16|8@1+ (0.1,0) [0|25.5] "Volts" ECU
+ SG_ Input_Current : 24|8@1+ (0.1,0) [0|25.5] "Amps" ECU
+
+BO_ 2148401153 Fan_Controller_2_Debug_2_0_to_Debugger: 8 Fan_Controller_2
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger
+
+BO_ 2148401665 Fan_Controller_2_Ping_to_Debugger: 4 Fan_Controller_2
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2148401666 Fan_Controller_2_Ping_to_ECU: 4 Fan_Controller_2
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2148407298 Fan_Controller_2_Fan_Status_to_ECU: 4 Fan_Controller_2
+ SG_ Fan_Speed : 0|16@1+ (1,0) [0|65535] "RPM" ECU
+ SG_ Input_Voltage : 16|8@1+ (0.1,0) [0|25.5] "Volts" ECU
+ SG_ Input_Current : 24|8@1+ (0.1,0) [0|25.5] "Amps" ECU
+
+BO_ 2148466689 Fan_Controller_3_Debug_2_0_to_Debugger: 8 Fan_Controller_3
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger
+
+BO_ 2148467201 Fan_Controller_3_Ping_to_Debugger: 4 Fan_Controller_3
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2148467202 Fan_Controller_3_Ping_to_ECU: 4 Fan_Controller_3
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2148472834 Fan_Controller_3_Fan_Status_to_ECU: 4 Fan_Controller_3
+ SG_ Fan_Speed : 0|16@1+ (1,0) [0|65535] "RPM" ECU
+ SG_ Input_Voltage : 16|8@1+ (0.1,0) [0|25.5] "Volts" ECU
+ SG_ Input_Current : 24|8@1+ (0.1,0) [0|25.5] "Amps" ECU
+
+BO_ 2148532225 Fan_Controller_4_Debug_2_0_to_Debugger: 8 Fan_Controller_4
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger
+
+BO_ 2148532737 Fan_Controller_4_Ping_to_Debugger: 4 Fan_Controller_4
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2148532738 Fan_Controller_4_Ping_to_ECU: 4 Fan_Controller_4
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2148538370 Fan_Controller_4_Fan_Status_to_ECU: 4 Fan_Controller_4
+ SG_ Fan_Speed : 0|16@1+ (1,0) [0|65535] "RPM" ECU
+ SG_ Input_Voltage : 16|8@1+ (0.1,0) [0|25.5] "Volts" ECU
+ SG_ Input_Current : 24|8@1+ (0.1,0) [0|25.5] "Amps" ECU
+
+BO_ 2148597761 Fan_Controller_5_Debug_2_0_to_Debugger: 8 Fan_Controller_5
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger
+
+BO_ 2148598273 Fan_Controller_5_Ping_to_Debugger: 4 Fan_Controller_5
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2148598274 Fan_Controller_5_Ping_to_ECU: 4 Fan_Controller_5
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2148603906 Fan_Controller_5_Fan_Status_to_ECU: 4 Fan_Controller_5
+ SG_ Fan_Speed : 0|16@1+ (1,0) [0|65535] "RPM" ECU
+ SG_ Input_Voltage : 16|8@1+ (0.1,0) [0|25.5] "Volts" ECU
+ SG_ Input_Current : 24|8@1+ (0.1,0) [0|25.5] "Amps" ECU
+
+BO_ 2148663297 Fan_Controller_6_Debug_2_0_to_Debugger: 8 Fan_Controller_6
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger
+
+BO_ 2148663809 Fan_Controller_6_Ping_to_Debugger: 4 Fan_Controller_6
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2148663810 Fan_Controller_6_Ping_to_ECU: 4 Fan_Controller_6
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2148669442 Fan_Controller_6_Fan_Status_to_ECU: 4 Fan_Controller_6
+ SG_ Fan_Speed : 0|16@1+ (1,0) [0|65535] "RPM" ECU
+ SG_ Input_Voltage : 16|8@1+ (0.1,0) [0|25.5] "Volts" ECU
+ SG_ Input_Current : 24|8@1+ (0.1,0) [0|25.5] "Amps" ECU
+
+BO_ 2148728833 Fan_Controller_7_Debug_2_0_to_Debugger: 8 Fan_Controller_7
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger
+
+BO_ 2148729345 Fan_Controller_7_Ping_to_Debugger: 4 Fan_Controller_7
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2148729346 Fan_Controller_7_Ping_to_ECU: 4 Fan_Controller_7
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2148734978 Fan_Controller_7_Fan_Status_to_ECU: 4 Fan_Controller_7
+ SG_ Fan_Speed : 0|16@1+ (1,0) [0|65535] "RPM" ECU
+ SG_ Input_Voltage : 16|8@1+ (0.1,0) [0|25.5] "Volts" ECU
+ SG_ Input_Current : 24|8@1+ (0.1,0) [0|25.5] "Amps" ECU
+
+BO_ 2148794369 Fan_Controller_8_Debug_2_0_to_Debugger: 8 Fan_Controller_8
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger
+
+BO_ 2148794881 Fan_Controller_8_Ping_to_Debugger: 4 Fan_Controller_8
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2148794882 Fan_Controller_8_Ping_to_ECU: 4 Fan_Controller_8
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2148800514 Fan_Controller_8_Fan_Status_to_ECU: 4 Fan_Controller_8
+ SG_ Fan_Speed : 0|16@1+ (1,0) [0|65535] "RPM" ECU
+ SG_ Input_Voltage : 16|8@1+ (0.1,0) [0|25.5] "Volts" ECU
+ SG_ Input_Current : 24|8@1+ (0.1,0) [0|25.5] "Amps" ECU
+
+BO_ 2148007937 GR_Inverter_1_Debug_2_0_to_Debugger: 8 GR_Inverter_1
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger
+
+BO_ 2148008449 GR_Inverter_1_Ping_to_Debugger: 4 GR_Inverter_1
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2148008450 GR_Inverter_1_Ping_to_ECU: 4 GR_Inverter_1
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2148012802 GR_Inverter_1_Inverter_Status_1_to_ECU: 6 GR_Inverter_1
+ SG_ AC_current : 0|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" ECU
+ SG_ DC_current : 16|16@1+ (0.01,0) [0|655.35] "Amps" ECU
+ SG_ Motor_RPM : 32|16@1+ (1,-32768) [-32768|32767] "RPM" ECU
+
+BO_ 2148013058 GR_Inverter_1_Inverter_Status_2_to_ECU: 6 GR_Inverter_1
+ SG_ U_MOSFET_temperature : 0|8@1+ (1,-40) [-40|215] "Celsius" ECU
+ SG_ V_MOSFET_temperature : 16|8@1+ (1,-40) [-40|215] "Celsius" ECU
+ SG_ W_MOSFET_temperature : 32|8@1+ (1,-40) [-40|215] "Celsius" ECU
+
+BO_ 2148013314 GR_Inverter_1_Inverter_Status_3_to_ECU: 2 GR_Inverter_1
+ SG_ Motor_temperature : 0|8@1+ (1,-40) [-40|215] "Celsius" ECU
+ SG_ Over_voltage_faults : 16|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Under_voltage_fault : 17|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Inv_overtemp_fault : 18|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Motor_overtemp_fault : 19|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Transistor_fault : 20|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Encoder_fault : 21|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ CAN_fault : 22|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Future_use : 23|1@1+ (1,0) [0|0] "Bool" ECU
+
+BO_ 2148073473 GR_Inverter_2_Debug_2_0_to_Debugger: 8 GR_Inverter_2
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger
+
+BO_ 2148073985 GR_Inverter_2_Ping_to_Debugger: 4 GR_Inverter_2
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2148073986 GR_Inverter_2_Ping_to_ECU: 4 GR_Inverter_2
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2148078338 GR_Inverter_2_Inverter_Status_1_to_ECU: 6 GR_Inverter_2
+ SG_ AC_current : 0|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" ECU
+ SG_ DC_current : 16|16@1+ (0.01,0) [0|655.35] "Amps" ECU
+ SG_ Motor_RPM : 32|16@1+ (1,-32768) [-32768|32767] "RPM" ECU
+
+BO_ 2148078594 GR_Inverter_2_Inverter_Status_2_to_ECU: 6 GR_Inverter_2
+ SG_ U_MOSFET_temperature : 0|8@1+ (1,-40) [-40|215] "Celsius" ECU
+ SG_ V_MOSFET_temperature : 16|8@1+ (1,-40) [-40|215] "Celsius" ECU
+ SG_ W_MOSFET_temperature : 32|8@1+ (1,-40) [-40|215] "Celsius" ECU
+
+BO_ 2148078850 GR_Inverter_2_Inverter_Status_3_to_ECU: 2 GR_Inverter_2
+ SG_ Motor_temperature : 0|8@1+ (1,-40) [-40|215] "Celsius" ECU
+ SG_ Over_voltage_faults : 16|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Under_voltage_fault : 17|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Inv_overtemp_fault : 18|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Motor_overtemp_fault : 19|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Transistor_fault : 20|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Encoder_fault : 21|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ CAN_fault : 22|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Future_use : 23|1@1+ (1,0) [0|0] "Bool" ECU
+
+BO_ 2148139009 GR_Inverter_3_Debug_2_0_to_Debugger: 8 GR_Inverter_3
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger
+
+BO_ 2148139521 GR_Inverter_3_Ping_to_Debugger: 4 GR_Inverter_3
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2148139522 GR_Inverter_3_Ping_to_ECU: 4 GR_Inverter_3
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2148143874 GR_Inverter_3_Inverter_Status_1_to_ECU: 6 GR_Inverter_3
+ SG_ AC_current : 0|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" ECU
+ SG_ DC_current : 16|16@1+ (0.01,0) [0|655.35] "Amps" ECU
+ SG_ Motor_RPM : 32|16@1+ (1,-32768) [-32768|32767] "RPM" ECU
+
+BO_ 2148144130 GR_Inverter_3_Inverter_Status_2_to_ECU: 6 GR_Inverter_3
+ SG_ U_MOSFET_temperature : 0|8@1+ (1,-40) [-40|215] "Celsius" ECU
+ SG_ V_MOSFET_temperature : 16|8@1+ (1,-40) [-40|215] "Celsius" ECU
+ SG_ W_MOSFET_temperature : 32|8@1+ (1,-40) [-40|215] "Celsius" ECU
+
+BO_ 2148144386 GR_Inverter_3_Inverter_Status_3_to_ECU: 2 GR_Inverter_3
+ SG_ Motor_temperature : 0|8@1+ (1,-40) [-40|215] "Celsius" ECU
+ SG_ Over_voltage_faults : 16|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Under_voltage_fault : 17|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Inv_overtemp_fault : 18|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Motor_overtemp_fault : 19|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Transistor_fault : 20|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Encoder_fault : 21|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ CAN_fault : 22|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Future_use : 23|1@1+ (1,0) [0|0] "Bool" ECU
+
+BO_ 2148204545 GR_Inverter_4_Debug_2_0_to_Debugger: 8 GR_Inverter_4
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger
+
+BO_ 2148205057 GR_Inverter_4_Ping_to_Debugger: 4 GR_Inverter_4
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2148205058 GR_Inverter_4_Ping_to_ECU: 4 GR_Inverter_4
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2148209410 GR_Inverter_4_Inverter_Status_1_to_ECU: 6 GR_Inverter_4
+ SG_ AC_current : 0|16@1+ (0.01,-327.68) [-327.68|327.67] "Amps" ECU
+ SG_ DC_current : 16|16@1+ (0.01,0) [0|655.35] "Amps" ECU
+ SG_ Motor_RPM : 32|16@1+ (1,-32768) [-32768|32767] "RPM" ECU
+
+BO_ 2148209666 GR_Inverter_4_Inverter_Status_2_to_ECU: 6 GR_Inverter_4
+ SG_ U_MOSFET_temperature : 0|8@1+ (1,-40) [-40|215] "Celsius" ECU
+ SG_ V_MOSFET_temperature : 16|8@1+ (1,-40) [-40|215] "Celsius" ECU
+ SG_ W_MOSFET_temperature : 32|8@1+ (1,-40) [-40|215] "Celsius" ECU
+
+BO_ 2148209922 GR_Inverter_4_Inverter_Status_3_to_ECU: 2 GR_Inverter_4
+ SG_ Motor_temperature : 0|8@1+ (1,-40) [-40|215] "Celsius" ECU
+ SG_ Over_voltage_faults : 16|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Under_voltage_fault : 17|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Inv_overtemp_fault : 18|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Motor_overtemp_fault : 19|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Transistor_fault : 20|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Encoder_fault : 21|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ CAN_fault : 22|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Future_use : 23|1@1+ (1,0) [0|0] "Bool" ECU
+
+BO_ 35 IMD_IMD_response_to_ACU: 0 IMD
+
+BO_ 2565862654 IMD_IMD_isolation_info_to_ACU: 0 IMD
+
+BO_ 2565862654 IMD_IMD_voltage_to_ACU: 0 IMD
+
+BO_ 2565862654 IMD_IMD_IT_system_to_ACU: 0 IMD
+
+BO_ 2565862654 IMD_IMD_request_to_ACU: 0 IMD
+
+BO_ 2565862654 IMD_IMD_request_to_ACU: 0 IMD
+
+BO_ 2566849012 IMD_IMD_general_to_ACU: 8 IMD
+
+BO_ 2150171137 LV_DC_DC_Ping_to_Debugger: 4 LV_DC_DC
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2150171138 LV_DC_DC_Ping_to_ECU: 4 LV_DC_DC
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2150175234 LV_DC_DC_DC_DC_Status_to_ECU: 7 LV_DC_DC
+ SG_ Input_Voltage : 0|16@1+ (0.001,0) [0|65.535] "Volts" ECU
+ SG_ Output_Voltage : 16|16@1+ (0.001,0) [0|65.535] "Volts" ECU
+ SG_ Input_Current : 32|8@1+ (0.1,0) [0|25.5] "Amps" ECU
+ SG_ Output_Current : 40|8@1+ (0.1,0) [0|25.5] "Amps" ECU
+ SG_ DC_DC_Temp : 48|8@1+ (1,0) [0|255] "Celsius" ECU
+
+BO_ 2148860417 SAM1_Ping_to_Debugger: 4 SAM1
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2148867586 SAM1_SAM_Brake_IR_to_ECU: 1 SAM1
+ SG_ Temp : 0|8@1+ (1,0) [0|255] "Celsius" ECU
+
+BO_ 2148925953 SAM2_Ping_to_Debugger: 4 SAM2
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2148933122 SAM2_SAM_Brake_IR_to_ECU: 1 SAM2
+ SG_ Temp : 0|8@1+ (1,0) [0|255] "Celsius" ECU
+
+BO_ 2148991489 SAM3_Ping_to_Debugger: 4 SAM3
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2148998658 SAM3_SAM_Brake_IR_to_ECU: 1 SAM3
+ SG_ Temp : 0|8@1+ (1,0) [0|255] "Celsius" ECU
+
+BO_ 2149057025 SAM4_Ping_to_Debugger: 4 SAM4
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2149064194 SAM4_SAM_Brake_IR_to_ECU: 1 SAM4
+ SG_ Temp : 0|8@1+ (1,0) [0|255] "Celsius" ECU
+
+BO_ 2149122561 SAM5_Ping_to_Debugger: 4 SAM5
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2149130242 SAM5_SAM_IMU_to_ECU: 12 SAM5
+ SG_ Accel_X : 0|16@1+ (0.01,-327.68) [-327.68|327.67] "Meters/s^2" ECU
+ SG_ Accel_Y : 16|16@1+ (0.01,-327.68) [-327.68|327.67] "Meters/s^2" ECU
+ SG_ Accel_Z : 32|16@1+ (0.01,-327.68) [-327.68|327.67] "Meters/s^2" ECU
+ SG_ Gyro_X : 48|16@1+ (0.001,-32.768) [-32.768|32.767] "Meters/s^2" ECU
+ SG_ Gyro_Y : 64|16@1+ (0.001,-32.768) [-32.768|32.767] "Meters/s^2" ECU
+ SG_ Gyro_Z : 80|16@1+ (0.001,-32.768) [-32.768|32.767] "Meters/s^2" ECU
+
+BO_ 2149131778 SAM5_SAM_TOF_to_ECU: 2 SAM5
+ SG_ Height : 0|16@1+ (0.00390625,0) [0|255] "mm" ECU
+
+BO_ 2149188097 SAM6_Ping_to_Debugger: 4 SAM6
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2149253633 SAM7_Ping_to_Debugger: 4 SAM7
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2149319169 SAM8_Ping_to_Debugger: 4 SAM8
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2149384705 SAM9_Ping_to_Debugger: 4 SAM9
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2149450241 SAM10_Ping_to_Debugger: 4 SAM10
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2149515777 SAM11_Ping_to_Debugger: 4 SAM11
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2149581313 SAM12_Ping_to_Debugger: 4 SAM12
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2149646849 SAM13_Ping_to_Debugger: 4 SAM13
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2149712385 SAM14_Ping_to_Debugger: 4 SAM14
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2149777921 SAM15_Ping_to_Debugger: 4 SAM15
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2149843457 SAM16_Ping_to_Debugger: 4 SAM16
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2149908993 SAM17_Ping_to_Debugger: 4 SAM17
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2149974529 SAM18_Ping_to_Debugger: 4 SAM18
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2150040065 SAM19_Ping_to_Debugger: 4 SAM19
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2150105601 SAM20_Ping_to_Debugger: 4 SAM20
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2147877121 Steering_Wheel_Debug_FD_to_Debugger: 64 Steering_Wheel
+ SG_ Debug : 0|64@1- (1,0) [0|0] "" Debugger
+
+BO_ 2147877377 Steering_Wheel_Ping_to_Debugger: 4 Steering_Wheel
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2147877378 Steering_Wheel_Ping_to_ECU: 4 Steering_Wheel
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" ECU
+
+BO_ 2147884034 Steering_Wheel_Steering_Status_to_ECU: 2 Steering_Wheel
+ SG_ Current_Encoder : 0|4@1+ (1,0) [1|16] "Position" ECU
+ SG_ Torque_Map_Encoder : 4|4@1+ (1,0) [1|16] "Position" ECU
+ SG_ Regen : 8|4@1+ (1,0) [1|16] "Position" ECU
+ SG_ Button_1 : 12|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Button_2 : 13|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Button_3 : 14|1@1+ (1,0) [0|0] "Bool" ECU
+ SG_ Button_4 : 15|1@1+ (1,0) [0|0] "Bool" ECU
+
+BO_ 2147746305 TCM_Ping_to_Debugger: 4 TCM
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2147746305 TCM_Ping_to_Debugger: 4 TCM
+ SG_ Timestamp : 0|32@1+ (1,0) [0|4,294,967,296] "ms" Debugger
+
+BO_ 2147756294 TCM_TCM_Status_to_Steering_Wheel: 8 TCM
+ SG_ Connection_Status : 0|1@1+ (1,0) [0|0] "Bool" Steering_Wheel
+ SG_ MQTT_Status : 1|1@1+ (1,0) [0|0] "Bool" Steering_Wheel
+ SG_ Epic_Shelter_Status : 2|1@1+ (1,0) [0|0] "Bool" Steering_Wheel
+ SG_ Camera_Status : 3|1@1+ (1,0) [0|0] "Bool" Steering_Wheel
+ SG_ Ping : 8|16@1+ (1,0) [0|0] "ms" Steering_Wheel
+ SG_ Cache_Size : 24|32@1+ (1,0) [0|0] "#" Steering_Wheel
+
+BO_ 2147756550 TCM_TCM_Resource_Utilization_to_Steering_Wheel: 44 TCM
+ SG_ CPU_0_Freq : 0|16@1+ (1,0) [0|0] "%" Steering_Wheel
+ SG_ CPU_0_Util : 16|8@1+ (1,0) [0|0] "%" Steering_Wheel
+ SG_ CPU_1_Freq : 24|16@1+ (1,0) [0|0] "%" Steering_Wheel
+ SG_ CPU_1_Util : 40|8@1+ (1,0) [0|0] "" Steering_Wheel
+ SG_ CPU_2_Freq : 48|16@1+ (1,0) [0|0] "%" Steering_Wheel
+ SG_ CPU_2_Util : 64|8@1+ (1,0) [0|0] "" Steering_Wheel
+ SG_ CPU_3_Freq : 72|16@1+ (1,0) [0|0] "" Steering_Wheel
+ SG_ CPU_3_Util : 88|8@1+ (1,0) [0|0] "" Steering_Wheel
+ SG_ CPU_4_Freq : 96|16@1+ (1,0) [0|0] "" Steering_Wheel
+ SG_ CPU_4_Util : 112|8@1+ (1,0) [0|0] "" Steering_Wheel
+ SG_ CPU_5_Freq : 120|16@1+ (1,0) [0|0] "" Steering_Wheel
+ SG_ CPU_5_Util : 136|8@1+ (1,0) [0|0] "Watts" Steering_Wheel
+ SG_ CPU_Total_Util : 144|8@1+ (1,0) [0|0] "" Steering_Wheel
+ SG_ RAM_Total : 152|16@1+ (1,0) [0|0] "" Steering_Wheel
+ SG_ RAM_Used : 168|16@1+ (1,0) [0|0] "" Steering_Wheel
+ SG_ RAM_Util : 184|8@1+ (1,0) [0|0] "" Steering_Wheel
+ SG_ GPU_Util : 192|8@1+ (1,0) [0|0] "" Steering_Wheel
+ SG_ GPU_Freq : 200|16@1+ (1,0) [0|0] "" Steering_Wheel
+ SG_ Disk_Total : 216|32@1+ (1,0) [0|0] "" Steering_Wheel
+ SG_ Disk_Used : 248|32@1+ (1,0) [0|0] "" Steering_Wheel
+ SG_ Disk_Util : 280|8@1+ (1,0) [0|0] "Celsius" Steering_Wheel
+ SG_ CPU_Temp : 288|8@1+ (1,0) [0|0] "" Steering_Wheel
+ SG_ GPU_Temp : 296|8@1+ (1,0) [0|0] "" Steering_Wheel
+ SG_ Voltage_Draw : 304|16@1+ (1,0) [0|0] "" Steering_Wheel
+ SG_ Current_Draw : 320|16@1+ (1,0) [0|0] "" Steering_Wheel
+ SG_ Power_Draw : 336|16@1+ (1,0) [0|0] "Celsius" Steering_Wheel
+
+BO_ 2150641666 DGPS_UVW_DGPS_to_ECU: 6 DGPS
+ SG_ DGPS_U : 0|16@1- (0.01,0) [0|0] "" ECU
+ SG_ DGPS_V : 16|16@1- (0.01,0) [0|0] "" ECU
+ SG_ DGPS_W : 32|16@1- (0.01,0) [0|0] "" ECU
+
+BO_ 2150641922 DGPS_GPS_LAT_to_ECU: 8 DGPS
+ SG_ LAT : 0|64@1+ (1,0) [0|0] "" ECU
+
+BO_ 2150642178 DGPS_GPS_LON_to_ECU: 8 DGPS
+ SG_ LON : 0|64@1+ (1,0) [0|0] "" ECU
+
+BO_ 2150642434 DGPS_GPS_ALT_to_ECU: 8 DGPS
+ SG_ ALT : 0|64@1+ (1,0) [0|0] "" ECU
+
+BO_ 2150642690 DGPS_GPS_PX_to_ECU: 8 DGPS
+ SG_ Theta : 0|16@1- (0.001,0) [0|0] "" ECU
+ SG_ Acc : 16|16@1- (0.01,0) [0|0] "" ECU
+ SG_ status : 32|32@1+ (1,0) [0|0] "" ECU
+
+BO_ 2150642946 DGPS_GPS_QY_to_ECU: 8 DGPS
+ SG_ Theta : 0|16@1- (0.001,0) [0|0] "" ECU
+ SG_ Acc : 16|16@1- (0.01,0) [0|0] "" ECU
+ SG_ status : 32|32@1+ (1,0) [0|0] "" ECU
+
+BO_ 2150643202 DGPS_GPS_RZ_to_ECU: 8 DGPS
+ SG_ Theta : 0|16@1- (0.001,0) [0|0] "" ECU
+ SG_ Acc : 16|16@1- (0.01,0) [0|0] "" ECU
+ SG_ status : 32|32@1+ (1,0) [0|0] "" ECU
+
diff --git a/Autogen/CAN/Inc/CAN_msg_ID.h b/Autogen/CAN/Inc/CAN_msg_ID.h
new file mode 100644
index 000000000..ea8f7ac59
--- /dev/null
+++ b/Autogen/CAN/Inc/CAN_msg_ID.h
@@ -0,0 +1,61 @@
+// Auto-generated CAN Message IDs
+#ifndef CAN_MSG_IDS_H
+#define CAN_MSG_IDS_H
+
+typedef enum {
+ MSG_DEBUG_2_0 = 0x000,
+ MSG_DEBUG_FD = 0x001,
+ MSG_PING = 0x002,
+ MSG_ECU_STATUS_1 = 0x003,
+ MSG_ECU_STATUS_2 = 0x004,
+ MSG_ECU_STATUS_3 = 0x005,
+ MSG_ECU_CONFIG = 0x006,
+ MSG_ACU_STATUS_1 = 0x007,
+ MSG_ACU_STATUS_2 = 0x008,
+ MSG_ACU_STATUS_3 = 0x009,
+ MSG_ACU_PRECHARGE = 0x00A,
+ MSG_ACU_CONFIG_CHARGE_PARAMETERS = 0x00B,
+ MSG_ACU_CONFIG_OPERATIONAL_PARAMETERS = 0x00C,
+ MSG_ACU_CELL_DATA_1 = 0x00D,
+ MSG_ACU_CELL_DATA_2 = 0x00E,
+ MSG_ACU_CELL_DATA_3 = 0x00F,
+ MSG_ACU_CELL_DATA_4 = 0x010,
+ MSG_ACU_CELL_DATA_5 = 0x011,
+ MSG_INVERTER_STATUS_1 = 0x013,
+ MSG_INVERTER_STATUS_2 = 0x014,
+ MSG_INVERTER_STATUS_3 = 0x015,
+ MSG_INVERTER_CONFIG = 0x016,
+ MSG_INVERTER_COMMAND = 0x017,
+ MSG_FAN_STATUS = 0x018,
+ MSG_FAN_COMMAND = 0x019,
+ MSG_DASH_STATUS = 0x01A,
+ MSG_DASH_CONFIG = 0x01B,
+ MSG_STEERING_STATUS = 0x01C,
+ MSG_STEERING_CONFIG = 0x01D,
+ MSG_SAM_BRAKE_IR = 0x01E,
+ MSG_SAM_TIRE_TEMP = 0x01F,
+ MSG_SAM_IMU = 0x020,
+ MSG_SAM_GPS_1 = 0x021,
+ MSG_SAM_GPS_2 = 0x022,
+ MSG_SAM_GPS_TIME = 0x023,
+ MSG_SAM_GPS_HEADING = 0x024,
+ MSG_SAM_SUS_POTS = 0x025,
+ MSG_SAM_TOF = 0x026,
+ MSG_SAM_REAR_WHEELSPEED = 0x027,
+ MSG_SAM_PUSHROD_FORCE = 0x028,
+ MSG_TCM_STATUS = 0x029,
+ MSG_TCM_RESOURCE_UTILIZATION = 0x02A,
+ MSG_DASH_WARNING_FLAGS = 0x02B,
+ MSG_SPECIFIC_BRAKE_IR = 0x02C,
+ MSG_ECU_PING_INFORMATION = 0x02D,
+ MSG_ECU_PEDALS_DATA = 0x02E,
+ MSG_GPS_LAT = 0x031,
+ MSG_GPS_LON = 0x032,
+ MSG_GPS_ALT = 0x033,
+ MSG_GPS_PX = 0x034,
+ MSG_GPS_QY = 0x035,
+ MSG_GPS_RZ = 0x036,
+ MSG_UVW_DGPS = 0x030,
+} can_msg_id_t;
+
+#endif // CAN_MSG_IDS_H
diff --git a/Autogen/CAN/Inc/Custom_CAN_ID.h b/Autogen/CAN/Inc/Custom_CAN_ID.h
new file mode 100644
index 000000000..63a4f1580
--- /dev/null
+++ b/Autogen/CAN/Inc/Custom_CAN_ID.h
@@ -0,0 +1,38 @@
+// Auto-generated Custom CAN ID header
+#ifndef CUSTOM_CAN_ID_H
+#define CUSTOM_CAN_ID_H
+
+typedef enum {
+ CHARGER_CONTROL_CAN_ID = 0x1806e5f4,
+ CHARGER_DATA_CAN_ID = 0x18ff50e5,
+ DTI_CONTROL_1_CAN_ID = 116,
+ DTI_CONTROL_10_CAN_ID = 0xa16,
+ DTI_CONTROL_11_CAN_ID = 0xb16,
+ DTI_CONTROL_12_CAN_ID = 0xc16,
+ DTI_CONTROL_2_CAN_ID = 216,
+ DTI_CONTROL_3_CAN_ID = 316,
+ DTI_CONTROL_4_CAN_ID = 416,
+ DTI_CONTROL_5_CAN_ID = 516,
+ DTI_CONTROL_6_CAN_ID = 616,
+ DTI_CONTROL_7_CAN_ID = 716,
+ DTI_CONTROL_8_CAN_ID = 816,
+ DTI_CONTROL_9_CAN_ID = 916,
+ DTI_DATA_1_CAN_ID = 2016,
+ DTI_DATA_2_CAN_ID = 2116,
+ DTI_DATA_3_CAN_ID = 2216,
+ DTI_DATA_4_CAN_ID = 2316,
+ DTI_DATA_5_CAN_ID = 2416,
+ EM_MEASUREMENT_CAN_ID = 0x10d,
+ EM_STATUS_CAN_ID = 0x40d,
+ EM_TEAM_DATA_1_CAN_ID = 0x30d,
+ EM_TEAM_DATA_2_CAN_ID = 0x30e,
+ EM_TEMPERATURE_CAN_ID = 0x60d,
+ IMD_IT_SYSTEM_CAN_ID = 0x18eff4fe,
+ IMD_GENERAL_CAN_ID = 0x18ff01f4,
+ IMD_ISOLATION_INFO_CAN_ID = 0x18eff4fe,
+ IMD_REQUEST_CAN_ID = 0x18eff4fe,
+ IMD_RESPONSE_CAN_ID = 23,
+ IMD_VOLTAGE_CAN_ID = 0x18eff4fe,
+} Custom_CAN_ID_t;
+
+#endif // CUSTOM_CAN_ID_H
diff --git a/Autogen/CAN/Inc/GR_IDS.h b/Autogen/CAN/Inc/GR_IDS.h
new file mode 100644
index 000000000..a258328f7
--- /dev/null
+++ b/Autogen/CAN/Inc/GR_IDS.h
@@ -0,0 +1,55 @@
+// Auto-generated GR ID enum header
+#ifndef GR_IDS_H
+#define GR_IDS_H
+
+typedef enum {
+ ACU = 0x03,
+ ALL = 0xFF,
+ CCU = 0x2A,
+ Charger = 0x00,
+ Charging_SDC = 0x0C,
+ DGPS = 0x30,
+ DTI_Inverter = 0x00,
+ Dash_Panel = 0x05,
+ Debugger = 0x01,
+ ECU = 0x02,
+ Energy_Meter = 0x00,
+ Fan_Controller_1 = 0x0D,
+ Fan_Controller_2 = 0x0E,
+ Fan_Controller_3 = 0x0F,
+ Fan_Controller_4 = 0x10,
+ Fan_Controller_5 = 0x11,
+ Fan_Controller_6 = 0x12,
+ Fan_Controller_7 = 0x13,
+ Fan_Controller_8 = 0x14,
+ GR_Inverter_1 = 0x08,
+ GR_Inverter_2 = 0x09,
+ GR_Inverter_3 = 0x0A,
+ GR_Inverter_4 = 0x0B,
+ IMD = 0x00,
+ LV_DC_DC = 0x29,
+ SAM1 = 0x15,
+ SAM10 = 0x1E,
+ SAM11 = 0x1F,
+ SAM12 = 0x20,
+ SAM13 = 0x21,
+ SAM14 = 0x22,
+ SAM15 = 0x23,
+ SAM16 = 0x24,
+ SAM17 = 0x25,
+ SAM18 = 0x26,
+ SAM19 = 0x27,
+ SAM2 = 0x16,
+ SAM20 = 0x28,
+ SAM3 = 0x17,
+ SAM4 = 0x18,
+ SAM5 = 0x19,
+ SAM6 = 0x1A,
+ SAM7 = 0x1B,
+ SAM8 = 0x1C,
+ SAM9 = 0x1D,
+ Steering_Wheel = 0x06,
+ TCM = 0x04,
+} GR_ID_t;
+
+#endif // GR_IDS_H
diff --git a/Autogen/CAN/Inc/Struct_ID.h b/Autogen/CAN/Inc/Struct_ID.h
new file mode 100644
index 000000000..f07a0e1b0
--- /dev/null
+++ b/Autogen/CAN/Inc/Struct_ID.h
@@ -0,0 +1,536 @@
+/* Auto-generated header file */
+#ifndef GR_OLD_MESSAGES_H
+#define GR_OLD_MESSAGES_H
+
+#include
+
+/** Debug 2.0 */
+typedef struct {
+ /** Essentially a print statement up to 64 bytes long that whichever targeted can parse (Byte 0) */
+ uint8_t debug;
+} GR_OLD_DEBUG_2_0_MSG;
+
+/** Debug FD */
+typedef struct {
+ /** Essentially a print statement up to 64 bytes long that whichever targeted can parse (Byte 0) */
+ uint8_t debug;
+} GR_OLD_DEBUG_FD_MSG;
+
+/** Ping */
+typedef struct {
+ /** Time in millis (Byte 0) */
+ uint32_t timestamp;
+} GR_OLD_PING_MSG;
+
+/** ECU Status 1 */
+typedef struct {
+ /** See diagram (Byte 0) */
+ uint8_t ecu_state;
+ uint8_t ping_block[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) */
+ uint8_t power_level_torque_map;
+ /** Hottest cell in accumulator (Byte 5) */
+ uint8_t max_cell_temp;
+ /** % charged of the Accumulator (Byte 6) */
+ uint8_t accumulator_state_of_charge;
+ /** % charged of the Low Voltage Bat (Byte 7) */
+ uint8_t glv_state_of_charge;
+} GR_OLD_ECU_STATUS_1_MSG;
+
+/** ECU Status 2 */
+typedef struct {
+ /** Output terminal voltage of accumulator (Byte 0) */
+ uint16_t tractive_system_voltage;
+ /** Absolute value of speed (Byte 2) */
+ uint16_t vehicle_speed;
+ /** Wheel RPM (Byte 4) */
+ uint16_t fr_wheel_rpm;
+ /** Wheel RPM (Byte 6) */
+ uint16_t fl_wheel_rpm;
+} GR_OLD_ECU_STATUS_2_MSG;
+
+/** ECU Status 3 */
+typedef struct {
+ /** Wheel RPM (Byte 0) */
+ uint16_t rr_wheel_rpm;
+ /** Wheel RPM (Byte 2) */
+ uint16_t rl_wheel_rpm;
+} GR_OLD_ECU_STATUS_3_MSG;
+
+/** ECU config */
+typedef struct {
+ /** Byte 0 */
+ uint8_t reserved;
+} GR_OLD_ECU_CONFIG_MSG;
+
+/** ACU Status 1 */
+typedef struct {
+ /** All cell voltages added up (Byte 0) */
+ uint16_t accumulator_voltage;
+ /** Output terminal voltage of accumulator (Byte 2) */
+ uint16_t ts_voltage;
+ /** Current output of accumulator (Byte 4) */
+ uint16_t accumulator_current;
+ /** Accumulator state of charge (Based on lowest cell) (Byte 6) */
+ uint8_t accumulator_soc;
+ /** GLV state of charge (Byte 7) */
+ uint8_t glv_soc;
+} GR_OLD_ACU_STATUS_1_MSG;
+
+/** ACU Status 2 */
+typedef struct {
+ /** 20v GLV voltage (Byte 0) */
+ uint8_t _20v_voltage;
+ /** 12v supply voltage (Byte 1) */
+ uint8_t _12v_voltage;
+ /** Voltage before ACU Latch (Byte 2) */
+ uint8_t sdc_voltage;
+ /** Lowest cell voltage in accumulator (Byte 3) */
+ uint8_t min_cell_voltage;
+ /** Hottest cell in accumulator (Byte 4) */
+ uint8_t max_cell_temp;
+ uint8_t error_fault_violation_bits[2];
+} GR_OLD_ACU_STATUS_2_MSG;
+
+/** ACU Status 3 */
+typedef struct {
+ /** 600v input voltage (Byte 0) */
+ uint16_t hv_input_voltage;
+ /** 20v output voltage (Byte 2) */
+ uint16_t hv_output_voltage;
+ /** 600v input current (Byte 4) */
+ uint16_t hv_input_current;
+ /** 20v output current (Byte 6) */
+ uint16_t hv_output_current;
+} GR_OLD_ACU_STATUS_3_MSG;
+
+/** ACU Precharge */
+typedef struct {
+ /** 0: shutdown, 1: go TS Active/Precharge (Byte 0) */
+ uint8_t set_ts_active;
+} GR_OLD_ACU_PRECHARGE_MSG;
+
+/** ACU Config Charge Parameters */
+typedef struct {
+ /** Sets the Target Charging voltage (Byte 0) */
+ uint16_t charge_voltage;
+ /** Sets the Target Charging Current (Byte 2) */
+ uint16_t charge_current;
+} GR_OLD_ACU_CONFIG_CHARGE_PARAMETERS_MSG;
+
+/** ACU Config Operational Parameters */
+typedef struct {
+ /** Sets the threshold for Minimum Cell Voltage before Shutdown (Byte 0) */
+ uint8_t minimium_cell_voltage;
+ /** Sets the threshold for Max Cell Temperature before Shutdown (Byte 1) */
+ uint8_t max_cell_temperature;
+} GR_OLD_ACU_CONFIG_OPERATIONAL_PARAMETERS_MSG;
+
+/** ACU Cell Data 1 */
+typedef struct {
+ struct {
+ uint8_t voltage;
+ uint8_t temperature;
+ } cells[32];
+} GR_OLD_ACU_CELL_DATA_1_MSG;
+
+/** ACU Cell Data 2 */
+typedef struct {
+ struct {
+ uint8_t voltage;
+ uint8_t temperature;
+ } cells[32];
+} GR_OLD_ACU_CELL_DATA_2_MSG;
+
+/** ACU Cell Data 3 */
+typedef struct {
+ struct {
+ uint8_t voltage;
+ uint8_t temperature;
+ } cells[32];
+} GR_OLD_ACU_CELL_DATA_3_MSG;
+
+/** ACU Cell Data 4 */
+typedef struct {
+ struct {
+ uint8_t voltage;
+ uint8_t temperature;
+ } cells[32];
+} GR_OLD_ACU_CELL_DATA_4_MSG;
+
+/** ACU Cell Data 5 */
+typedef struct {
+ struct {
+ uint8_t voltage;
+ uint8_t temperature;
+ } cells[32];
+} GR_OLD_ACU_CELL_DATA_5_MSG;
+
+/** DC-DC Status */
+typedef struct {
+ /** 0-22 (Byte 0) */
+ uint16_t input_voltage;
+ /** ~12v for LV and ~20v for HV (Byte 2) */
+ uint16_t output_voltage;
+ /** 0-10 (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;
+} GR_OLD_DC_DC_STATUS_MSG;
+
+/** Inverter Status 1 */
+typedef struct {
+ /** 0.01 * current, int16_t (Byte 0) */
+ uint16_t ac_current;
+ /** 0.01 * current, int16_t (Byte 2) */
+ uint16_t dc_current;
+ /** RPM, int16_t (Byte 4) */
+ uint16_t motor_rpm;
+} GR_OLD_INVERTER_STATUS_1_MSG;
+
+/** Inverter Status 2 */
+typedef struct {
+ /** Celsius + 40, uint8_t (Byte 0) */
+ uint8_t u_mosfet_temperature;
+ /** Celsius + 40, uint8_t (Byte 2) */
+ uint8_t v_mosfet_temperature;
+ /** Celsius + 40, uint8_t (Byte 4) */
+ uint8_t w_mosfet_temperature;
+} GR_OLD_INVERTER_STATUS_2_MSG;
+
+/** Inverter Status 3 */
+typedef struct {
+ /** Celsius + 40, uint8_t (Byte 0) */
+ uint8_t motor_temperature;
+ uint8_t error_fault_violation_bits;
+} GR_OLD_INVERTER_STATUS_3_MSG;
+
+/** Inverter Config */
+typedef struct {
+ /** Max AC Current (Byte 0) */
+ uint16_t max_ac_current;
+ /** Max DC Current (Byte 2) */
+ uint16_t max_dc_current;
+ /** 0: No limit n :limited at n RPM (Byte 4) */
+ uint16_t absolute_max_rpm_limit;
+ /** Write 1 inverts direction (Byte 6) */
+ uint8_t motor_direction;
+} GR_OLD_INVERTER_CONFIG_MSG;
+
+/** Inverter Command */
+typedef struct {
+ /** Commanded AC Current (Byte 0) */
+ uint16_t set_ac_current;
+ /** Commanded DC Current (Byte 2) */
+ uint16_t set_dc_current;
+ /** 0: No limit n :limited at n RPM (Byte 4) */
+ uint16_t rpm_limit;
+ /** Field weakening strength (Byte 6) */
+ uint8_t field_weakening;
+ /** Write this to 1 every 100ms to enable inverter (Byte 7) */
+ uint8_t drive_enable;
+} GR_OLD_INVERTER_COMMAND_MSG;
+
+/** Fan Status */
+typedef struct {
+ /** Fan RPM (Byte 0) */
+ uint16_t fan_speed;
+ /** 0-22 (Byte 2) */
+ uint8_t input_voltage;
+ /** 0-10 (Byte 3) */
+ uint8_t input_current;
+} GR_OLD_FAN_STATUS_MSG;
+
+/** Fan Command */
+typedef struct {
+ /** 0-100 Percent (Byte 0) */
+ uint8_t fan_command;
+} GR_OLD_FAN_COMMAND_MSG;
+
+/** Dash Status */
+typedef struct {
+ uint8_t ping_block;
+ /** MSB is state (1: pressed) Other 7 bits represent the time in 0.1s that it has been in that state (Byte 1) */
+ uint8_t ts_button_data;
+ /** MSB is state (1: pressed) Other 7 bits represent the time in 0.1s that it has been in that state (Byte 2) */
+ uint8_t rtd_button_data;
+} GR_OLD_DASH_STATUS_MSG;
+
+/** Dash Config */
+typedef struct {
+ uint8_t ping_block;
+ /** Discarded input but still send it, set by ECU State (Byte 1) */
+ uint8_t button_led_1_r;
+ /** Discarded input but still send it, set by ECU State (Byte 2) */
+ uint8_t button_led_1_g;
+ /** Discarded input but still send it, set by ECU State (Byte 3) */
+ uint8_t button_led_1_b;
+ /** Discarded input but still send it, set by ECU State (Byte 4) */
+ uint8_t button_led_2_r;
+ /** Discarded input but still send it, set by ECU State (Byte 5) */
+ uint8_t button_led_2_g;
+ /** Discarded input but still send it, set by ECU State (Byte 6) */
+ uint8_t button_led_2_b;
+} GR_OLD_DASH_CONFIG_MSG;
+
+/** Steering Status */
+typedef struct {
+ /** Position of knob (1-16) Position of knob (1-16) (Byte 0) */
+ uint8_t current_encoder_torque_map_encoder;
+ uint8_t ping_block;
+} GR_OLD_STEERING_STATUS_MSG;
+
+/** Steering Config */
+typedef struct {
+ /** Byte 0 */
+ uint8_t reserved;
+} GR_OLD_STEERING_CONFIG_MSG;
+
+/** SAM Brake IR */
+typedef struct {
+ /** IR Temp of Brakes (Byte 0) */
+ uint8_t temp;
+} GR_OLD_SAM_BRAKE_IR_MSG;
+
+/** SAM Tire Temp */
+typedef struct {
+ /** Furthest from chassis (Byte 0) */
+ uint8_t outside_temp;
+ /** Middle of tire (Byte 1) */
+ uint8_t outside_middle_temp;
+ /** Middle of tire (Byte 2) */
+ uint8_t inside_middle_temp;
+ /** Closest to chassis (Byte 3) */
+ uint8_t inside_temp;
+} GR_OLD_SAM_TIRE_TEMP_MSG;
+
+/** SAM IMU */
+typedef struct {
+ /** Acceleration in X-axis (Byte 0) */
+ uint16_t accel_x;
+ /** Acceleration in Y-axis (Byte 2) */
+ uint16_t accel_y;
+ /** Acceleration in Z-axis (Byte 4) */
+ uint16_t accel_z;
+ /** Angular velocity in X-axis (Byte 6) */
+ uint16_t gyro_x;
+ /** Angular velocity in Y-axis (Byte 8) */
+ uint16_t gyro_y;
+ /** Angular velocity in Z-axis (Byte 10) */
+ uint16_t gyro_z;
+} GR_OLD_SAM_IMU_MSG;
+
+/** SAM GPS 1 */
+typedef struct {
+ /** Latitude in decimal degrees (Byte 0) */
+ uint32_t latitude;
+ /** Longitude in decimal degrees (Byte 4) */
+ uint32_t longitude;
+} GR_OLD_SAM_GPS_1_MSG;
+
+/** SAM GPS 2 */
+typedef struct {
+ /** GPS position accuracy (Byte 0) */
+ uint32_t accuracy;
+ /** Vehicle attitude (Byte 4) */
+ uint32_t attitude;
+} GR_OLD_SAM_GPS_2_MSG;
+
+/** SAM GPS Time */
+typedef struct {
+ /** Time in seconds since GPS Epoch (Byte 0) */
+ uint32_t time;
+ /** Time of week in milliseconds (Byte 4) */
+ uint32_t time_of_week_ms;
+} GR_OLD_SAM_GPS_TIME_MSG;
+
+/** SAM GPS Heading */
+typedef struct {
+ /** Heading angle relative to true North (Byte 0) */
+ uint32_t heading_from_north;
+} GR_OLD_SAM_GPS_HEADING_MSG;
+
+/** SAM Sus Pots */
+typedef struct {
+ /** Pot Pos (Byte 0) */
+ uint8_t suspension_angle;
+} GR_OLD_SAM_SUS_POTS_MSG;
+
+/** SAM TOF */
+typedef struct {
+ /** Ride Height (Byte 0) */
+ uint16_t height;
+} GR_OLD_SAM_TOF_MSG;
+
+/** SAM Rear Wheelspeed */
+typedef struct {
+ /** Wheel RPM (Byte 0) */
+ uint16_t speed;
+} GR_OLD_SAM_REAR_WHEELSPEED_MSG;
+
+/** SAM Pushrod Force */
+typedef struct {
+ /** Pushrod Force (Byte 0) */
+ uint16_t load_force;
+} GR_OLD_SAM_PUSHROD_FORCE_MSG;
+
+/** TCM Status */
+typedef struct {
+ uint8_t ping_block;
+ /** Mapache ping (upload) (Byte 1) */
+ uint16_t ping;
+ /** # of messages on cache (non-synced) (Byte 3) */
+ uint32_t cache_size;
+ /** Byte 7 */
+ uint8_t reserved;
+} GR_OLD_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;
+} GR_OLD_TCM_RESOURCE_UTILIZATION_MSG;
+
+/** Dash Warning Flags */
+typedef struct {
+ uint8_t error_fault_violation_bits;
+} GR_OLD_DASH_WARNING_FLAGS_MSG;
+
+/** Specific Brake IR */
+typedef struct {
+ /** Wheel identifier according to the wiki (Byte 0) */
+ uint8_t wheel_identifier;
+ /** IR Temp of Brakes (Byte 1) */
+ uint8_t temp;
+} GR_OLD_SPECIFIC_BRAKE_IR_MSG;
+
+/** ECU Ping Information */
+typedef struct {
+ /** Literal copy of ECU Status's status bit map (Byte 0) */
+ uint8_t online_pings;
+} GR_OLD_ECU_PING_INFORMATION_MSG;
+
+/** ECU Pedals Data */
+typedef struct {
+ /** APPS 1 Signal (Byte 0) */
+ uint16_t apps1_signal;
+ /** APPS 2 Signal (Byte 2) */
+ uint16_t apps2_signal;
+ /** Brake Force Signal (Byte 4) */
+ uint16_t bse_signal;
+ /** Brake Pressure Signal Brake Pressure Signal (Byte 6) */
+ uint16_t brake_f_signal_brake_r_signal;
+} GR_OLD_ECU_PEDALS_DATA_MSG;
+
+/** GPS LAT */
+typedef struct {
+ /** lattitude (Byte 0) */
+ uint8_t lat;
+} GR_OLD_GPS_LAT_MSG;
+
+/** GPS LON */
+typedef struct {
+ /** longitude (Byte 0) */
+ uint8_t lon;
+} GR_OLD_GPS_LON_MSG;
+
+/** GPS ALT */
+typedef struct {
+ /** altitude (Byte 0) */
+ uint8_t alt;
+} GR_OLD_GPS_ALT_MSG;
+
+/** GPS PX */
+typedef struct {
+ /** Byte 0 */
+ uint16_t theta;
+ /** Byte 2 */
+ uint16_t acc;
+ /** Byte 4 */
+ uint32_t status;
+} GR_OLD_GPS_PX_MSG;
+
+/** GPS QY */
+typedef struct {
+ /** Byte 0 */
+ uint16_t theta;
+ /** Byte 2 */
+ uint16_t acc;
+ /** Byte 4 */
+ uint32_t status;
+} GR_OLD_GPS_QY_MSG;
+
+/** GPS RZ */
+typedef struct {
+ /** Byte 0 */
+ uint16_t theta;
+ /** Byte 2 */
+ uint16_t acc;
+ /** Byte 4 */
+ uint32_t status;
+} GR_OLD_GPS_RZ_MSG;
+
+/** UVW DGPS */
+typedef struct {
+ /** U (Byte 0) */
+ uint16_t dgps_u;
+ /** V (Byte 2) */
+ uint16_t dgps_v;
+ /** W (Byte 4) */
+ uint16_t dgps_w;
+} GR_OLD_UVW_DGPS_MSG;
+
+#endif
diff --git a/Autogen/CAN/Makefile b/Autogen/CAN/Makefile
new file mode 100644
index 000000000..e876556c7
--- /dev/null
+++ b/Autogen/CAN/Makefile
@@ -0,0 +1,45 @@
+# Commands
+PERL = perl
+
+# Directories
+INC_DIR = Inc
+SRC_DIR = Src
+DOC_DIR = Doc
+
+# Files
+CANDO = $(DOC_DIR)/format.CANdo
+STRUCT_ID = $(INC_DIR)/Struct_ID.h
+GR_ID = $(INC_DIR)/GR_IDS.h
+MSG_ID = $(INC_DIR)/CAN_msg_ID.h
+CAN_ID = $(INC_DIR)/Custom_CAN_ID.h
+DBC = $(DOC_DIR)/output.dbc
+
+.PHONY: all clean STRUCTparser CANparser DBCparser GRparser MSGparser
+
+all: STRUCTparser CANparser DBCparser GRparser MSGparser
+ for file in $(STRUCT_ID) $(CAN_ID) $(DBC) $(GR_ID) $(MSG_ID); do \
+ if [ -f "$$file" ]; then \
+ echo "Successfully generated $$file"; \
+ else \
+ echo "Error: $$file was not generated."; \
+ exit 1; \
+ fi; \
+ done
+
+clean:
+ rm -f $(STRUCT_ID) $(CAN_ID) $(DBC) $(GR_ID) $(MSG_ID)
+
+STRUCTparser:
+ $(PERL) $(SRC_DIR)/$(@).pl $(CANDO) $(STRUCT_ID)
+
+CANparser:
+ $(PERL) $(SRC_DIR)/$(@).pl $(CANDO) $(CAN_ID)
+
+DBCparser:
+ $(PERL) $(SRC_DIR)/$(@).pl $(CANDO) $(DBC)
+
+GRparser:
+ $(PERL) $(SRC_DIR)/$(@).pl $(CANDO) $(GR_ID)
+
+MSGparser:
+ $(PERL) $(SRC_DIR)/$(@).pl $(CANDO) $(MSG_ID)
diff --git a/Autogen/CAN/README.md b/Autogen/CAN/README.md
new file mode 100644
index 000000000..7593c7b3a
--- /dev/null
+++ b/Autogen/CAN/README.md
@@ -0,0 +1,192 @@
+# CANfigurator
+#### By Aarnav, Caroline, Kartik, Nandini
+
+## Workflow: How to Apply Changes
+
+**Do not run the parsers locally.** The generated headers are produced by a GitHub Actions workflow.
+
+1. Edit `Doc/format.CANdo` with your changes.
+2. Commit and push to GitHub.
+3. The CI workflow runs all four parsers and commits the regenerated headers automatically.
+4. Pull the latest changes to get the updated headers locally.
+
+---
+
+## The Parsers
+
+All parsers live in `Src/` and read `Doc/format.CANdo` as input. You should never need to run them manually.
+
+- **`CANparser.pl`** — Reads the `Custom CAN ID` section. Produces `Custom_CAN_ID.h`, a single enum mapping each third-party message name to its CAN ID.
+- **`GRparser.pl`** — Reads the `GR ID` section. Produces `GR_IDS.h`, a single enum of device/node network addresses.
+- **`MSGparser.pl`** — Reads the `Message ID` section. Produces `can_msg_ids.h`, a single enum of every team-defined message name to its MSG ID.
+- **`STRUCTparser.pl`** — Reads the `Message ID` section. Produces `CANDler.h`, packed C structs for each message with typed fields, byte-level layout, and description comments.
+
+| Parser | Section(s) Read | Key Fields Consumed | Output |
+|---|---|---|---|
+| `CANparser.pl` | `Custom CAN ID` | Message name, `CAN ID` | `Custom_CAN_ID.h` |
+| `GRparser.pl` | `GR ID` | Device name, hex ID value | `GR_IDS.h` |
+| `MSGparser.pl` | `Message ID` | Message name, `MSG ID` | `can_msg_ids.h` |
+| `STRUCTparser.pl` | `Message ID` | Message name, fields, `bit_start`, `data type`, `#` comments | `CANDler.h` |
+
+---
+
+## Modifying `format.CANdo`
+
+`Doc/format.CANdo` is the single source of truth for the CAN bus configuration. It is a YAML file with five top-level sections, each consumed by one or more Perl parsers during the build. Changes here propagate into auto-generated C headers.
+
+### Top-Level Sections
+
+| Section | Consumed By | Generated Output |
+|---|---|---|
+| `routing` | *(build system / routing logic)* | Message routing tables |
+| `byte order` | *(shared config)* | Endianness setting |
+| `Message ID` | `MSGparser.pl` -> `can_msg_ids.h`, `STRUCTparser.pl` -> `CANDler.h` | MSG ID enum, packed C structs |
+| `Custom CAN ID` | `CANparser.pl` -> `Custom_CAN_ID.h` | Custom CAN ID enum |
+| `GR ID` | `GRparser.pl` -> `GR_IDS.h` | Device/node ID enum |
+
+---
+
+### 1. `routing` Section
+
+Defines which messages each device sends on each CAN bus, and to which receiver. Use `can_id_override` for messages that use a non-standard (externally defined) CAN ID.
+
+```yaml
+routing:
+ messages:
+ :
+ : # CAN1, CAN2, CAN3
+ :
+ - msg:
+ - msg:
+ can_id_override: 0x1806E5F4 # optional, for external protocols
+```
+
+**To add a new route:** nest a `- msg:` entry under the appropriate Device -> Bus -> Receiver path. The message name must match an entry in `Message ID` or `Custom CAN ID`.
+
+---
+
+### 2. `byte order` Section
+
+A single value that sets the byte order for the entire bus. Currently `little_endian`.
+
+```yaml
+byte order: little_endian
+```
+
+---
+
+### 3. `Message ID` Section (parsed by `MSGparser.pl` and `STRUCTparser.pl`)
+
+Defines every CAN message the team controls: its ID, length, and fields. This is the largest and most commonly edited section.
+
+#### Message Structure
+
+```yaml
+Message ID:
+ :
+ MSG ID: # e.g. 0x003
+ MSG LENGTH: # total message length in bytes
+ :
+ bit_start:
+ #
+ data type:
+ units: # optional
+ scaled min: # optional
+ scaled max: # optional
+ map equation: "" # optional
+```
+
+#### Data Types
+
+| Type | Meaning | C Equivalent |
+|---|---|---|
+| `b` | Boolean (1 bit) | bit field |
+| `u4` | Unsigned 4-bit | nibble |
+| `u8` | Unsigned 8-bit | `uint8_t` |
+| `u16` | Unsigned 16-bit | `uint16_t` |
+| `u32` | Unsigned 32-bit | `uint32_t` |
+| `i16` | Signed 16-bit | `int16_t` |
+| `s8` | Signed 8-bit | `int8_t` |
+| `s` | String (variable length, up to MSG LENGTH) | `char[]` |
+
+#### Field Attributes
+
+- **`bit_start`** (REQUIRED REQUIRED REQUIRED REQUIRED) — the bit offset of the field within the message. Must be the first sub-key under each field name. Parsers calculate message size based on bit starts — nothing will work without it.
+- **`data type`** (required) — one of the types listed above.
+- **`units`** (optional) — human-readable unit (e.g. `Volts`, `RPM`, `'%'`, `Celsius`, `Bool`, `Enum`, `ms`).
+- **`scaled min` / `scaled max`** (optional) — the real-world range after the map equation is applied.
+- **`map equation`** (optional) — the formula to convert the raw value to engineering units (e.g. `"0.01x"`, `"0.1x-3276.8"`).
+- **`# `** (optional) — description lines below the field name, prefixed with `#`. `STRUCTparser.pl` extracts these as doxygen-style comments in the generated struct.
+
+#### Reserved Fields
+
+Mark unused bit ranges as `Reserved`:
+```yaml
+ Reserved:
+ bit_start: 23-31
+```
+No sub-properties are needed. The parsers will skip or collapse reserved ranges.
+
+#### Adding a New Message
+
+1. Choose an unused `MSG ID` (hex).
+2. Add an entry under `Message ID` following the structure above.
+3. Add a corresponding route in the `routing` section.
+4. Rebuild — the parsers auto-generate the updated headers.
+
+#### Adding a Field to an Existing Message
+
+1. Pick the next available bit offset (must not overlap with existing fields).
+2. Add the field with `bit_start: ` and its sub-properties.
+3. Update `MSG LENGTH` if the message now occupies more bytes.
+
+---
+
+### 4. `Custom CAN ID` Section (parsed by `CANparser.pl`)
+
+Defines CAN messages that use externally defined IDs (e.g. third-party motor controllers, chargers). These IDs are **not** auto-assigned by the team.
+
+```yaml
+Custom CAN ID:
+ :
+ CAN ID: # e.g. 116, A16
+ Length:
+ signals:
+ - name: ""
+ bit_start:
+ #
+ - name: ""
+ bit_start:
+```
+
+**Key differences from `Message ID`:**
+- Uses `CAN ID` (not `MSG ID`) and the value can be decimal or bare hex (e.g. `A16`).
+- Uses `Length` (not `MSG LENGTH`).
+- Fields are listed under a `signals:` array with `name:` and `bit_start:` keys, rather than direct field names with `bit_start:` as a sub-key.
+
+**Parser behavior:** `CANparser.pl` reads each entry's `CAN ID`, sanitizes the message name into a C identifier, and emits it as an enum value in `Custom_CAN_ID.h`.
+
+#### Adding a Custom CAN ID Entry
+
+1. Add a new block under `Custom CAN ID` with `CAN ID`, `Length`, and `signals`.
+2. The `CAN ID` value will be formatted as hex (`0x...`) in the generated enum if it contains non-decimal characters, or kept as decimal otherwise.
+
+---
+
+### 5. `GR ID` Section (parsed by `GRparser.pl`)
+
+A flat mapping of device/node names to their unique network identifiers. Used for addressing in the GR protocol layer.
+
+```yaml
+GR ID:
+ : "" # e.g. "0x02"
+```
+
+**Parser behavior:** `GRparser.pl` reads each key-value pair and emits a C enum in `GR_IDS.h`. The name is sanitized (non-alphanumeric characters become underscores).
+
+#### Adding a New Device
+
+Add a single line with the device name and a unique hex ID string:
+```yaml
+ My New Board: "0x2A"
+```
diff --git a/Autogen/CAN/Src/CANparser.pl b/Autogen/CAN/Src/CANparser.pl
new file mode 100755
index 000000000..e429740ac
--- /dev/null
+++ b/Autogen/CAN/Src/CANparser.pl
@@ -0,0 +1,117 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use YAML::XS 'LoadFile';
+use File::Basename;
+
+# --- Configuration ---
+my $yaml_path = $ARGV[0] // 'format.CANdo';
+my $output_path = $ARGV[1] // 'Custom_CAN_ID.h';
+
+# 1. Load the data
+if ( !-e $yaml_path ) { die "Error: $yaml_path not found.\n"; }
+my $yaml = LoadFile($yaml_path);
+my $can_defs = $yaml->{'Custom CAN ID'};
+
+# 2. Open the file in WRITE mode ('>')
+# This updates the existing file by overwriting it with fresh data.
+open my $fh, '>', $output_path or die "Error: Cannot open $output_path: $!";
+
+print {$fh} "// Auto-generated Custom CAN ID header\n";
+print {$fh} "#ifndef CUSTOM_CAN_ID_H\n";
+print {$fh} "#define CUSTOM_CAN_ID_H\n\n";
+
+print {$fh} "typedef enum {\n";
+
+# Sort to keep the header organized
+for my $msg_name ( sort keys %$can_defs ) {
+ my $entry = $can_defs->{$msg_name};
+ next unless ref($entry) eq 'HASH';
+
+ my $can_id = $entry->{'CAN ID'};
+ next unless defined $can_id;
+
+ # Clean the name: spaces to underscores, uppercase
+ my $enum_name = uc($msg_name);
+ $enum_name =~ s/[^A-Z0-9]/_/g;
+ $enum_name =~ s/_+/_/g;
+ $enum_name =~ s/^_|_$//g;
+
+ # Format the ID (Decimal stays decimal, Hex gets 0x)
+ my $val = $can_id;
+ if ( $val =~ /^[0-9A-Fa-f]+$/ && $val !~ /^\d+$/ ) {
+ $val = "0x" . lc($val); # Handles 'A16'
+ }
+ elsif ( $val =~ /^([0-9A-Fa-f]+)d$/ ) {
+ $val = "0x" . lc($1); # Handles '10d'
+ }
+
+ print {$fh} " ${enum_name}_CAN_ID = $val,\n";
+}
+
+print {$fh} "} Custom_CAN_ID_t;\n\n";
+print {$fh} "#endif // CUSTOM_CAN_ID_H\n";
+close $fh;
+
+print "Successfully updated $output_path\n";
+
+# #!/usr/bin/env perl
+# use strict;
+# use warnings;
+# use YAML::XS 'LoadFile';
+# use File::Basename;
+# use File::Path qw(make_path);
+# my $yaml_path = $ARGV[0] // 'format.CANdo';
+# my $output_path = $ARGV[1] // 'Custom_CAN_ID.h';
+# my $dir = dirname($output_path);
+# make_path($dir) if $dir && $dir ne '.' && !-d $dir;
+
+# # Check if YAML exists to avoid confusing Perl errors
+# if ( !-e $yaml_path ) {
+# die "CANfigurator Error: Could not find YAML file at: $yaml_path\n";
+# }
+
+# # Load YAML
+# my $yaml = LoadFile($yaml_path);
+# my $can_defs = $yaml->{'Custom CAN ID'};
+
+# # Open header file using the dynamic output path
+# open my $fh, '>', $output_path
+# or die "CANfigurator Error: Cannot open $output_path: $!";
+
+# print $fh "// Auto-generated Custom CAN ID header\n";
+# print $fh "#ifndef CUSTOM_CAN_ID_H\n";
+# print $fh "#define CUSTOM_CAN_ID_H\n\n";
+
+# # Generate CAN message ID enum
+# print $fh "typedef enum {\n";
+
+# for my $msg_name ( sort keys %$can_defs ) {
+# my $entry = $can_defs->{$msg_name};
+
+# # SAFETY: Only process if this is a block of data (a Hash)
+# next unless ref($entry) eq 'HASH';
+
+# # Grab the CAN ID
+# my $can_id = $entry->{'CAN ID'};
+
+# # SAFETY: Skip if 'CAN ID' is missing
+# if ( !defined $can_id ) {
+# warn "Warning: No CAN ID found for message '$msg_name'. Skipping.\n";
+# next;
+# }
+
+# # Format the name for C
+# my $enum_name = uc($msg_name);
+# $enum_name =~ s/[^A-Z0-9]/_/g;
+
+# # Write to file: NAME_CAN_ID = 0x123,
+# print $fh " ${enum_name}_CAN_ID = $can_id,\n";
+# }
+
+# print $fh "} Custom_CAN_ID_t;\n\n";
+
+# print $fh "#endif // CUSTOM_CAN_ID_H\n";
+# close $fh;
+
+# print "CANfigurator: Successfully generated $output_path\n";
diff --git a/Autogen/CAN/Src/DBCparser.pl b/Autogen/CAN/Src/DBCparser.pl
new file mode 100644
index 000000000..0ae06b513
--- /dev/null
+++ b/Autogen/CAN/Src/DBCparser.pl
@@ -0,0 +1,199 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+# Bit size mapping
+my %TYPE_BITS = (
+ 'b' => 1,
+ 'u4' => 4,
+ 's4' => 4,
+ 'u8' => 8,
+ 's8' => 8,
+ 'i8' => 8,
+ 'u16' => 16,
+ 's16' => 16,
+ 'i16' => 16,
+ 'u32' => 32,
+ 's32' => 32,
+ 'i32' => 32,
+ 'u64' => 64,
+ 's64' => 64,
+ 'i64' => 64,
+ 'double' => 64,
+ 's' => 64
+);
+
+sub normalize {
+ my ($val) = @_;
+ return "Unknown" unless defined $val && $val ne q{};
+ $val =~ s/^\s+|\s+$//g;
+ $val =~ s/[\s.\-]+/_/g;
+ $val =~ s/[^a-zA-Z0-9_]//g;
+ return $val;
+}
+
+sub parse_eq {
+ my ($eq) = @_;
+ return ( 1, 0 ) unless defined $eq && $eq ne '-';
+ $eq =~ s/["']//g;
+
+ # Matches 20x/51
+ if ( $eq =~ /^(\d+)x\/(\d+)$/ ) { return ( $1 / $2, 0 ); }
+
+ # Matches x/655.35 or x/256
+ if ( $eq =~ /^x\/([\d.]+)$/ ) { return ( 1 / $1, 0 ); }
+
+ # Matches abs(x)/10
+ if ( $eq =~ /^abs\(x\)\/([\d.]+)$/ ) { return ( 1 / $1, 0 ); }
+
+ # Matches 0.25x
+ if ( $eq =~ /^([\d.]+)x$/ ) { return ( $1 + 0, 0 ); }
+
+ # Matches 0.01x+2 or 0.1x-3276.8
+ if ( $eq =~ /^([\d.]+)x\+([\d.]+)$/ ) { return ( $1 + 0, $2 + 0 ); }
+ if ( $eq =~ /^([\d.]+)x-([\d.]+)$/ ) { return ( $1 + 0, -( $2 + 0 ) ); }
+ if ( $eq =~ /^x-([\d.]+)$/ ) { return ( 1, -( $1 + 0 ) ); }
+ return ( 1, 0 );
+}
+
+sub parse_input {
+ my ($file) = @_;
+ my %data = ( routing => [], messages => {}, custom => {}, grid => {} );
+ open my $fh, '<', $file or die "Cannot open $file: $!";
+
+ my ( $sec, $cur_msg, $cur_sig, $sender, $bus, $target ) = ( q{}, q{}, q{}, q{}, q{}, q{} );
+
+ while (<$fh>) {
+ chomp;
+ next if /^\s*$/ || /^\s*#/;
+ my ($indent) = /^(\s*)/;
+ my $ind = length($indent);
+ my $line = $_;
+ $line =~ s/^\s+//;
+
+ if ( $ind == 0 && $line =~ /^([^:]+):/ ) {
+ $sec = $1;
+ next;
+ }
+
+ if ( $sec eq 'routing' ) {
+ next if $line =~ /^messages:/;
+ if ( $ind == 4 && $line =~ /^([^:]+):/ ) { $sender = $1; }
+ elsif ( $ind == 6 && $line =~ /^([^:]+):/ ) { $bus = $1; }
+ elsif ( $ind == 8 && $line =~ /^([^:]+):/ ) {
+ $target = $1;
+
+ # Handle inline lists like SAM1: [ { msg: Debug FD }, ... ]
+ if ( $line =~ /\[\s*\{\s*msg:\s*([^}]+)\s*\}\s*\]/ ) {
+ push @{ $data{routing} }, { sender => $sender, bus => $bus, target => $target, msg => $1 };
+ }
+ }
+ elsif ( $line =~ /^- msg:\s*(.+)/ ) {
+ push @{ $data{routing} }, { sender => $sender, bus => $bus, target => $target, msg => $1 };
+ }
+ elsif ( $line =~ /^can_id_override:\s*(.+)/ ) {
+ $data{routing}->[-1]->{override} = $1 if @{ $data{routing} };
+ }
+ }
+ elsif ( $sec eq 'Message ID' ) {
+ if ( $ind == 2 && $line =~ /^([^:]+):/ ) {
+ $cur_msg = $1;
+ $data{messages}{$cur_msg} = { sigs => {} };
+ }
+ elsif ( $line =~ /^MSG ID:\s*(.+)/ ) { $data{messages}{$cur_msg}{id} = $1; }
+ elsif ( $line =~ /^MSG LENGTH:\s*(.+)/ ) { $data{messages}{$cur_msg}{len} = $1; }
+ elsif ( $line =~ /^([^:]+):\s*#\s*bit start\s*([\d\-]+)/ ) {
+ $cur_sig = $1;
+ my $bs = $2;
+ $bs =~ s/-.*//;
+ $data{messages}{$cur_msg}{sigs}{$cur_sig} = { start => $bs };
+ }
+ elsif ( $ind == 6 && $line =~ /^([^:]+):\s*(.+)/ ) {
+ $data{messages}{$cur_msg}{sigs}{$cur_sig}{$1} = $2;
+ }
+ }
+ elsif ( $sec eq 'Custom CAN ID' ) {
+ if ( $ind == 2 && $line =~ /^["']?([^"':]+)["']?:/ ) { $cur_msg = $1; $data{custom}{$cur_msg} = { sigs => [] }; }
+ elsif ( $line =~ /^CAN ID:\s*(.+)/ ) { $data{custom}{$cur_msg}{id} = $1; }
+ elsif ( $line =~ /^Length:\s*(.+)/ ) { $data{custom}{$cur_msg}{len} = $1; }
+ elsif ( $line =~ /^name:\s*["']?([^"']+)["']?/ ) { push @{ $data{custom}{$cur_msg}{sigs} }, { name => $1 }; }
+ elsif ( $line =~ /^bit_start:\s*([\d\-]+)/ ) {
+ my $bs = $1;
+ $bs =~ s/-.*//;
+ $data{custom}{$cur_msg}{sigs}->[-1]->{start} = $bs if @{ $data{custom}{$cur_msg}{sigs} };
+ }
+ }
+ elsif ( $sec eq 'GR ID' ) {
+ if ( $line =~ /^([^:]+):\s*["']?([^"']+)["']?/ ) {
+ my ( $k, $v ) = ( $1, $2 );
+ $k =~ s/\s+$//;
+ $data{grid}{$k} = $v;
+ }
+ }
+ }
+ return \%data;
+}
+
+# --- Main execution ---
+my $input_file = $ARGV[0] or die "Usage: perl script.pl [output.dbc]\n";
+my $output_file = $ARGV[1] // "output.dbc";
+my $d = parse_input($input_file);
+
+open my $out, '>', $output_file or die $!;
+print {$out} "VERSION \"\"\n\nNS_ :\n\nBS_:\n\nBU_: " . join( ' ', sort grep { $_ ne 'ALL' } map { normalize($_) } keys %{ $d->{grid} } ) . " ALL\n\n";
+
+foreach my $r ( @{ $d->{routing} } ) {
+ my $m_name = $r->{msg};
+
+ # Prioritize Custom ID definitions if they exist for specific logic
+ my $is_custom = exists $d->{custom}{$m_name};
+ my $m_def = $is_custom ? $d->{custom}{$m_name} : $d->{messages}{$m_name};
+ next unless $m_def;
+
+ my $can_id;
+ if ( $r->{override} ) {
+ $can_id = ( $r->{override} =~ /0x/i ) ? hex( $r->{override} ) : int( $r->{override} );
+ }
+ elsif ($is_custom) {
+ $can_id = ( $m_def->{id} =~ /0x/i ) ? hex( $m_def->{id} ) : int( $m_def->{id} );
+ }
+ else {
+ my $s_val = $d->{grid}{ $r->{sender} } // "0x00";
+ my $t_val = $d->{grid}{ $r->{target} } // "0x00";
+ my $m_val = $m_def->{id} // "0x00";
+
+ # Standard ID assembly logic: [Sender(8bit)][Msg(8bit)][Target(8bit)]
+ $can_id = ( hex($s_val) << 16 ) | ( hex($m_val) << 8 ) | hex($t_val);
+ }
+
+ # Set Extended Bit if ID is > 11-bit range
+ $can_id |= 0x80000000 if $can_id > 0x7FF;
+
+ my $dbc_msg_name = normalize( $r->{sender} ) . "_" . normalize($m_name) . "_to_" . normalize( $r->{target} );
+ printf $out "BO_ %u %s: %d %s\n", $can_id, $dbc_msg_name, ( $m_def->{len} // 8 ), normalize( $r->{sender} );
+
+ my @sigs = $is_custom ? @{ $m_def->{sigs} } : map { { name => $_, %{ $m_def->{sigs}{$_} } } } keys %{ $m_def->{sigs} };
+ foreach my $s ( sort { ( $a->{start} // 0 ) <=> ( $b->{start} // 0 ) } @sigs ) {
+ next if $s->{name} =~ /Reserved/i;
+
+ my ( $f, $o ) = parse_eq( $s->{'map equation'} );
+ my $raw_type = $s->{'data type'} // 'u8';
+ my $bits = 8;
+ if ( $raw_type =~ /^(\w+)\[(\d+)\]$/ ) { $bits = ( $TYPE_BITS{$1} // 8 ) * $2; }
+ else { $bits = $TYPE_BITS{$raw_type} // 8; }
+
+ my $unit = ( $s->{units} && $s->{units} ne '-' && $s->{units} ne 'Enum' ) ? $s->{units} : "";
+ $unit =~ s/'//g;
+
+ printf $out " SG_ %s : %d|%d\@1%s (%g,%g) [%s|%s] \"%s\" %s\n",
+ normalize( $s->{name} ), $s->{start},
+ $bits,
+ ( $raw_type =~ /^[is]/ ? '-' : '+' ), $f, $o,
+ ( $s->{'scaled min'} // 0 ),
+ ( $s->{'scaled max'} // 0 ),
+ $unit,
+ normalize( $r->{target} );
+ }
+ print {$out} "\n";
+}
+close $out;
diff --git a/Autogen/CAN/Src/GRparser.pl b/Autogen/CAN/Src/GRparser.pl
new file mode 100644
index 000000000..5a46a2186
--- /dev/null
+++ b/Autogen/CAN/Src/GRparser.pl
@@ -0,0 +1,45 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use YAML::XS 'LoadFile';
+use File::Basename;
+use File::Path qw(make_path);
+my $yaml_path = $ARGV[0] // 'format.CANdo';
+my $output_path = $ARGV[1] // 'GR_IDS.h';
+my $dir = dirname($output_path);
+make_path($dir) if $dir && $dir ne '.' && !-d $dir;
+
+# Safety check for input file
+if ( !-e $yaml_path ) {
+ die "CANfigurator Error: Could not find YAML file at: $yaml_path\n";
+}
+
+# Load YAML
+my $yaml = LoadFile($yaml_path);
+my $gr_ids = $yaml->{"GR ID"};
+
+# Open header file for writing using the dynamic output path
+open my $fh, '>', $output_path or die "CANfigurator Error: Cannot open $output_path: $!";
+
+print {$fh} "// Auto-generated GR ID enum header\n";
+print {$fh} "#ifndef GR_IDS_H\n#define GR_IDS_H\n\n";
+print {$fh} "typedef enum {\n";
+
+# Loop through each device and write enum entries
+for my $name ( sort keys %$gr_ids ) {
+ my $const_name = $name;
+ $const_name =~ s/[^A-Za-z0-9]/_/g; # sanitize for C identifiers
+ my $id = $gr_ids->{$name};
+
+ # Check if ID exists to prevent empty enum values
+ if ( defined $id ) {
+ print {$fh} " $const_name = $id,\n";
+ }
+}
+
+print {$fh} "} GR_ID_t;\n\n";
+print {$fh} "#endif // GR_IDS_H\n";
+
+close $fh;
+
+print "CANfigurator: Successfully generated $output_path\n";
diff --git a/Autogen/CAN/Src/MSGparser.pl b/Autogen/CAN/Src/MSGparser.pl
new file mode 100644
index 000000000..b2afa0bef
--- /dev/null
+++ b/Autogen/CAN/Src/MSGparser.pl
@@ -0,0 +1,147 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use File::Basename;
+use File::Path qw(make_path);
+
+my $yaml_file = $ARGV[0] // 'format.CANdo';
+my $output_file = $ARGV[1] // 'can_msg_ids.h';
+my $dir = dirname($output_file);
+make_path($dir) if $dir && $dir ne '.' && !-d $dir;
+
+# Safety check: Verify the YAML source exists
+if ( !-e $yaml_file ) {
+ die "CANfigurator Error: Input YAML not found at '$yaml_file'.\n";
+}
+
+open my $fh, '<', $yaml_file or die "CANfigurator Error: Can't open $yaml_file: $!";
+
+my @msg_ids;
+
+# --- Parsing Logic ---
+while ( my $line = <$fh> ) {
+
+ # Stop parsing if we hit other sections
+ last if $line =~ /^(Custom CAN ID|GR ID):/;
+
+ # Identify a Message Name (indented by 2 spaces)
+ if ( $line =~ /^\s{2}(\w[\w\s\d\.]+):\s*$/ ) {
+ my $msg_name = $1;
+ my $found_id = 0;
+
+ # Inner loop: Scan this message block for its MSG ID
+ while ( my $next_line = <$fh> ) {
+
+ # Catch the MSG ID field (indented by 4 spaces)
+ if ( $next_line =~ /^\s{4}MSG ID:\s*(0x[0-9A-Fa-f]+)/ ) {
+ my $id = $1;
+ my $enum_name = "MSG_" . uc($msg_name);
+ $enum_name =~ s/[^A-Z0-9]+/_/g; # Clean up spaces/dots for C enum compatibility
+ $enum_name =~ s/_+/_/g;
+ $enum_name =~ s/^_|_$//g;
+
+ push @msg_ids, { name => $enum_name, id => $id };
+ $found_id = 1;
+ last;
+ }
+
+ # Safety break: If we hit a new message block or section before finding an ID,
+ # return to outer loop to process the new line.
+ if ( $next_line =~ /^\s{2}\w/ || $next_line =~ /^\w/ ) {
+
+ # Reposition the file pointer so the outer loop can read this header
+ seek( $fh, -length($next_line), 1 );
+ last;
+ }
+
+ # All other fields (bit_start, data type, map equation, etc.) are
+ # naturally ignored as the loop continues until it hits MSG ID.
+ }
+ }
+}
+close($fh);
+
+# --- Writing Logic ---
+open my $out, '>', $output_file or die "CANfigurator Error: Can't create $output_file: $!";
+
+print {$out} "// Auto-generated CAN Message IDs\n";
+print {$out} "#ifndef CAN_MSG_IDS_H\n";
+print {$out} "#define CAN_MSG_IDS_H\n\n";
+print {$out} "typedef enum {\n";
+
+foreach my $msg (@msg_ids) {
+ printf $out " %-40s = %s,\n", $msg->{name}, $msg->{id};
+}
+
+print {$out} "} can_msg_id_t;\n\n";
+print {$out} "#endif // CAN_MSG_IDS_H\n";
+
+close($out);
+
+print "CANfigurator: Generated $output_file with " . scalar(@msg_ids) . " message IDs\n";
+
+# #!/usr/bin/perl
+# use strict;
+# use warnings;
+# use File::Basename;
+# use File::Path qw(make_path);
+# my $yaml_file = $ARGV[0] // 'format.CANdo';
+# my $output_file = $ARGV[1] // 'can_msg_ids.h';
+# my $dir = dirname($output_file);
+# make_path($dir) if $dir && $dir ne '.' && !-d $dir;
+
+# # Safety check: Verify the YAML source exists before parsing
+# if ( !-e $yaml_file ) {
+# die "CANfigurator Error: Input YAML not found at '$yaml_file'.\n" . "Check your CMake source paths or provide the file as the first argument.\n";
+# }
+
+# # Open the YAML for reading
+# open( my $fh, '<', $yaml_file ) or die "CANfigurator Error: Can't open $yaml_file: $!";
+
+# my @msg_ids;
+
+# # --- Parsing Logic ---
+# while ( my $line = <$fh> ) {
+
+# # Stop parsing if we hit other sections
+# last if $line =~ /^(Custom CAN ID|GR ID):/;
+
+# if ( $line =~ /^\s{2}(\w[\w\s]+\w):\s*$/ ) {
+# my $msg_name = $1;
+
+# while ( my $next_line = <$fh> ) {
+# last if $next_line =~ /^(Custom CAN ID|GR ID):/;
+
+# if ( $next_line =~ /^\s{4}MSG ID:\s*(0x[0-9A-Fa-f]+)/ ) {
+# my $id = $1;
+# my $enum_name = "MSG_" . uc($msg_name);
+# $enum_name =~ s/\s+/_/g;
+
+# push @msg_ids, { name => $enum_name, id => $id };
+# last;
+# }
+# last if $next_line =~ /^\s{2}\w[\w\s]+:/;
+# }
+# }
+# }
+# close($fh);
+
+# # --- Writing Logic ---
+# # Open the header file for writing using the dynamic output path
+# open( my $out, '>', $output_file ) or die "CANfigurator Error: Can't create $output_file: $!";
+
+# print $out "// Auto-generated CAN Message IDs\n";
+# print $out "#ifndef CAN_MSG_IDS_H\n";
+# print $out "#define CAN_MSG_IDS_H\n\n";
+# print $out "typedef enum {\n";
+
+# foreach my $msg (@msg_ids) {
+# print $out " $msg->{name} = $msg->{id},\n";
+# }
+
+# print $out "} can_msg_id_t;\n\n";
+# print $out "#endif // CAN_MSG_IDS_H\n";
+
+# close($out);
+
+# print "CANfigurator: Generated $output_file with " . scalar(@msg_ids) . " message IDs\n";
diff --git a/Autogen/CAN/Src/STRUCTparser.pl b/Autogen/CAN/Src/STRUCTparser.pl
new file mode 100644
index 000000000..f8236fa31
--- /dev/null
+++ b/Autogen/CAN/Src/STRUCTparser.pl
@@ -0,0 +1,172 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use File::Basename;
+use File::Path qw(make_path);
+
+# --- Configuration ---
+my $yaml_path = $ARGV[0] // 'format.CANdo';
+my $output_path = $ARGV[1] // 'CANDler.h';
+my $prefix = "GR_OLD";
+
+my $dir = dirname($output_path);
+make_path($dir) if $dir && $dir ne '.' && !-d $dir;
+
+open( my $in, '<', $yaml_path ) or die "Can't open YAML: $!";
+open( my $out, '>', $output_path ) or die "Can't open Output: $!";
+
+my $in_msg_section = 0;
+my %desc_map;
+
+# --- Step 1: Pre-parse for descriptions ---
+while ( my $line = <$in> ) {
+ chomp($line);
+ if ( $line =~ /^Message ID:/ ) { $in_msg_section = 1; next; }
+ elsif ( $line =~ /^\S/ && $line !~ /^Message ID:/ ) { $in_msg_section = 0; }
+ next unless $in_msg_section;
+
+ # Match " Field Name:"
+ if ( $line =~ /^\s{2,4}([^:#\s][^:]+):/ ) {
+ my $raw_name = $1;
+ my $f_name = lc($raw_name);
+ $f_name =~ s/[^a-z0-9]/_/g;
+ $f_name =~ s/_+/_/g;
+ $f_name =~ s/^_|_$//g;
+
+ my $description = "";
+ my $pos = tell($in);
+ while ( my $sub = <$in> ) {
+ if ( $sub =~ /^\s+#\s*(.*)/ ) {
+ $description .= " " . $1;
+ }
+
+ # Stop if we hit a new field or a new message
+ last if $sub =~ /^\s{2,4}[^#\s]/ || $sub =~ /^\S/;
+ }
+ seek( $in, $pos, 0 );
+ $description =~ s/^\s+//;
+ $desc_map{$f_name} = $description if $description;
+ }
+}
+
+# --- Step 2: Generate the Header ---
+seek( $in, 0, 0 );
+$in_msg_section = 0;
+my $current_msg = "";
+my @fields = ();
+
+print {$out} "/* Auto-generated header file */\n";
+print {$out} "#ifndef ${prefix}_MESSAGES_H\n";
+print {$out} "#define ${prefix}_MESSAGES_H\n\n";
+print {$out} "#include \n\n";
+
+while ( my $line = <$in> ) {
+ chomp($line);
+ if ( $line =~ /^Message ID:/ ) { $in_msg_section = 1; next; }
+ elsif ( $line =~ /^\S/ && $line !~ /^Message ID:/ ) { $in_msg_section = 0; }
+ next unless $in_msg_section;
+
+ # Match " Message Name:" (2 spaces)
+ if ( $line =~ /^ ([^:#\s][^:]+):$/ ) {
+ process_bytes_exact( $out, $current_msg, \@fields, \%desc_map ) if $current_msg;
+ $current_msg = $1;
+ @fields = ();
+ }
+
+ # Match " Field Name:" (4 spaces)
+ elsif ( $line =~ /^\s{4}([^:#\s][^:]+):/ ) {
+ my $f_name = $1;
+ my $start = undef;
+ my $data_type = "u8";
+
+ my $pos = tell($in);
+ while ( my $sub = <$in> ) {
+ if ( $sub =~ /bit_start:\s*(\d+)/ ) {
+ $start = $1;
+ }
+ if ( $sub =~ /data type:\s*(\w+)/ ) {
+ $data_type = $1;
+ }
+
+ # Break if we hit a new field or message
+ last if $sub =~ /^\s{4}[^#\s]/ || $sub =~ /^\s{0,2}\S/;
+ }
+ seek( $in, $pos, 0 );
+
+ if ( defined $start ) {
+ push @fields, { name => $f_name, start => $start, type => $data_type };
+ }
+ }
+}
+
+# Final call for the last message
+process_bytes_exact( $out, $current_msg, \@fields, \%desc_map ) if $current_msg;
+print {$out} "#endif\n";
+
+sub process_bytes_exact {
+ my ( $fh, $name, $f_ref, $d_map ) = @_;
+ return if !$name || $name =~ /Message ID/;
+
+ my $struct_tag = uc( $name =~ s/[^A-Za-z0-9]/_/gr =~ s/_+/_/gr =~ s/^_|_$//gr );
+
+ if ( $name =~ /Cell Data/i ) {
+ print {$fh} "/** $name */\ntypedef struct {\n";
+ print {$fh} "\tstruct {\n\t\tuint8_t voltage;\n\t\tuint8_t temperature;\n\t} cells[32];\n";
+ print {$fh} "} ${prefix}_${struct_tag}_MSG;\n\n";
+ return;
+ }
+
+ my %byte_map;
+ foreach my $f (@$f_ref) {
+ my $byte_num = int( $f->{start} / 8 );
+ push @{ $byte_map{$byte_num} }, $f;
+ }
+
+ print {$fh} "/** $name */\ntypedef struct {\n";
+ my @sorted_bytes = sort { $a <=> $b } keys %byte_map;
+
+ for ( my $i = 0 ; $i < @sorted_bytes ; $i++ ) {
+ my $b_idx = $sorted_bytes[$i];
+ my @fields = @{ $byte_map{$b_idx} };
+
+ if ( scalar @fields > 2 ) {
+ my $start_byte = $b_idx;
+ my $next_real_data_byte = $b_idx + 1;
+ my $has_error = grep { $_->{name} =~ /error|fault|violation/i } @fields;
+ for ( my $j = $i + 1 ; $j < @sorted_bytes ; $j++ ) {
+ my $look_idx = $sorted_bytes[$j];
+ my @look_f = @{ $byte_map{$look_idx} };
+ if ( scalar @look_f > 2 || ( scalar @look_f == 1 && $look_f[0]->{name} =~ /reserved/i ) ) {
+ $next_real_data_byte = $look_idx + 1;
+ $i++;
+ }
+ else { $next_real_data_byte = $look_idx; last; }
+ }
+ my $len = $next_real_data_byte - $start_byte;
+ my $v_name = $has_error ? "error_fault_violation_bits" : "ping_block";
+ printf( $fh "\tuint8_t %s%s;\n", $v_name, ( $len > 1 ? "[$len]" : "" ) );
+ next;
+ }
+
+ my $f_var = ( scalar @fields == 1 ) ? lc( $fields[0]->{name} ) : join( '_', map { lc( $_->{name} ) } @fields );
+ $f_var =~ s/[^a-z0-9]/_/g;
+ $f_var =~ s/_+/_/g;
+ $f_var =~ s/^_|_$//g;
+ $f_var = "_" . $f_var if $f_var =~ /^\d/;
+
+ my $type = "uint8_t";
+ my $final_desc = "";
+ foreach my $f (@fields) {
+ $type = "uint16_t" if $f->{type} =~ /16/;
+ $type = "uint32_t" if $f->{type} =~ /32/;
+ my $clean_name = lc( $f->{name} ) =~ s/[^a-z0-9]/_/gr =~ s/_+/_/gr =~ s/^_|_$//gr;
+ $final_desc .= " " . $d_map->{$clean_name} if $d_map->{$clean_name};
+ }
+ $final_desc =~ s/^\s+//;
+
+ if ($final_desc) { print {$fh} "\t/** $final_desc (Byte $b_idx) */\n"; }
+ else { print {$fh} "\t/** Byte $b_idx */\n"; }
+ printf( $fh "\t%-10s %-30s\n", $type, $f_var . ";" );
+ }
+ print {$fh} "} ${prefix}_${struct_tag}_MSG;\n\n";
+}
diff --git a/Autogen/CAN/empty.txt b/Autogen/CAN/empty.txt
deleted file mode 100644
index e69de29bb..000000000
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ef62927ea..b0a7213de 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -43,6 +43,9 @@ include("${lib_path}/Utils/CircularBuffer/circular-buffer-lib.cmake")
include("${lib_path}/cmake/gr-lib.cmake")
include("${lib_path}/Utils/BitManipulations/bit-utils.cmake")
+# Autogen
+include("Autogen/CAN/CANfigurator.cmake")
+
# Peripherals
include("${lib_path}/Peripherals/USART/common.cmake")
include("${lib_path}/Peripherals/CAN/common.cmake")