mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-07-05 05:22:07 +08:00
Subaru: calculate checksum in can packer (#1356)
* subaru checksum moved to can packer * unused old-commit-hash: 789764945c173540e7a3d971c8ec9f365da1bf05
This commit is contained in:
@@ -6,7 +6,7 @@ from opendbc.can.packer import CANPacker
|
||||
|
||||
|
||||
class CarControllerParams():
|
||||
def __init__(self, car_fingerprint):
|
||||
def __init__(self):
|
||||
self.STEER_MAX = 2047 # max_steer 4095
|
||||
self.STEER_STEP = 2 # how often we update the steer cmd
|
||||
self.STEER_DELTA_UP = 50 # torque increase per refresh, 0.8s to max
|
||||
@@ -27,7 +27,7 @@ class CarController():
|
||||
|
||||
# Setup detection helper. Routes commands to
|
||||
# an appropriate CAN bus number.
|
||||
self.params = CarControllerParams(CP.carFingerprint)
|
||||
self.params = CarControllerParams()
|
||||
self.packer = CANPacker(DBC[CP.carFingerprint]['pt'])
|
||||
|
||||
def update(self, enabled, CS, frame, actuators, pcm_cancel_cmd, visual_alert, left_line, right_line):
|
||||
@@ -56,7 +56,7 @@ class CarController():
|
||||
if not lkas_enabled:
|
||||
apply_steer = 0
|
||||
|
||||
can_sends.append(subarucan.create_steering_control(self.packer, CS.CP.carFingerprint, apply_steer, frame, P.STEER_STEP))
|
||||
can_sends.append(subarucan.create_steering_control(self.packer, apply_steer, frame, P.STEER_STEP))
|
||||
|
||||
self.apply_steer_last = apply_steer
|
||||
|
||||
|
||||
@@ -111,7 +111,6 @@ class CarState(CarStateBase):
|
||||
("Main", "ES_Distance", 0),
|
||||
("Signal3", "ES_Distance", 0),
|
||||
|
||||
("Checksum", "ES_LKAS_State", 0),
|
||||
("Counter", "ES_LKAS_State", 0),
|
||||
("Keep_Hands_On_Wheel", "ES_LKAS_State", 0),
|
||||
("Empty_Box", "ES_LKAS_State", 0),
|
||||
|
||||
@@ -1,36 +1,24 @@
|
||||
import copy
|
||||
from cereal import car
|
||||
from selfdrive.car.subaru.values import CAR
|
||||
|
||||
VisualAlert = car.CarControl.HUDControl.VisualAlert
|
||||
|
||||
def subaru_checksum(packer, values, addr):
|
||||
dat = packer.make_can_msg(addr, 0, values)[2]
|
||||
return (sum(dat[1:]) + (addr >> 8) + addr) & 0xff
|
||||
def create_steering_control(packer, apply_steer, frame, steer_step):
|
||||
|
||||
def create_steering_control(packer, car_fingerprint, apply_steer, frame, steer_step):
|
||||
# counts from 0 to 15 then back to 0 + 16 for enable bit
|
||||
idx = ((frame // steer_step) % 16)
|
||||
|
||||
if car_fingerprint == CAR.IMPREZA:
|
||||
#counts from 0 to 15 then back to 0 + 16 for enable bit
|
||||
idx = ((frame // steer_step) % 16)
|
||||
|
||||
values = {
|
||||
"Counter": idx,
|
||||
"LKAS_Output": apply_steer,
|
||||
"LKAS_Request": 1 if apply_steer != 0 else 0,
|
||||
"SET_1": 1
|
||||
}
|
||||
values["Checksum"] = subaru_checksum(packer, values, 0x122)
|
||||
values = {
|
||||
"Counter": idx,
|
||||
"LKAS_Output": apply_steer,
|
||||
"LKAS_Request": 1 if apply_steer != 0 else 0,
|
||||
"SET_1": 1
|
||||
}
|
||||
|
||||
return packer.make_can_msg("ES_LKAS", 0, values)
|
||||
|
||||
def create_steering_status(packer, car_fingerprint, apply_steer, frame, steer_step):
|
||||
|
||||
if car_fingerprint == CAR.IMPREZA:
|
||||
values = {}
|
||||
values["Checksum"] = subaru_checksum(packer, {}, 0x322)
|
||||
|
||||
return packer.make_can_msg("ES_LKAS_State", 0, values)
|
||||
def create_steering_status(packer, apply_steer, frame, steer_step):
|
||||
return packer.make_can_msg("ES_LKAS_State", 0, {})
|
||||
|
||||
def create_es_distance(packer, es_distance_msg, pcm_cancel_cmd):
|
||||
|
||||
@@ -38,8 +26,6 @@ def create_es_distance(packer, es_distance_msg, pcm_cancel_cmd):
|
||||
if pcm_cancel_cmd:
|
||||
values["Main"] = 1
|
||||
|
||||
values["Checksum"] = subaru_checksum(packer, values, 545)
|
||||
|
||||
return packer.make_can_msg("ES_Distance", 0, values)
|
||||
|
||||
def create_es_lkas(packer, es_lkas_msg, visual_alert, left_line, right_line):
|
||||
@@ -51,6 +37,4 @@ def create_es_lkas(packer, es_lkas_msg, visual_alert, left_line, right_line):
|
||||
values["LKAS_Left_Line_Visible"] = int(left_line)
|
||||
values["LKAS_Right_Line_Visible"] = int(right_line)
|
||||
|
||||
values["Checksum"] = subaru_checksum(packer, values, 802)
|
||||
|
||||
return packer.make_can_msg("ES_LKAS_State", 0, values)
|
||||
|
||||
Reference in New Issue
Block a user