Skip to content

Commit

Permalink
CANPacker: Subaru checksum support (ErichMoraga#241)
Browse files Browse the repository at this point in the history
* subaru global: use standard checksum signal naming convention

* subaru checksum

* ignore first byte

* update other subaru dbcs

* revert outback changes, checksum is in a different byte
  • Loading branch information
adeebshihadeh authored Apr 13, 2020
1 parent 36c471e commit a57e7dd
Show file tree
Hide file tree
Showing 9 changed files with 111 additions and 85 deletions.
15 changes: 13 additions & 2 deletions can/common.cc
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,19 @@ unsigned int toyota_checksum(unsigned int address, uint64_t d, int l) {
d >>= 8; // remove checksum

unsigned int s = l;
while (address) { s += address & 0xff; address >>= 8; }
while (d) { s += d & 0xff; d >>= 8; }
while (address) { s += address & 0xFF; address >>= 8; }
while (d) { s += d & 0xFF; d >>= 8; }

return s & 0xFF;
}

unsigned int subaru_checksum(unsigned int address, uint64_t d, int l) {
d >>= ((8-l)*8); // remove padding

unsigned int s = 0;
while (address) { s += address & 0xFF; address >>= 8; }
l -= 1; // checksum is first byte
while (l) { s += d & 0xFF; d >>= 8; l -= 1; }

return s & 0xFF;
}
Expand Down
1 change: 1 addition & 0 deletions can/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
// Helper functions
unsigned int honda_checksum(unsigned int address, uint64_t d, int l);
unsigned int toyota_checksum(unsigned int address, uint64_t d, int l);
unsigned int subaru_checksum(unsigned int address, uint64_t d, int l);
void init_crc_lookup_tables();
unsigned int volkswagen_crc(unsigned int address, uint64_t d, int l);
unsigned int pedal_checksum(uint64_t d, int l);
Expand Down
3 changes: 2 additions & 1 deletion can/common.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ cdef extern from "common_dbc.h":
PEDAL_CHECKSUM,
PEDAL_COUNTER,
VOLKSWAGEN_CHECKSUM,
VOLKSWAGEN_COUNTER
VOLKSWAGEN_COUNTER,
SUBARU_CHECKSUM

cdef struct Signal:
const char* name
Expand Down
1 change: 1 addition & 0 deletions can/common_dbc.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ enum SignalType {
PEDAL_COUNTER,
VOLKSWAGEN_CHECKSUM,
VOLKSWAGEN_COUNTER,
SUBARU_CHECKSUM,
};

struct Signal {
Expand Down
2 changes: 2 additions & 0 deletions can/dbc_template.cc
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ const Signal sigs_{{address}}[] = {
.type = SignalType::VOLKSWAGEN_CHECKSUM,
{% elif checksum_type == "volkswagen" and sig.name == "COUNTER" %}
.type = SignalType::VOLKSWAGEN_COUNTER,
{% elif checksum_type == "subaru" and sig.name == "CHECKSUM" %}
.type = SignalType::SUBARU_CHECKSUM,
{% elif address in [512, 513] and sig.name == "CHECKSUM_PEDAL" %}
.type = SignalType::PEDAL_CHECKSUM,
{% elif address in [512, 513] and sig.name == "COUNTER_PEDAL" %}
Expand Down
3 changes: 3 additions & 0 deletions can/packer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,9 @@ uint64_t CANPacker::pack(uint32_t address, const std::vector<SignalPackValue> &s
// The correct fix is unclear but this works for the moment.
unsigned int chksm = volkswagen_crc(address, ReverseBytes(ret), message_lookup[address].size);
ret = set_value(ret, sig, chksm);
} else if (sig.type == SignalType::SUBARU_CHECKSUM) {
unsigned int chksm = subaru_checksum(address, ret, message_lookup[address].size);
ret = set_value(ret, sig, chksm);
} else {
//WARN("CHECKSUM signal type not valid\n");
}
Expand Down
7 changes: 7 additions & 0 deletions can/process_dbc.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,13 @@ def process(in_fn, out_fn):
checksum_start_bit = 0
counter_start_bit = 0
little_endian = True
elif can_dbc.name.startswith(("subaru_")):
checksum_type = "subaru"
checksum_size = 8
counter_size = None
checksum_start_bit = 0
counter_start_bit = None
little_endian = True
else:
checksum_type = None
checksum_size = None
Expand Down
84 changes: 42 additions & 42 deletions subaru_crosstrek_2018.dbc
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ BU_: XXX X

BO_ 2 Steering: 8 XXX
SG_ Counter : 25|3@1+ (1,0) [0|7] "" XXX
SG_ Checksum : 32|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 32|8@1+ (1,0) [0|255] "" XXX
SG_ Steering_Angle : 7|16@0- (0.1,0) [0|65535] "" XXX

BO_ 64 Throttle: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_1 : 12|4@1+ (1,0) [0|1] "" XXX
SG_ Engine_RPM : 16|12@1+ (1,0) [0|255] "" XXX
Expand All @@ -55,7 +55,7 @@ BO_ 64 Throttle: 8 XXX
SG_ Off_Accel : 60|4@1+ (1,0) [0|7] "" XXX

BO_ 65 NEW_MSG_1: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_4 : 32|12@1+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_3 : 16|12@1+ (1,0) [0|1] "" XXX
Expand All @@ -64,7 +64,7 @@ BO_ 65 NEW_MSG_1: 8 XXX
SG_ NEW_SIGNAL_7 : 59|2@0+ (1,0) [0|255] "" XXX

BO_ 72 Transmission: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_5 : 16|8@1+ (1,0) [0|255] "" XXX
SG_ Gear : 24|8@1+ (1,0) [0|255] "" XXX
Expand All @@ -74,7 +74,7 @@ BO_ 72 Transmission: 8 XXX
BO_ 316 NEW_MSG_3: 8 XXX

BO_ 326 Cruise_Buttons: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Signal1 : 12|30@1+ (1,0) [0|1073741823] "" XXX
SG_ Main : 42|1@1+ (1,0) [0|1] "" XXX
Expand All @@ -87,20 +87,20 @@ BO_ 315 G_Sensor: 8 XXX
SG_ Latitudinal : 48|8@1- (1,0) [0|255] "" XXX

BO_ 314 Wheel_Speeds: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ FR : 12|13@1+ (0.057,0) [0|255] "kph" XXX
SG_ RR : 25|13@1+ (0.057,0) [0|255] "kph" XXX
SG_ FL : 51|13@1+ (0.057,0) [0|255] "kph" XXX
SG_ RL : 38|13@1+ (0.057,0) [0|255] "kph" XXX

BO_ 73 NEW_MSG_5: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_1 : 32|8@1+ (1,0) [0|4095] "" XXX
SG_ NEW_SIGNAL_2 : 24|8@1+ (1,0) [0|127] "" XXX

BO_ 280 STOP_START: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|1] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|1] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_1 : 12|12@1- (1,0) [0|4095] "" XXX
SG_ NEW_SIGNAL_4 : 40|4@1+ (1,0) [0|255] "" XXX
Expand All @@ -109,7 +109,7 @@ BO_ 280 STOP_START: 8 XXX
SG_ State : 63|1@1+ (1,0) [0|1] "" XXX

BO_ 281 Steering_Torque: 8 XXX
SG_ checksum : 0|8@1+ (1,0) [0|3] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|3] "" XXX
SG_ counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Steer_Error_1 : 12|1@0+ (1,0) [0|7] "" XXX
SG_ Steer_Torque_Sensor : 16|11@1- (-1,0) [0|3] "" XXX
Expand All @@ -118,13 +118,13 @@ BO_ 281 Steering_Torque: 8 XXX
SG_ Steer_Torque_Output : 48|11@1- (-1,0) [0|31] "" XXX

BO_ 312 Brake_Pressure_L_R: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|31] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|31] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|3] "" XXX
SG_ Brake_1 : 48|8@1+ (1,0) [0|255] "" XXX
SG_ Brake_2 : 56|8@1+ (1,0) [0|255] "" XXX

BO_ 313 Brake_Pedal: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|1] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|1] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|1] "" XXX
SG_ Signal1 : 12|22@1+ (1,0) [0|1] "" XXX
SG_ Brake_Pedal_On : 34|1@1+ (1,0) [0|7] "" XXX
Expand All @@ -133,21 +133,21 @@ BO_ 313 Brake_Pedal: 8 XXX
SG_ Signal3 : 48|16@1+ (1,0) [0|1] "" XXX

BO_ 290 ES_LKAS: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ LKAS_Output : 16|13@1- (-1,0) [0|3] "" XXX
SG_ LKAS_Request : 29|1@0+ (1,0) [0|3] "" XXX
SG_ SET_1 : 12|1@0+ (1,0) [0|3] "" XXX

BO_ 722 NEW_MSG_10: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_1 : 27|3@1+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_4 : 56|2@1+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_5 : 45|2@0+ (1,0) [0|3] "" XXX

BO_ 544 ES_Brake: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Signal1 : 12|4@1+ (1,0) [0|1] "" XXX
SG_ Brake_Pressure : 16|16@1+ (1,0) [0|255] "" XXX
Expand All @@ -156,7 +156,7 @@ BO_ 544 ES_Brake: 8 XXX
SG_ Signal3 : 40|24@1+ (1,0) [0|1] "" XXX

BO_ 545 ES_Distance: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ ES_Cruise_Throttle : 12|20@1+ (1,0) [0|15] "" XXX
SG_ Car_Follow : 32|1@1+ (1,0) [0|1] "" XXX
Expand All @@ -171,50 +171,50 @@ BO_ 545 ES_Distance: 8 XXX
SG_ Signal4 : 59|5@1+ (1,0) [0|1] "" XXX

BO_ 546 ES_Status: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ RPM : 16|12@1+ (1,0) [0|255] "" XXX
SG_ Cruise_Activated : 29|1@0+ (1,0) [0|3] "" XXX
SG_ Cruise_Brake : 30|1@1+ (1,0) [0|3] "" XXX
SG_ Cruise_Hold : 31|1@1+ (1,0) [0|1] "" XXX

BO_ 554 ES_Blank: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ SET_65535 : 39|16@1+ (1,0) [0|16777215] "" XXX
SG_ SET_1 : 13|1@1+ (1,0) [0|7] "" XXX

BO_ 557 NEW_MSG_14: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX

BO_ 576 CruiseControl: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_5 : 42|1@1+ (1,0) [0|3] "" XXX
SG_ Cruise_On : 40|1@1+ (1,0) [0|3] "" XXX
SG_ Cruise_Activated : 41|1@1+ (1,0) [0|3] "" XXX

BO_ 577 NEW_MSG_16: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_1 : 16|12@1+ (1,0) [0|255] "" XXX

BO_ 552 NEW_MSG_17: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_1 : 48|1@1+ (1,0) [0|3] "" XXX

BO_ 912 Dashlights: 8 XXX
SG_ NEW_SIGNAL_1 : 32|1@1+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_2 : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ RIGHT_BLINKER : 51|1@1+ (1,0) [0|1] "" XXX
SG_ LEFT_BLINKER : 50|1@1+ (1,0) [0|3] "" XXX
SG_ SEATBELT_FL : 48|1@1+ (1,0) [0|1] "" XXX

BO_ 940 BodyInfo: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|1] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|1] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_FL : 32|1@1+ (1,0) [0|255] "" XXX
SG_ DOOR_OPEN_FR : 33|1@1+ (1,0) [0|3] "" XXX
Expand All @@ -228,7 +228,7 @@ BO_ 940 BodyInfo: 8 XXX
SG_ WIPERS : 62|1@0+ (1,0) [0|1] "" XXX

BO_ 801 ES_DashStatus: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|7] "" XXX
SG_ PCB_Off : 12|1@1+ (1,0) [0|1] "" XXX
SG_ LDW_Off : 13|1@1+ (1,0) [0|1] "" XXX
Expand All @@ -244,7 +244,7 @@ BO_ 801 ES_DashStatus: 8 XXX
SG_ Cruise_State : 60|4@1+ (1,0) [0|15] "" XXX

BO_ 802 ES_LKAS_State: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Keep_Hands_On_Wheel : 12|1@1+ (1,0) [0|1] "" XXX
SG_ Empty_Box : 13|1@1+ (1,0) [0|1] "" XXX
Expand All @@ -268,57 +268,57 @@ BO_ 802 ES_LKAS_State: 8 XXX
SG_ Signal5 : 37|27@1+ (1,0) [0|1] "" XXX

BO_ 805 ES_NEW_MSG_22: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_3 : 22|2@1+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_1 : 14|1@1+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_4 : 15|1@1+ (1,0) [0|3] "" XXX

BO_ 808 NEW_MSG_23: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX

BO_ 837 NEW_MSG_24: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_3 : 40|8@1+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_4 : 32|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_5 : 24|8@1+ (1,0) [0|255] "" XXX

BO_ 838 NEW_MSG_25: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_3 : 16|8@1+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_4 : 40|1@1+ (1,0) [0|3] "" XXX

BO_ 842 NEW_MSG_26: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_3 : 32|8@1+ (1,0) [0|255] "" XXX

BO_ 915 NEW_MSG_27: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_3 : 16|8@1+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_4 : 32|9@1+ (1,0) [0|255] "" XXX

BO_ 1788 NEW_MSG_28: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_3 : 40|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_4 : 48|8@1+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_5 : 16|8@1+ (1,0) [0|255] "" XXX

BO_ 816 NEW_MSG_29: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX

BO_ 826 NEW_MSG_30: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX

BO_ 839 NEW_MSG_31: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX

BO_ 2015 NEW_MSG_32: 8 XXX
Expand All @@ -331,39 +331,39 @@ BO_ 2024 NEW_MSG_33: 8 XXX
SG_ NEW_SIGNAL_4 : 32|8@1+ (1,0) [0|255] "" XXX

BO_ 1614 NEW_MSG_34: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX

BO_ 1617 NEW_MSG_35: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX

BO_ 1632 NEW_MSG_36: 8 XXX
SG_ NEW_SIGNAL_1 : 55|16@0+ (1,0) [0|255] "" XXX

BO_ 1650 NEW_MSG_37: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX

BO_ 1657 NEW_MSG_38: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX

BO_ 1658 NEW_MSG_39: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_3 : 33|1@1+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_4 : 31|1@0+ (1,0) [0|3] "" XXX

BO_ 1677 Dash_State: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_3 : 16|4@1+ (1,0) [0|15] "" XXX
SG_ Units : 29|3@1+ (1,0) [0|7] "" XXX
SG_ Icy_Road_Warning : 20|1@1+ (1,0) [0|1] "" XXX

BO_ 1743 NEW_MSG_41: 8 XXX
SG_ Checksum : 0|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX

BO_ 1785 NEW_MSG_42: 8 XXX
Expand Down
Loading

0 comments on commit a57e7dd

Please sign in to comment.