diff --git a/can/common.cc b/can/common.cc index 3fec5c4..68c3ee0 100644 --- a/can/common.cc +++ b/can/common.cc @@ -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; } diff --git a/can/common.h b/can/common.h index 4d0e14c..841c060 100644 --- a/can/common.h +++ b/can/common.h @@ -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); diff --git a/can/common.pxd b/can/common.pxd index e07e0b3..0082110 100644 --- a/can/common.pxd +++ b/can/common.pxd @@ -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 diff --git a/can/common_dbc.h b/can/common_dbc.h index ae6f443..317e805 100644 --- a/can/common_dbc.h +++ b/can/common_dbc.h @@ -38,6 +38,7 @@ enum SignalType { PEDAL_COUNTER, VOLKSWAGEN_CHECKSUM, VOLKSWAGEN_COUNTER, + SUBARU_CHECKSUM, }; struct Signal { diff --git a/can/dbc_template.cc b/can/dbc_template.cc index f9540fc..439643a 100644 --- a/can/dbc_template.cc +++ b/can/dbc_template.cc @@ -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" %} diff --git a/can/packer.cc b/can/packer.cc index fb81952..7efedfa 100644 --- a/can/packer.cc +++ b/can/packer.cc @@ -99,6 +99,9 @@ uint64_t CANPacker::pack(uint32_t address, const std::vector &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"); } diff --git a/can/process_dbc.py b/can/process_dbc.py index a1c91a8..c39184d 100755 --- a/can/process_dbc.py +++ b/can/process_dbc.py @@ -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 diff --git a/subaru_crosstrek_2018.dbc b/subaru_crosstrek_2018.dbc index 050dfa1..47d8b77 100644 --- a/subaru_crosstrek_2018.dbc +++ b/subaru_crosstrek_2018.dbc @@ -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 @@ -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 @@ -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 @@ -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 @@ -87,7 +87,7 @@ 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 @@ -95,12 +95,12 @@ BO_ 314 Wheel_Speeds: 8 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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -171,7 +171,7 @@ 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 @@ -179,42 +179,42 @@ BO_ 546 ES_Status: 8 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 @@ -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 @@ -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 @@ -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 @@ -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 diff --git a/subaru_global_2017.dbc b/subaru_global_2017.dbc index d098837..f1a38d8 100644 --- a/subaru_global_2017.dbc +++ b/subaru_global_2017.dbc @@ -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_ Off_Accel : 60|4@1+ (1,0) [0|7] "" XXX SG_ NEW_SIGNAL_3 : 56|4@1+ (1,0) [0|255] "" XXX SG_ Throttle_Cruise : 40|8@1+ (1,0) [0|255] "" XXX @@ -55,7 +55,7 @@ BO_ 64 Throttle: 8 XXX SG_ NEW_SIGNAL_4 : 28|5@1+ (1,0) [0|1] "" 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 @@ -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 @@ -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 @@ -87,7 +87,7 @@ 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 @@ -95,7 +95,7 @@ BO_ 314 Wheel_Speeds: 8 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 @@ -106,7 +106,7 @@ BO_ 280 NEW_MSG_6: 8 XXX SG_ NEW_SIGNAL_4 : 40|4@1+ (1,0) [0|255] "" 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_Torque_Sensor : 16|11@1- (-1,0) [0|3] "" XXX SG_ Steering_Angle : 32|16@1- (-0.0217,0) [0|255] "" X @@ -115,39 +115,39 @@ BO_ 281 Steering_Torque: 8 XXX SG_ Steer_Error_2 : 28|1@1+ (1,0) [0|3] "" 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_2 : 56|8@1+ (1,0) [0|255] "" XXX SG_ Brake_1 : 48|8@1+ (1,0) [0|255] "" XXX BO_ 313 Brake_Pedal: 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_ Brake_Pedal_On : 34|1@1+ (1,0) [0|7] "" XXX SG_ Brake_Pedal : 36|12@1+ (1,0) [0|65535] "" 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_ Brake_Pressure : 16|16@1+ (1,0) [0|255] "" XXX SG_ __Status : 36|4@1+ (1,0) [0|63] "" 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_ Signal1 : 12|20@1+ (1,0) [0|15] "" XXX SG_ Signal2 : 32|24@1+ (1,0) [0|15] "" XXX @@ -155,43 +155,43 @@ BO_ 545 ES_Distance: 8 XXX SG_ Signal3 : 57|7@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 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 @@ -209,7 +209,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_ Cruise_Distance : 28|3@1+ (1,0) [0|3] "" XXX SG_ Cruise_Disengaged : 35|1@1+ (1,0) [0|3] "" XXX @@ -223,7 +223,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 @@ -247,57 +247,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 @@ -310,38 +310,38 @@ 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 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