Ya'll remember club penguin?
This commit is contained in:
@@ -37,7 +37,8 @@ installation guides, and software configuration.
|
||||
* Galaxy: StarPilot's portal to configure your comma device using your phone from anywhere.
|
||||
Download models, change settings, update software, visualize live model outputs for tuning.
|
||||
* Always On Lateral (full time steering assist)*
|
||||
* Learning Speed Limit Controller*
|
||||
* Speed Limit Controller*
|
||||
* Learning Curve Speed Controller*
|
||||
* Conditional Experimental Mode (CEM)*
|
||||
* Driving Profiles*
|
||||
* Custom themes*
|
||||
|
||||
@@ -145,6 +145,8 @@ struct StarPilotOnroadEvent @0xa5cd762cd951a455 {
|
||||
vCruise69 @26;
|
||||
yourFrogTriedToKillMe @27;
|
||||
youveGotMail @28;
|
||||
switchbackModeActive @29;
|
||||
switchbackModeInactive @30;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -166,6 +166,7 @@ inline static std::unordered_map<std::string, ParamKeyAttributes> keys = {
|
||||
{"BuildMetadata", {PERSISTENT, STRING, "", "", 0}},
|
||||
{"BlindSpotMetrics", {PERSISTENT, BOOL, "1", "0", 3}},
|
||||
{"BlindSpotPath", {PERSISTENT, BOOL, "1", "0", 1}},
|
||||
{"BelowSteerSpeedVolume", {PERSISTENT, INT, "101", "101", 2}},
|
||||
{"BorderMetrics", {PERSISTENT, BOOL, "0", "0", 3}},
|
||||
{"CalibratedLateralAcceleration", {PERSISTENT, FLOAT, "2.0", "2.0", 2}},
|
||||
{"CalibrationProgress", {PERSISTENT, FLOAT, "0.0", "0.0", 3}},
|
||||
@@ -326,6 +327,7 @@ inline static std::unordered_map<std::string, ParamKeyAttributes> keys = {
|
||||
{"MapGears", {PERSISTENT, BOOL, "0", "0", 2}},
|
||||
{"MapsSelected", {PERSISTENT, STRING, "", "", 0}},
|
||||
{"MapSpeedLimit", {CLEAR_ON_MANAGER_START, FLOAT, "0.0", "0.0"}},
|
||||
{"NextMapSpeedLimit", {CLEAR_ON_MANAGER_START, JSON, "{}", "{}"}},
|
||||
{"MaxDesiredAcceleration", {PERSISTENT, FLOAT, "4.0", "2.0", 2}},
|
||||
{"MinimumBackupSize", {PERSISTENT, INT, "0", "0"}},
|
||||
{"MinimumLaneChangeSpeed", {PERSISTENT, FLOAT, "20.0", "20.0", 2}},
|
||||
@@ -479,6 +481,8 @@ inline static std::unordered_map<std::string, ParamKeyAttributes> keys = {
|
||||
{"StopDistance", {PERSISTENT, FLOAT, "6.0", "6.0", 2}},
|
||||
{"StoppingDecelRate", {PERSISTENT, FLOAT, "0.0", "0.0", 3}},
|
||||
{"StoppingDecelRateStock", {PERSISTENT, FLOAT, "0.0", "0.0", 3}},
|
||||
{"SwitchbackModeCooldown", {PERSISTENT, INT, "5", "0", 2}},
|
||||
{"SwitchbackModeEnabled", {CLEAR_ON_OFFROAD_TRANSITION, BOOL, "0", "0"}},
|
||||
{"SubaruSNG", {PERSISTENT, BOOL, "1", "0", 2}},
|
||||
{"TacoTune", {PERSISTENT, BOOL, "0", "0", 2}},
|
||||
{"TacoTuneHacks", {PERSISTENT, BOOL, "0", "0", 2}},
|
||||
|
||||
Binary file not shown.
@@ -29,7 +29,6 @@ class CarState(CarStateBase):
|
||||
ret.cruiseState.enabled = True
|
||||
ret.cruiseState.available = True
|
||||
|
||||
# StarPilot variables
|
||||
fp_ret = custom.StarPilotCarState.new_message()
|
||||
|
||||
return ret, fp_ret
|
||||
|
||||
@@ -18,7 +18,6 @@ from openpilot.common.params import Params
|
||||
|
||||
FRAME_FINGERPRINT = 100 # 1s
|
||||
|
||||
# StarPilot variables
|
||||
StarPilotCarParams = custom.StarPilotCarParams
|
||||
|
||||
|
||||
@@ -46,7 +45,7 @@ def _get_interface_names() -> dict[str, list[str]]:
|
||||
interface_names = _get_interface_names()
|
||||
interfaces = load_interfaces(interface_names)
|
||||
|
||||
# Legacy StarPilot Bolt rename migration. Keep here to prevent force-fingerprint
|
||||
# Legacy Bolt rename migration. Keep here to prevent force-fingerprint
|
||||
# params from selecting a removed platform name and crashing detection.
|
||||
LEGACY_FORCED_CANDIDATE_MAP = {
|
||||
"CHEVROLET_BOLT_CC_2019_2021": "CHEVROLET_BOLT_CC_2018_2021",
|
||||
@@ -300,7 +299,6 @@ def get_car(can_recv: CanRecvCallable, can_send: CanSendCallable, set_obd_multip
|
||||
CP.fingerprintSource = source
|
||||
CP.fuzzyFingerprint = not exact_match
|
||||
|
||||
# StarPilot variables
|
||||
FPCP: StarPilotCarParams = CarInterface.get_starpilot_params(candidate, fingerprints, car_fw, CP, starpilot_toggles)
|
||||
|
||||
if CP.brand == "toyota" and FPCP.flags & ToyotaStarPilotFlags.SMART_DSU.value:
|
||||
|
||||
@@ -28,7 +28,6 @@ class CarState(CarStateBase):
|
||||
# RealFast variables
|
||||
self.button_message = "CRUISE_BUTTONS_ALT" if FPCP.flags & ChryslerStarPilotFlags.RAM_HD_ALT_BUTTONS else "CRUISE_BUTTONS"
|
||||
|
||||
# StarPilot variables
|
||||
self.lkas_button = 0
|
||||
|
||||
def update(self, can_parsers, starpilot_toggles) -> structs.CarState:
|
||||
@@ -104,7 +103,6 @@ class CarState(CarStateBase):
|
||||
|
||||
buttonEvents = create_button_events(self.distance_button, prev_distance_button, {1: ButtonType.gapAdjustCruise})
|
||||
|
||||
# StarPilot variables
|
||||
fp_ret = custom.StarPilotCarState.new_message()
|
||||
|
||||
self.prev_lkas_button = self.lkas_button
|
||||
|
||||
@@ -19,7 +19,6 @@ class ChryslerFlags(IntFlag):
|
||||
HIGHER_MIN_STEERING_SPEED = 1
|
||||
|
||||
|
||||
# StarPilot variables
|
||||
class ChryslerStarPilotFlags(IntFlag):
|
||||
RAM_HD_ALT_BUTTONS = 1
|
||||
|
||||
|
||||
@@ -114,7 +114,6 @@ class CarState(CarStateBase):
|
||||
*create_button_events(self.lc_button, prev_lc_button, {1: ButtonType.lkas}),
|
||||
]
|
||||
|
||||
# StarPilot variables
|
||||
fp_ret = custom.StarPilotCarState.new_message()
|
||||
|
||||
return ret, fp_ret
|
||||
|
||||
@@ -72,7 +72,6 @@ class CarController(CarControllerBase):
|
||||
self.malibu_button_phase = 0
|
||||
self.malibu_last_button_ts_nanos = 0
|
||||
|
||||
# OPGM variables
|
||||
def calc_pedal_command(self, accel: float, long_active: bool, v_ego: float):
|
||||
if not long_active:
|
||||
self.planner_regen_hold = False
|
||||
@@ -372,7 +371,7 @@ class CarController(CarControllerBase):
|
||||
else:
|
||||
long_pitch_enabled = bool(getattr(starpilot_toggles, "long_pitch", True))
|
||||
pedal_long_path = bool(self.CP.enableGasInterceptorDEPRECATED and (self.CP.flags & GMFlags.PEDAL_LONG.value))
|
||||
long_pitch_for_powertrain = long_pitch_enabled and not pedal_long_path
|
||||
long_pitch_for_powertrain = long_pitch_enabled or pedal_long_path
|
||||
|
||||
if self.is_volt:
|
||||
if long_pitch_for_powertrain and len(CC.orientationNED) == 3 and CS.out.vEgo > self.CP.vEgoStopping:
|
||||
@@ -479,7 +478,6 @@ class CarController(CarControllerBase):
|
||||
resume = actuators.longControlState != LongCtrlState.starting or CC.cruiseControl.resume
|
||||
at_full_stop = at_full_stop and not resume
|
||||
|
||||
# StarPilot variables
|
||||
if CC.cruiseControl.resume and CS.pcm_acc_status == AccState.STANDSTILL and starpilot_toggles.volt_sng:
|
||||
acc_engaged = False
|
||||
else:
|
||||
@@ -592,7 +590,6 @@ class CarController(CarControllerBase):
|
||||
self.prev_op_enabled = CC.enabled
|
||||
self.frame += 1
|
||||
|
||||
# OPGM variables
|
||||
new_actuators.speed = self.apply_speed
|
||||
|
||||
return new_actuators, can_sends
|
||||
|
||||
@@ -30,7 +30,6 @@ STANDSTILL_THRESHOLD = 10 * 0.0311
|
||||
BUTTONS_DICT = {CruiseButtons.RES_ACCEL: ButtonType.accelCruise, CruiseButtons.DECEL_SET: ButtonType.decelCruise,
|
||||
CruiseButtons.MAIN: ButtonType.mainCruise, CruiseButtons.CANCEL: ButtonType.cancel}
|
||||
|
||||
# OPGM variables
|
||||
GearShifter = structs.CarState.GearShifter
|
||||
BOLT_GEN1_CANCEL_PERSONALITY_CARS = {
|
||||
CAR.CHEVROLET_BOLT_CC_2017,
|
||||
@@ -58,7 +57,6 @@ class CarState(CarStateBase):
|
||||
self.prev_distance_button = 0
|
||||
self.distance_button = 0
|
||||
|
||||
# OPGM variables
|
||||
self.single_pedal_mode = False
|
||||
|
||||
self.pedal_steady = 0
|
||||
|
||||
@@ -99,27 +99,27 @@ FINGERPRINTS = {
|
||||
{
|
||||
170: 8, 188: 8, 189: 7, 190: 6, 193: 8, 197: 8, 201: 8, 209: 7, 211: 2, 241: 6, 288: 5, 298: 8, 304: 1, 309: 8, 311: 8, 313: 8, 320: 3, 322: 7, 328: 1, 352: 5, 353: 3, 381: 8, 384: 4, 386: 8, 388: 8, 390: 7, 407: 7, 417: 7, 419: 1, 451: 8, 452: 8, 453: 6, 454: 8, 456: 8, 463: 3, 479: 3, 481: 7, 485: 8, 489: 8, 493: 8, 495: 4, 497: 8, 499: 3, 500: 6, 501: 8, 503: 2, 508: 8, 512: 6, 513: 6, 528: 5, 532: 6, 546: 7, 550: 8, 554: 3, 558: 8, 560: 8, 562: 8, 563: 5, 564: 5, 565: 5, 566: 7, 567: 5, 568: 2, 569: 3, 573: 1, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 647: 3, 707: 8, 711: 6, 717: 5, 753: 5, 761: 7, 800: 6, 810: 8, 840: 5, 842: 5, 844: 8, 848: 4, 866: 4, 869: 4, 872: 1, 961: 8, 967: 4, 969: 8, 975: 2, 977: 8, 979: 7, 985: 5, 988: 6, 989: 8, 995: 7, 1001: 8, 1005: 6, 1009: 8, 1013: 3, 1017: 8, 1019: 2, 1020: 8, 1022: 1, 1037: 5, 1105: 5, 1187: 4, 1217: 8, 1221: 5, 1223: 3, 1225: 7, 1227: 4, 1233: 8, 1236: 8, 1243: 3, 1249: 8, 1257: 6, 1265: 8, 1268: 2, 1275: 3, 1279: 4, 1280: 4, 1300: 8, 1322: 6, 1323: 4, 1328: 4, 1904: 7, 1905: 7, 1906: 7, 1907: 7, 1912: 7, 1913: 7, 1927: 7, 2016: 8, 2024: 8
|
||||
},
|
||||
# Bolt EV no ACC 2018-2021 (StarPilot parity variant 1)
|
||||
# Bolt EV no ACC 2018-2021 (variant 1)
|
||||
{
|
||||
170: 8, 188: 8, 189: 7, 190: 6, 193: 8, 197: 8, 201: 8, 209: 7, 211: 2, 241: 6, 257: 8, 288: 5, 298: 8, 304: 1, 308: 4, 309: 8, 311: 8, 313: 8, 320: 3, 322: 7, 328: 1, 352: 5, 353: 3, 368: 3, 381: 8, 384: 4, 386: 8, 388: 8, 390: 7, 407: 7, 417: 7, 419: 1, 451: 8, 452: 8, 453: 6, 454: 8, 456: 8, 463: 3, 479: 3, 481: 7, 485: 8, 489: 8, 493: 8, 495: 4, 497: 8, 499: 3, 500: 6, 501: 8, 503: 2, 508: 8, 513: 6, 528: 5, 532: 6, 546: 7, 550: 8, 554: 3, 558: 8, 560: 8, 562: 8, 563: 5, 564: 5, 565: 5, 566: 7, 567: 5, 568: 1, 569: 3, 573: 1, 577: 8, 578: 8, 579: 8, 592: 8, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 647: 3, 707: 8, 711: 6, 717: 5, 753: 5, 761: 7, 800: 6, 810: 8, 840: 5, 842: 5, 844: 8, 848: 4, 866: 4, 869: 4, 872: 1, 961: 8, 967: 4, 969: 8, 975: 2, 977: 8, 979: 7, 985: 5, 988: 6, 989: 8, 995: 7, 1001: 8, 1005: 6, 1009: 8, 1013: 3, 1017: 8, 1019: 2, 1020: 8, 1022: 1, 1037: 5, 1105: 5, 1187: 4, 1217: 8, 1221: 5, 1223: 3, 1225: 7, 1227: 4, 1233: 8, 1236: 8, 1243: 3, 1249: 8, 1257: 6, 1265: 8, 1275: 3, 1279: 4, 1280: 4, 1300: 8, 1322: 6, 1323: 4, 1328: 4, 1345: 8, 1346: 8, 1347: 8, 1513: 8, 1516: 8, 1601: 8, 1616: 8, 1904: 7, 1905: 7, 1906: 7, 1907: 7, 1912: 7, 1913: 7, 1922: 7, 1927: 7, 2016: 8, 2017: 8, 2018: 8, 2020: 8, 2023: 8, 2024: 8, 2028: 8, 2031: 8
|
||||
},
|
||||
# Bolt EV no ACC 2018-2021 (StarPilot parity variant 2)
|
||||
# Bolt EV no ACC 2018-2021 (variant 2)
|
||||
{
|
||||
170: 8, 188: 8, 189: 7, 190: 6, 193: 8, 197: 8, 201: 8, 209: 7, 211: 2, 241: 6, 288: 5, 298: 8, 304: 1, 308: 4, 309: 8, 311: 8, 313: 8, 320: 3, 322: 7, 328: 1, 352: 5, 353: 3, 368: 3, 381: 8, 386: 8, 388: 8, 390: 7, 407: 7, 417: 7, 419: 1, 451: 8, 452: 8, 453: 6, 454: 8, 456: 8, 463: 3, 479: 3, 481: 7, 485: 8, 489: 8, 493: 8, 495: 4, 497: 8, 499: 3, 500: 6, 501: 8, 503: 2, 508: 8, 512: 6, 513: 6, 528: 5, 532: 6, 546: 7, 550: 8, 554: 3, 558: 8, 560: 8, 562: 8, 563: 5, 564: 5, 565: 5, 566: 7, 567: 5, 568: 2, 569: 3, 573: 1, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 647: 3, 707: 8, 711: 6, 753: 5, 761: 7, 810: 8, 840: 5, 842: 5, 844: 8, 848: 4, 866: 4, 872: 1, 961: 8, 967: 4, 969: 8, 975: 2, 977: 8, 979: 7, 985: 5, 988: 6, 989: 8, 995: 7, 1001: 8, 1005: 6, 1009: 8, 1013: 3, 1017: 8, 1019: 2, 1020: 8, 1022: 1, 1037: 5, 1105: 5, 1187: 4, 1217: 8, 1221: 5, 1223: 3, 1225: 7, 1227: 4, 1233: 8, 1236: 8, 1243: 3, 1249: 8, 1257: 6, 1265: 8, 1275: 3, 1279: 4, 1280: 4, 1300: 8, 1322: 6, 1323: 4, 1328: 4, 1904: 7, 1905: 7, 1906: 7, 1907: 7, 1912: 7, 1913: 7, 1922: 7, 1927: 7
|
||||
},
|
||||
# Bolt EV no ACC 2018-2021 (StarPilot parity variant 3)
|
||||
# Bolt EV no ACC 2018-2021 (variant 3)
|
||||
{
|
||||
170: 8, 188: 8, 189: 7, 190: 6, 193: 8, 197: 8, 201: 8, 209: 7, 211: 2, 241: 6, 288: 5, 298: 8, 304: 1, 308: 4, 309: 8, 311: 8, 313: 8, 320: 3, 322: 7, 328: 1, 352: 5, 353: 3, 368: 3, 381: 8, 386: 8, 388: 8, 390: 7, 407: 7, 417: 7, 419: 1, 451: 8, 452: 8, 453: 6, 454: 8, 456: 8, 463: 3, 479: 3, 481: 7, 485: 8, 489: 8, 493: 8, 495: 4, 497: 8, 499: 3, 500: 6, 501: 8, 503: 2, 508: 8, 528: 5, 532: 6, 546: 7, 550: 8, 554: 3, 558: 8, 560: 8, 562: 8, 563: 5, 564: 5, 565: 5, 566: 7, 567: 5, 568: 2, 569: 3, 573: 1, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 647: 3, 707: 8, 711: 6, 753: 5, 761: 7, 810: 8, 840: 5, 842: 5, 844: 8, 848: 4, 866: 4, 872: 1, 961: 8, 967: 4, 969: 8, 975: 2, 977: 8, 979: 7, 985: 5, 988: 6, 989: 8, 995: 7, 1001: 8, 1005: 6, 1009: 8, 1013: 3, 1017: 8, 1019: 2, 1020: 8, 1022: 1, 1037: 5, 1105: 5, 1187: 4, 1217: 8, 1221: 5, 1223: 3, 1225: 7, 1227: 4, 1233: 8, 1236: 8, 1243: 3, 1249: 8, 1257: 6, 1265: 8, 1275: 3, 1279: 4, 1280: 4, 1300: 8, 1322: 6, 1323: 4, 1328: 4, 1904: 7, 1905: 7, 1906: 7, 1907: 7, 1912: 7, 1913: 7, 1922: 7, 1927: 7
|
||||
},
|
||||
# Bolt EV no ACC 2018-2021 (StarPilot parity variant 4)
|
||||
# Bolt EV no ACC 2018-2021 (variant 4)
|
||||
{
|
||||
170: 8, 188: 8, 189: 7, 190: 6, 193: 8, 197: 8, 201: 8, 209: 7, 211: 2, 241: 6, 288: 5, 298: 8, 304: 1, 309: 8, 311: 8, 313: 8, 320: 3, 322: 7, 328: 1, 352: 5, 353: 3, 381: 8, 384: 4, 386: 8, 388: 8, 390: 7, 407: 7, 417: 7, 419: 1, 451: 8, 452: 8, 453: 6, 454: 8, 456: 8, 463: 3, 479: 3, 481: 7, 485: 8, 489: 8, 493: 8, 495: 4, 497: 8, 499: 3, 500: 6, 501: 8, 503: 2, 508: 8, 528: 5, 532: 6, 546: 7, 550: 8, 554: 3, 558: 8, 560: 8, 562: 8, 563: 5, 564: 5, 565: 5, 566: 7, 567: 5, 568: 2, 569: 3, 573: 1, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 647: 3, 707: 8, 711: 6, 717: 5, 753: 5, 761: 7, 800: 6, 810: 8, 840: 5, 842: 5, 844: 8, 848: 4, 866: 4, 869: 4, 872: 1, 961: 8, 967: 4, 969: 8, 975: 2, 977: 8, 979: 7, 985: 5, 988: 6, 989: 8, 995: 7, 1001: 8, 1005: 6, 1009: 8, 1013: 3, 1017: 8, 1019: 2, 1020: 8, 1022: 1, 1037: 5, 1105: 5, 1187: 4, 1217: 8, 1221: 5, 1223: 3, 1225: 7, 1227: 4, 1233: 8, 1236: 8, 1243: 3, 1249: 8, 1257: 6, 1265: 8, 1268: 2, 1275: 3, 1279: 4, 1280: 4, 1300: 8, 1322: 6, 1323: 4, 1328: 4, 1904: 7, 1905: 7, 1906: 7, 1907: 7, 1912: 7, 1913: 7, 1927: 7, 2016: 8, 2024: 8
|
||||
},
|
||||
# Bolt EV no ACC 2023 (StarPilot parity variant 5)
|
||||
# Bolt EV no ACC 2023 (variant 5)
|
||||
{
|
||||
170: 8, 188: 8, 189: 7, 190: 7, 193: 8, 197: 8, 201: 8, 209: 7, 211: 3, 241: 6, 257: 8, 288: 5, 289: 8, 292: 2, 298: 8, 304: 3, 308: 4, 309: 8, 311: 8, 313: 8, 320: 4, 322: 7, 328: 1, 331: 3, 352: 5, 353: 3, 368: 3, 381: 8, 384: 4, 386: 8, 388: 8, 390: 7, 398: 8, 407: 7, 417: 8, 419: 1, 451: 8, 452: 8, 453: 6, 454: 8, 456: 8, 458: 5, 463: 3, 479: 3, 481: 7, 485: 8, 489: 8, 493: 8, 495: 4, 497: 8, 499: 3, 500: 6, 501: 8, 503: 2, 508: 8, 513: 6, 528: 5, 532: 6, 546: 7, 550: 8, 554: 3, 558: 8, 560: 8, 562: 8, 563: 5, 564: 5, 565: 5, 566: 8, 567: 5, 568: 2, 569: 3, 573: 1, 577: 8, 579: 8, 592: 8, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 647: 6, 707: 8, 711: 6, 715: 8, 717: 5, 753: 5, 761: 7, 789: 5, 800: 6, 810: 8, 840: 5, 842: 5, 844: 8, 848: 4, 866: 4, 869: 4, 872: 1, 880: 6, 961: 8, 967: 4, 969: 8, 975: 2, 977: 8, 979: 8, 985: 5, 988: 6, 989: 8, 995: 7, 1001: 8, 1005: 6, 1009: 8, 1010: 8, 1013: 6, 1015: 1, 1017: 8, 1019: 2, 1020: 8, 1037: 5, 1105: 5, 1187: 5, 1217: 8, 1221: 5, 1223: 3, 1225: 7, 1227: 4, 1233: 8, 1236: 8, 1249: 8, 1257: 6, 1265: 8, 1275: 3, 1279: 4, 1280: 4, 1296: 4, 1300: 8, 1322: 6, 1323: 4, 1328: 4, 1345: 8, 1347: 8, 1513: 8, 1516: 8, 1601: 8, 1609: 8, 1613: 8, 1616: 8, 1618: 8, 1649: 8, 1792: 8, 1793: 8, 1798: 8, 1824: 8, 1825: 8, 1840: 8, 1842: 8, 1858: 8, 1860: 8, 1863: 8, 1872: 8, 1875: 8, 1882: 8, 1888: 8, 1889: 8, 1892: 8, 1905: 7, 1906: 7, 1907: 7, 1910: 7, 1912: 7, 1913: 7, 1920: 8, 1922: 7, 1924: 8, 1927: 7, 1930: 7, 1937: 8, 1953: 8, 1968: 8, 1969: 8, 1971: 8, 1975: 8, 1984: 8, 1988: 8, 2000: 8, 2001: 8, 2002: 8, 2017: 8, 2018: 8, 2020: 8, 2023: 8, 2025: 8, 2028: 8, 2031: 8
|
||||
},
|
||||
# Bolt EV no ACC 2023 (StarPilot parity variant 6)
|
||||
# Bolt EV no ACC 2023 (variant 6)
|
||||
{
|
||||
170: 8, 188: 8, 189: 7, 190: 7, 193: 8, 197: 8, 201: 8, 209: 7, 211: 3, 241: 6, 257: 8, 288: 5, 289: 8, 292: 2, 298: 8, 304: 3, 308: 4, 309: 8, 311: 8, 313: 8, 320: 4, 322: 7, 328: 1, 331: 3, 352: 5, 353: 3, 368: 3, 381: 8, 384: 4, 386: 8, 388: 8, 390: 7, 398: 8, 407: 7, 417: 8, 419: 1, 451: 8, 452: 8, 453: 6, 454: 8, 456: 8, 458: 5, 463: 3, 479: 3, 481: 7, 485: 8, 489: 8, 493: 8, 495: 4, 497: 8, 499: 3, 500: 6, 501: 8, 503: 2, 508: 8, 528: 5, 532: 6, 546: 7, 550: 8, 554: 3, 558: 8, 560: 8, 562: 8, 563: 5, 564: 5, 565: 5, 566: 8, 567: 5, 568: 2, 569: 3, 573: 1, 577: 8, 592: 8, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 647: 6, 707: 8, 711: 6, 715: 8, 717: 5, 753: 5, 761: 7, 789: 5, 800: 6, 810: 8, 840: 5, 842: 5, 844: 8, 848: 4, 866: 4, 869: 4, 872: 1, 880: 6, 961: 8, 967: 4, 969: 8, 975: 2, 977: 8, 979: 8, 985: 5, 988: 6, 989: 8, 995: 7, 1001: 8, 1005: 6, 1009: 8, 1010: 8, 1013: 6, 1015: 1, 1017: 8, 1019: 2, 1020: 8, 1037: 5, 1105: 5, 1187: 5, 1217: 8, 1221: 5, 1223: 3, 1225: 7, 1227: 4, 1233: 8, 1236: 8, 1249: 8, 1257: 6, 1265: 8, 1275: 3, 1279: 4, 1280: 4, 1296: 4, 1300: 8, 1322: 6, 1323: 4, 1328: 4, 1601: 8, 1616: 8, 1618: 8, 1905: 7, 1906: 7, 1907: 7, 1910: 7, 1912: 7, 1913: 7, 1922: 7, 1927: 7, 1930: 7, 2016: 8, 2020: 8, 2023: 8, 2024: 8, 2028: 8, 2031: 8
|
||||
}],
|
||||
@@ -191,14 +191,13 @@ FINGERPRINTS = {
|
||||
{
|
||||
190: 6, 193: 8, 197: 8, 199: 4, 201: 8, 208: 8, 209: 7, 211: 2, 241: 6, 249: 8, 288: 5, 298: 8, 304: 1, 309: 8, 313: 8, 320: 3, 322: 7, 328: 1, 352: 5, 353: 3, 381: 6, 384: 4, 386: 8, 388: 8, 393: 7, 398: 8, 407: 7, 413: 8, 417: 7, 419: 1, 422: 4, 426: 7, 431: 8, 442: 8, 451: 8, 452: 8, 453: 6, 454: 8, 455: 7, 462: 4, 463: 3, 479: 3, 481: 7, 485: 8, 487: 8, 489: 8, 495: 4, 497: 8, 499: 3, 500: 6, 501: 8, 503: 1, 508: 8, 510: 8, 532: 6, 554: 3, 560: 8, 562: 8, 563: 5, 564: 5, 567: 5, 647: 3, 707: 8, 717: 5, 723: 2, 753: 5, 761: 7, 800: 6, 840: 5, 842: 5, 844: 8, 866: 4, 869: 4, 872: 1, 961: 8, 967: 4, 969: 8, 977: 8, 979: 8, 985: 5, 1001: 8, 1005: 6, 1009: 8, 1011: 6, 1013: 3, 1017: 8, 1019: 2, 1020: 8, 1022: 1, 1105: 6, 1217: 8, 1221: 5, 1223: 3, 1225: 7, 1233: 8, 1243: 3, 1249: 8, 1257: 6, 1259: 8, 1261: 7, 1263: 4, 1265: 8, 1267: 1, 1280: 4, 1300: 8, 1322: 6, 1328: 4, 1417: 8, 1904: 7, 1906: 7, 1907: 7, 1912: 7, 1913: 7, 1914: 7, 1919: 7, 1920: 7
|
||||
}],
|
||||
# StarPilot variables
|
||||
CAR.CHEVROLET_TRAX: [
|
||||
{
|
||||
190: 6, 193: 8, 197: 8, 201: 8, 209: 7, 211: 2, 241: 6, 249: 8, 288: 5, 298: 8, 304: 3, 309: 8, 311: 8, 313: 8, 320: 4, 322: 7, 328: 1, 352: 5, 381: 8, 384: 4, 386: 8, 388: 8, 413: 8, 451: 8, 452: 8, 453: 6, 455: 7, 479: 3, 481: 7, 485: 8, 489: 8, 497: 8, 500: 6, 501: 8, 532: 6, 560: 8, 562: 8, 563: 5, 565: 5, 587: 8, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 707: 8, 715: 8, 717: 5, 761: 7, 789: 5, 800: 6, 810: 8, 840: 5, 842: 5, 844: 8, 869: 4, 880: 6, 977: 8, 1001: 8, 1011: 6, 1017: 8, 1020: 8, 1217: 8, 1221: 5, 1233: 8, 1249: 8, 1259: 8, 1261: 7, 1263: 4, 1265: 8, 1267: 1, 1271: 8, 1280: 4, 1296: 4, 1300: 8, 1611: 8, 1930: 7
|
||||
}],
|
||||
}
|
||||
|
||||
# StarPilot parity: keep explicit GM platform fingerprints.
|
||||
# Keep explicit GM platform fingerprints.
|
||||
|
||||
FINGERPRINTS.update({
|
||||
CAR.CHEVROLET_VOLT_ASCM: FINGERPRINTS[CAR.CHEVROLET_VOLT],
|
||||
|
||||
@@ -136,7 +136,7 @@ def create_gas_regen_command(packer, bus, throttle, idx, enabled, at_full_stop,
|
||||
|
||||
return packer.make_can_msg("ASCMGasRegenCmd", bus, values)
|
||||
|
||||
# Keep GM Global A camera-long GasRegen bytes aligned with StarPilot's legacy layout.
|
||||
# Use the legacy GM Global A camera-long GasRegen byte layout.
|
||||
# The regenerated DBC shape does not expose the same wire-format helper fields.
|
||||
throttle = int(throttle)
|
||||
dat = bytearray(8)
|
||||
|
||||
@@ -59,7 +59,6 @@ NON_LINEAR_TORQUE_PARAMS = {
|
||||
},
|
||||
}
|
||||
|
||||
# OPGM variables
|
||||
PEDAL_MSG = 0x201
|
||||
CAM_MSG = 0x320
|
||||
ACCELERATOR_POS_MSG = 0xBE
|
||||
@@ -348,6 +347,15 @@ class CarInterface(CarInterfaceBase):
|
||||
ret.steerLimitTimer = 0.4
|
||||
ret.longitudinalActuatorDelay = 0.5 # large delay to initially start braking
|
||||
|
||||
if candidate in (
|
||||
CAR.CHEVROLET_VOLT,
|
||||
CAR.CHEVROLET_VOLT_2019,
|
||||
CAR.CHEVROLET_VOLT_ASCM,
|
||||
CAR.CHEVROLET_VOLT_CAMERA,
|
||||
CAR.CHEVROLET_VOLT_CC,
|
||||
):
|
||||
ret.minSteerSpeed = 7 * CV.MPH_TO_MS
|
||||
|
||||
if candidate in (CAR.CHEVROLET_VOLT, CAR.CHEVROLET_VOLT_CC, CAR.CHEVROLET_VOLT_CAMERA):
|
||||
ret.minEnableSpeed = -1
|
||||
|
||||
@@ -486,7 +494,6 @@ class CarInterface(CarInterfaceBase):
|
||||
ret.steerActuatorDelay = 0.5
|
||||
CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning)
|
||||
|
||||
# OPGM variables
|
||||
elif candidate in (CAR.CHEVROLET_MALIBU, CAR.CHEVROLET_MALIBU_CC, CAR.CHEVROLET_MALIBU_HYBRID_CC):
|
||||
ret.steerActuatorDelay = 0.2
|
||||
CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning)
|
||||
@@ -524,7 +531,7 @@ class CarInterface(CarInterfaceBase):
|
||||
ret.longitudinalTuning.kfDEPRECATED = 0.25
|
||||
|
||||
if is_bolt_2022_2023_pedal:
|
||||
# Gen2 Bolt pedal-long should follow the no-ACC panda path like StarPilot.
|
||||
# Gen2 Bolt pedal-long should follow the no-ACC panda path.
|
||||
ret.safetyConfigs[0].safetyParam |= GMSafetyFlags.FLAG_GM_NO_ACC.value
|
||||
|
||||
if candidate in (CAR.CHEVROLET_BOLT_ACC_2022_2023_PEDAL, CAR.CHEVROLET_MALIBU_HYBRID_CC):
|
||||
@@ -627,7 +634,6 @@ class CarInterface(CarInterfaceBase):
|
||||
if remap_cancel_to_distance or malibu_cancel_passthrough:
|
||||
ret.alternativeExperience |= ALTERNATIVE_EXPERIENCE.GM_REMAP_CANCEL_TO_DISTANCE
|
||||
|
||||
# StarPilot variables
|
||||
if candidate == CAR.CHEVROLET_TRAX:
|
||||
CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning)
|
||||
|
||||
|
||||
@@ -1,9 +1,23 @@
|
||||
import pytest
|
||||
from parameterized import parameterized
|
||||
|
||||
from opendbc.car.car_helpers import interfaces
|
||||
from opendbc.car.common.conversions import Conversions as CV
|
||||
from opendbc.car.gm.fingerprints import FINGERPRINTS
|
||||
from opendbc.car.gm.values import CAMERA_ACC_CAR, CC_ONLY_CAR, GM_RX_OFFSET
|
||||
from opendbc.car.gm.values import CAMERA_ACC_CAR, CAR, CC_ONLY_CAR, GM_RX_OFFSET
|
||||
|
||||
CAMERA_DIAGNOSTIC_ADDRESS = 0x24b
|
||||
VOLT_CARS = (
|
||||
CAR.CHEVROLET_VOLT,
|
||||
CAR.CHEVROLET_VOLT_2019,
|
||||
CAR.CHEVROLET_VOLT_ASCM,
|
||||
CAR.CHEVROLET_VOLT_CAMERA,
|
||||
CAR.CHEVROLET_VOLT_CC,
|
||||
)
|
||||
|
||||
|
||||
def _empty_fingerprint():
|
||||
return {bus: {} for bus in range(8)}
|
||||
|
||||
|
||||
class TestGMFingerprint:
|
||||
@@ -18,3 +32,12 @@ class TestGMFingerprint:
|
||||
for finger in fingerprints:
|
||||
for required_addr in (CAMERA_DIAGNOSTIC_ADDRESS, CAMERA_DIAGNOSTIC_ADDRESS + GM_RX_OFFSET):
|
||||
assert finger.get(required_addr) == 8, required_addr
|
||||
|
||||
|
||||
class TestGMInterface:
|
||||
@parameterized.expand(VOLT_CARS)
|
||||
def test_volt_min_steer_speed_is_7_mph(self, car_model):
|
||||
CarInterface = interfaces[car_model]
|
||||
car_params = CarInterface.get_params(car_model, _empty_fingerprint(), [], alpha_long=False, is_release=False, docs=False)
|
||||
|
||||
assert car_params.minSteerSpeed == pytest.approx(7 * CV.MPH_TO_MS)
|
||||
|
||||
@@ -159,14 +159,13 @@ class GMSafetyFlags(IntFlag):
|
||||
HW_CAM_LONG = 2
|
||||
EV = 4
|
||||
|
||||
# OPGM variables
|
||||
FLAG_GM_CC_LONG = 8
|
||||
FLAG_GM_GAS_INTERCEPTOR = 16
|
||||
FLAG_GM_NO_ACC = 32
|
||||
FLAG_GM_PEDAL_LONG = 64
|
||||
HW_ASCM_LONG = 128
|
||||
|
||||
# StarPilot parity variables
|
||||
# Additional GM hardware and flag values
|
||||
HW_ASCM_INT = 256
|
||||
FLAG_GM_FORCE_BRAKE_C9 = 512
|
||||
HW_SDGM = 1024
|
||||
@@ -437,7 +436,6 @@ class CanBus:
|
||||
DROPPED = 192
|
||||
|
||||
|
||||
# OPGM variables
|
||||
class GMFlags(IntFlag):
|
||||
PEDAL_LONG = 1
|
||||
CC_LONG = 2
|
||||
@@ -567,5 +565,4 @@ STEER_THRESHOLD = 1.0
|
||||
|
||||
DBC = CAR.create_dbc_map()
|
||||
|
||||
# StarPilot variables
|
||||
CAMERA_ACC_CAR.update({CAR.CHEVROLET_TRAX})
|
||||
|
||||
@@ -220,7 +220,6 @@ class CarState(CarStateBase):
|
||||
*create_button_events(self.cruise_setting, prev_cruise_setting, SETTINGS_BUTTONS_DICT),
|
||||
]
|
||||
|
||||
# StarPilot variables
|
||||
fp_ret = custom.StarPilotCarState.new_message()
|
||||
|
||||
return ret, fp_ret
|
||||
|
||||
@@ -203,7 +203,6 @@ class CarState(CarStateBase):
|
||||
self.low_speed_alert = False
|
||||
ret.lowSpeedAlert = self.low_speed_alert
|
||||
|
||||
# StarPilot variables
|
||||
fp_ret = custom.StarPilotCarState.new_message()
|
||||
|
||||
return ret, fp_ret
|
||||
@@ -301,7 +300,6 @@ class CarState(CarStateBase):
|
||||
|
||||
ret.blockPcmEnable = not self.recent_button_interaction()
|
||||
|
||||
# StarPilot variables
|
||||
fp_ret = custom.StarPilotCarState.new_message()
|
||||
|
||||
return ret, fp_ret
|
||||
|
||||
@@ -68,7 +68,6 @@ class HyundaiSafetyFlags(IntFlag):
|
||||
ALT_LIMITS_2 = 512
|
||||
|
||||
|
||||
# StarPilot variables
|
||||
class HyundaiStarPilotSafetyFlags(IntFlag):
|
||||
HAS_LDA_BUTTON = 1024
|
||||
|
||||
|
||||
@@ -30,7 +30,6 @@ from openpilot.common.params import Params
|
||||
GearShifter = structs.CarState.GearShifter
|
||||
ButtonType = structs.CarState.ButtonEvent.Type
|
||||
|
||||
# StarPilot variables
|
||||
Ecu = structs.CarParams.Ecu
|
||||
|
||||
V_CRUISE_MAX = 145
|
||||
@@ -133,7 +132,6 @@ class CarInterfaceBase(ABC):
|
||||
dbc_names = {bus: cp.dbc_name for bus, cp in self.can_parsers.items()}
|
||||
self.CC: CarControllerBase = self.CarController(dbc_names, CP)
|
||||
|
||||
# StarPilot variables
|
||||
self.FPCP = FPCP
|
||||
|
||||
self.params_memory = Params(memory=True)
|
||||
@@ -181,14 +179,12 @@ class CarInterfaceBase(ABC):
|
||||
ret.rotationalInertia = scale_rot_inertia(ret.mass, ret.wheelbase)
|
||||
ret.tireStiffnessFront, ret.tireStiffnessRear = scale_tire_stiffness(ret.mass, ret.wheelbase, ret.centerToFront, ret.tireStiffnessFactor)
|
||||
|
||||
# StarPilot variables
|
||||
toggles_to_check = ("force_torque_controller", "nnff", "nnff_lite")
|
||||
if ret.steerControlType != structs.CarParams.SteerControlType.angle and any(getattr(starpilot_toggles, toggle, False) for toggle in toggles_to_check):
|
||||
CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning)
|
||||
|
||||
return ret
|
||||
|
||||
# StarPilot variables
|
||||
@classmethod
|
||||
def get_starpilot_params(cls, candidate: str, fingerprint: dict[int, dict[int, int]], car_fw: list[structs.CarParams.CarFw], CP: structs.CarParams, starpilot_toggles: SimpleNamespace):
|
||||
fp_ret = custom.StarPilotCarParams.new_message()
|
||||
@@ -343,7 +339,6 @@ class CarInterfaceBase(ABC):
|
||||
# save for next iteration
|
||||
self.CS.out = ret
|
||||
|
||||
# StarPilot variables
|
||||
prev_distance_button = self.distance_button
|
||||
self.distance_button = self.params_memory.get_bool("OnroadDistanceButtonPressed")
|
||||
if self.distance_button != prev_distance_button:
|
||||
@@ -383,7 +378,6 @@ class CarStateBase(ABC):
|
||||
K = get_kalman_gain(DT_CTRL, np.array(A), np.array(C), np.array(Q), R)
|
||||
self.v_ego_kf = KF1D(x0=x0, A=A, C=C[0], K=K)
|
||||
|
||||
# StarPilot variables
|
||||
self.FPCP = FPCP
|
||||
|
||||
self.CC: structs.CarControl = structs.CarControl.new_message()
|
||||
|
||||
@@ -116,7 +116,6 @@ class CarState(CarStateBase):
|
||||
# TODO: add button types for inc and dec
|
||||
ret.buttonEvents = create_button_events(self.distance_button, prev_distance_button, {1: ButtonType.gapAdjustCruise})
|
||||
|
||||
# StarPilot variables
|
||||
fp_ret = custom.StarPilotCarState.new_message()
|
||||
|
||||
return ret, fp_ret
|
||||
|
||||
@@ -29,7 +29,6 @@ class CarInterface(CarInterfaceBase):
|
||||
|
||||
ret.centerToFront = ret.wheelbase * 0.41
|
||||
|
||||
# StarPilot variables
|
||||
ret.enableBsm = True
|
||||
|
||||
return ret
|
||||
|
||||
@@ -25,7 +25,6 @@ class CarState(CarStateBase):
|
||||
|
||||
self.distance_button = 0
|
||||
|
||||
# StarPilot variables
|
||||
self.lkas_button = 0
|
||||
|
||||
def update(self, can_parsers, starpilot_toggles) -> structs.CarState:
|
||||
@@ -132,7 +131,6 @@ class CarState(CarStateBase):
|
||||
|
||||
buttonEvents = create_button_events(self.distance_button, prev_distance_button, {1: ButtonType.gapAdjustCruise})
|
||||
|
||||
# StarPilot variables
|
||||
fp_ret = custom.StarPilotCarState.new_message()
|
||||
|
||||
self.prev_lkas_button = self.lkas_button
|
||||
|
||||
@@ -64,7 +64,6 @@ class CarState(CarStateBase):
|
||||
ret.doorOpen = any((cp_cam.vl['Dat_BSI']['DRIVER_DOOR'], cp_cam.vl['Dat_BSI']['PASSENGER_DOOR']))
|
||||
ret.seatbeltUnlatched = cp_cam.vl['RESTRAINTS']['DRIVER_SEATBELT'] != 2
|
||||
|
||||
# StarPilot variables
|
||||
fp_ret = custom.StarPilotCarState.new_message()
|
||||
|
||||
return ret, fp_ret
|
||||
|
||||
@@ -93,7 +93,6 @@ class CarState(CarStateBase):
|
||||
self.sccm_wheel_touch = copy.copy(cp.vl["SCCM_WheelTouch"])
|
||||
self.vdm_adas_status = copy.copy(cp.vl["VDM_AdasSts"])
|
||||
|
||||
# StarPilot variables
|
||||
fp_ret = custom.StarPilotCarState.new_message()
|
||||
|
||||
return ret, fp_ret
|
||||
|
||||
@@ -11,7 +11,6 @@ from opendbc.car.subaru.values import DBC, GLOBAL_ES_ADDR, CanBus, CarController
|
||||
MAX_STEER_RATE = 25 # deg/s
|
||||
MAX_STEER_RATE_FRAMES = 7 # tx control frames needed before torque can be cut
|
||||
|
||||
# StarPilot variables
|
||||
_SNG_ACC_MIN_DIST = 3
|
||||
_SNG_ACC_MAX_DIST = 4.5
|
||||
|
||||
@@ -27,7 +26,6 @@ class CarController(CarControllerBase):
|
||||
self.p = CarControllerParams(CP)
|
||||
self.packer = CANPacker(DBC[CP.carFingerprint][Bus.pt])
|
||||
|
||||
# StarPilot variables
|
||||
self.manual_hold = False
|
||||
self.prev_standstill = False
|
||||
self.sng_acc_resume = False
|
||||
@@ -71,7 +69,6 @@ class CarController(CarControllerBase):
|
||||
|
||||
self.apply_torque_last = apply_torque
|
||||
|
||||
# StarPilot variables
|
||||
# *** stop and go ***
|
||||
if starpilot_toggles.subaru_sng:
|
||||
throttle_cmd, speed_cmd = self.stop_and_go(CC, CS)
|
||||
@@ -112,7 +109,6 @@ class CarController(CarControllerBase):
|
||||
|
||||
can_sends.append(subarucan.create_preglobal_es_distance(self.packer, cruise_button, CS.es_distance_msg))
|
||||
|
||||
# StarPilot variables
|
||||
if starpilot_toggles.subaru_sng:
|
||||
can_sends.append(subarucan.create_preglobal_throttle(self.packer, CS.throttle_msg["COUNTER"] + 1, CS.throttle_msg, throttle_cmd))
|
||||
else:
|
||||
@@ -127,7 +123,6 @@ class CarController(CarControllerBase):
|
||||
if self.CP.flags & SubaruFlags.SEND_INFOTAINMENT:
|
||||
can_sends.append(subarucan.create_es_infotainment(self.packer, self.frame // 10, CS.es_infotainment_msg, hud_control.visualAlert))
|
||||
|
||||
# StarPilot variables
|
||||
if starpilot_toggles.subaru_sng:
|
||||
can_sends.append(subarucan.create_throttle(self.packer, CS.throttle_msg["COUNTER"] + 1, CS.throttle_msg, throttle_cmd))
|
||||
if self.frame % 2 == 0:
|
||||
@@ -171,7 +166,6 @@ class CarController(CarControllerBase):
|
||||
self.frame += 1
|
||||
return new_actuators, can_sends
|
||||
|
||||
# StarPilot variables
|
||||
def stop_and_go(self, CC, CS, speed_cmd=False, throttle_cmd=False):
|
||||
if self.CP.flags & SubaruFlags.PREGLOBAL:
|
||||
trigger_resume = CC.enabled
|
||||
|
||||
@@ -124,7 +124,6 @@ class CarState(CarStateBase):
|
||||
if self.CP.flags & SubaruFlags.SEND_INFOTAINMENT:
|
||||
self.es_infotainment_msg = copy.copy(cp_cam.vl["ES_Infotainment"])
|
||||
|
||||
# StarPilot variables
|
||||
fp_ret = custom.StarPilotCarState.new_message()
|
||||
|
||||
if starpilot_toggles.subaru_sng:
|
||||
|
||||
@@ -336,7 +336,6 @@ def subaru_checksum(address: int, sig, d: bytearray) -> int:
|
||||
return s & 0xFF
|
||||
|
||||
|
||||
# StarPilot variables
|
||||
def create_brake_pedal(packer, frame, brake_pedal_msg, speed_cmd, brake_cmd):
|
||||
values = {s: brake_pedal_msg[s] for s in sorted([
|
||||
"Brake_Lights",
|
||||
|
||||
@@ -26,7 +26,6 @@ class CarControllerParams:
|
||||
elif CP.carFingerprint == CAR.SUBARU_IMPREZA_2020:
|
||||
self.STEER_DELTA_UP = 35
|
||||
self.STEER_MAX = 1439
|
||||
# StarPilot variables
|
||||
elif CP.carFingerprint == CAR.SUBARU_IMPREZA:
|
||||
self.STEER_MAX = 3071
|
||||
else:
|
||||
|
||||
@@ -118,7 +118,6 @@ class CarState(CarStateBase):
|
||||
# Messages needed by carcontroller
|
||||
self.das_control = copy.copy(cp_ap_party.vl["DAS_control"])
|
||||
|
||||
# StarPilot variables
|
||||
fp_ret = custom.StarPilotCarState.new_message()
|
||||
|
||||
return ret, fp_ret
|
||||
|
||||
@@ -41,7 +41,6 @@ non_tested_cars = [
|
||||
|
||||
]
|
||||
|
||||
# OPGM variables
|
||||
non_tested_cars.extend(CC_ONLY_CAR)
|
||||
|
||||
|
||||
|
||||
@@ -104,5 +104,4 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"]
|
||||
"HONDA_CIVIC_2022" = [2.5, 1.2, 0.15]
|
||||
"HONDA_HRV_3G" = [2.5, 1.2, 0.2]
|
||||
|
||||
# OPGM variables
|
||||
"CHEVROLET_MALIBU_CC" = [1.85, 1.85, 0.075]
|
||||
|
||||
@@ -80,5 +80,3 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"]
|
||||
"VOLKSWAGEN_JETTA_MK7" = [1.2271623034089392, 1.216955117387, 0.19437384688370712]
|
||||
"VOLKSWAGEN_PASSAT_MK8" = [1.3432120736752917, 1.7087275587362314, 0.19444383787326647]
|
||||
"VOLKSWAGEN_TIGUAN_MK2" = [0.9711965500094828, 1.0001565939459098, 0.1465626137072916]
|
||||
|
||||
# StarPilot variables
|
||||
|
||||
@@ -94,7 +94,6 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"]
|
||||
"SUBARU_LEGACY_PREGLOBAL" = "SUBARU_IMPREZA"
|
||||
"SUBARU_ASCENT" = "SUBARU_FORESTER"
|
||||
|
||||
# OPGM variables
|
||||
"CADILLAC_CT6_CC" = "CHEVROLET_VOLT"
|
||||
"CADILLAC_XT5_CC" = "GMC_ACADIA"
|
||||
"CHEVROLET_EQUINOX_CC" = "CHEVROLET_EQUINOX"
|
||||
@@ -103,5 +102,4 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"]
|
||||
"GMC_YUKON_CC" = "CHEVROLET_SILVERADO"
|
||||
"CHEVROLET_TRAILBLAZER_CC" = "CHEVROLET_TRAILBLAZER"
|
||||
|
||||
# StarPilot variables
|
||||
"CHEVROLET_TRAX" = "CHEVROLET_VOLT"
|
||||
|
||||
@@ -35,7 +35,6 @@ MAX_STEER_RATE_FRAMES = 18 # tx control frames needed before torque can be cut
|
||||
# EPS allows user torque above threshold for 50 frames before permanently faulting
|
||||
MAX_USER_TORQUE = 500
|
||||
|
||||
# StarPilot variables
|
||||
PARK = structs.CarState.GearShifter.park
|
||||
|
||||
# Lock / unlock door commands - Credit goes to AlexandreSato!
|
||||
@@ -86,7 +85,6 @@ class CarController(CarControllerBase):
|
||||
self.secoc_acc_message_counter = 0
|
||||
self.secoc_prev_reset_counter = 0
|
||||
|
||||
# StarPilot variables
|
||||
self.doors_locked = False
|
||||
|
||||
def update(self, CC, CS, now_nanos, starpilot_toggles):
|
||||
@@ -334,7 +332,6 @@ class CarController(CarControllerBase):
|
||||
|
||||
self.frame += 1
|
||||
|
||||
# StarPilot variables
|
||||
if not self.doors_locked and CS.out.gearShifter != PARK:
|
||||
if starpilot_toggles.lock_doors:
|
||||
can_sends.append(CanData(0x750, LOCK_CMD, 0))
|
||||
|
||||
@@ -67,7 +67,6 @@ class CarState(CarStateBase):
|
||||
self.gvc = 0.0
|
||||
self.secoc_synchronization = None
|
||||
|
||||
# StarPilot variables
|
||||
self.latActive_previous = False
|
||||
self.needs_angle_offset_zss = False
|
||||
|
||||
@@ -222,7 +221,6 @@ class CarState(CarStateBase):
|
||||
|
||||
buttonEvents += create_button_events(self.distance_button, prev_distance_button, {1: ButtonType.gapAdjustCruise})
|
||||
|
||||
# StarPilot variables
|
||||
fp_ret = custom.StarPilotCarState.new_message()
|
||||
|
||||
if self.has_SDSU and not self.has_can_filter:
|
||||
|
||||
@@ -80,7 +80,6 @@ class ToyotaFlags(IntFlag):
|
||||
SNG_WITHOUT_DSU_DEPRECATED = 512
|
||||
|
||||
|
||||
# StarPilot variables
|
||||
class ToyotaStarPilotFlags(IntFlag):
|
||||
RADAR_CAN_FILTER = 1
|
||||
SMART_DSU = 2
|
||||
|
||||
@@ -139,7 +139,6 @@ class CarState(CarStateBase):
|
||||
|
||||
self.frame += 1
|
||||
|
||||
# StarPilot variables
|
||||
fp_ret = custom.StarPilotCarState.new_message()
|
||||
|
||||
return ret, fp_ret
|
||||
@@ -234,7 +233,6 @@ class CarState(CarStateBase):
|
||||
|
||||
self.frame += 1
|
||||
|
||||
# StarPilot variables
|
||||
fp_ret = custom.StarPilotCarState.new_message()
|
||||
|
||||
return ret, fp_ret
|
||||
|
||||
@@ -9,6 +9,5 @@ class ALTERNATIVE_EXPERIENCE:
|
||||
RAISE_LONGITUDINAL_LIMITS_TO_ISO_MAX = 8
|
||||
ALLOW_AEB = 16
|
||||
|
||||
# StarPilot variables
|
||||
ALWAYS_ON_LATERAL = 32
|
||||
GM_REMAP_CANCEL_TO_DISTANCE = 64
|
||||
|
||||
@@ -247,7 +247,6 @@ void speed_mismatch_check(const float speed_2);
|
||||
|
||||
void safety_tick(const safety_config *safety_config);
|
||||
|
||||
// OPGM variables
|
||||
bool longitudinal_interceptor_checks(const CANPacket_t *to_send);
|
||||
|
||||
// This can be set by the safety hooks
|
||||
@@ -268,7 +267,6 @@ extern bool acc_main_on; // referred to as "ACC off" in ISO 15622:2018
|
||||
extern int cruise_button_prev;
|
||||
extern bool safety_rx_checks_invalid;
|
||||
|
||||
// StarPilot variables
|
||||
extern bool aol_allowed;
|
||||
extern bool lkas_button_prev;
|
||||
extern bool lkas_on;
|
||||
@@ -294,7 +292,6 @@ extern uint32_t ts_angle_check_last;
|
||||
extern int desired_angle_last;
|
||||
extern struct sample_t angle_meas; // last 6 steer angles/curvatures
|
||||
|
||||
// OPGM variables
|
||||
extern bool enable_gas_interceptor;
|
||||
extern int gas_interceptor_prev;
|
||||
extern bool gm_remote_start_boots_comma;
|
||||
@@ -317,7 +314,6 @@ extern bool gm_remote_start_boots_comma;
|
||||
// This flag allows AEB to be commanded from openpilot.
|
||||
#define ALT_EXP_ALLOW_AEB 16
|
||||
|
||||
// StarPilot variables
|
||||
#define ALT_EXP_ALWAYS_ON_LATERAL 32
|
||||
#define ALT_EXP_GM_REMAP_CANCEL_TO_DISTANCE 64
|
||||
|
||||
|
||||
@@ -34,7 +34,6 @@ bool longitudinal_brake_checks(int desired_brake, const LongitudinalLimits limit
|
||||
return violation;
|
||||
}
|
||||
|
||||
// OPGM variables
|
||||
bool longitudinal_interceptor_checks(const CANPacket_t *msg) {
|
||||
return (!get_longitudinal_allowed() || brake_pressed_prev) && (msg->data[0] || msg->data[1]);
|
||||
}
|
||||
|
||||
@@ -79,7 +79,6 @@ static void chrysler_rx_hook(const CANPacket_t *msg) {
|
||||
bool cruise_engaged = GET_BIT(msg, 21U);
|
||||
pcm_cruise_check(cruise_engaged);
|
||||
|
||||
// StarPilot variables
|
||||
acc_main_on = GET_BIT(msg, 20U);
|
||||
}
|
||||
|
||||
|
||||
@@ -159,7 +159,6 @@ static void ford_rx_hook(const CANPacket_t *msg) {
|
||||
bool cruise_engaged = (cruise_state == 4U) || (cruise_state == 5U);
|
||||
pcm_cruise_check(cruise_engaged);
|
||||
|
||||
// StarPilot variables
|
||||
acc_main_on = (cruise_state == 3U) || cruise_engaged;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,12 +61,11 @@ static bool gm_panda_3d1_sched = false;
|
||||
static bool gm_panda_paddle_sched = false;
|
||||
static bool gm_bolt_2022_pedal = false;
|
||||
|
||||
// OPGM variables
|
||||
static bool gm_cc_long = false;
|
||||
static bool gm_has_acc = true;
|
||||
static bool gm_pedal_long = false;
|
||||
|
||||
// StarPilot parity scheduler state
|
||||
// 3D1 spoof scheduler state
|
||||
static bool gm_3d1_spoof_valid = false;
|
||||
static bool gm_3d1_internal_tx = false;
|
||||
static uint8_t gm_3d1_spoof_data[8] = {0U};
|
||||
@@ -199,7 +198,6 @@ static void gm_try_send_3d1_spoof(uint32_t now_us) {
|
||||
static void gm_rx_hook(const CANPacket_t *msg) {
|
||||
const int GM_STANDSTILL_THRSLD = 10; // 0.311kph
|
||||
|
||||
// OPGM variables
|
||||
// Keep panda threshold aligned with carstate to avoid pedal pre-enable mismatches.
|
||||
const int GM_GAS_INTERCEPTOR_THRESHOLD = 595;
|
||||
|
||||
@@ -275,7 +273,6 @@ static void gm_rx_hook(const CANPacket_t *msg) {
|
||||
cruise_engaged_prev = false;
|
||||
}
|
||||
|
||||
// OPGM variables
|
||||
// Cruise check for CC only cars
|
||||
if ((msg->addr == 0x3D1U) && !gm_has_acc) {
|
||||
uint32_t now_us = microsecond_timer_get();
|
||||
@@ -338,7 +335,7 @@ static void gm_rx_hook(const CANPacket_t *msg) {
|
||||
}
|
||||
}
|
||||
|
||||
// Keep camera-bus ACC status behavior aligned with StarPilot camera/SDGM paths.
|
||||
// Keep camera-bus ACC status behavior consistent across camera and SDGM paths.
|
||||
if ((msg->addr == 0x370U) && (msg->bus == 2U)) {
|
||||
bool cruise_engaged = (msg->data[2] >> 7) != 0U; // ACCCmdActive
|
||||
if (gm_bolt_2022_pedal) {
|
||||
@@ -350,7 +347,6 @@ static void gm_rx_hook(const CANPacket_t *msg) {
|
||||
}
|
||||
}
|
||||
|
||||
// StarPilot variables
|
||||
if (msg->addr == 0xC9U) {
|
||||
acc_main_on = GET_BIT(msg, 29U);
|
||||
}
|
||||
@@ -440,7 +436,6 @@ static bool gm_tx_hook(const CANPacket_t *msg) {
|
||||
}
|
||||
}
|
||||
|
||||
// OPGM variables
|
||||
// GAS: safety check (interceptor)
|
||||
if (msg->addr == 0x200U) {
|
||||
if (longitudinal_interceptor_checks(msg)) {
|
||||
@@ -556,7 +551,6 @@ static safety_config gm_init(uint16_t param) {
|
||||
static const CanMsg GM_ASCM_TX_MSGS[] = {{0x180, 0, 4, .check_relay = true}, {0x409, 0, 7, .check_relay = false}, {0x40A, 0, 7, .check_relay = false}, {0x2CB, 0, 8, .check_relay = true}, {0x370, 0, 6, .check_relay = false}, // pt bus
|
||||
{0xA1, 1, 7, .check_relay = false}, {0x306, 1, 8, .check_relay = false}, {0x308, 1, 7, .check_relay = false}, {0x310, 1, 2, .check_relay = false}, // obs bus
|
||||
{0x315, 2, 5, .check_relay = false}, // ch bus
|
||||
// OPGM Variables
|
||||
{0x200, 0, 6, .check_relay = false},
|
||||
{0x1E1, 0, 7, .check_relay = false},
|
||||
{0xBD, 0, 7, .check_relay = false},
|
||||
@@ -573,7 +567,6 @@ static safety_config gm_init(uint16_t param) {
|
||||
// block PSCMStatus (0x184); forwarded through openpilot to hide an alert from the camera
|
||||
static const CanMsg GM_CAM_LONG_TX_MSGS[] = {{0x180, 0, 4, .check_relay = true}, {0x315, 0, 5, .check_relay = true}, {0x2CB, 0, 8, .check_relay = true}, {0x370, 0, 6, .check_relay = true}, {0x3D1, 0, 8, .check_relay = false}, // pt bus
|
||||
{0x184, 2, 8, .check_relay = true}, // camera bus
|
||||
// OPGM Variables
|
||||
{0x200, 0, 6, .check_relay = false}, {0x1E1, 0, 7, .check_relay = false},
|
||||
{0xBD, 0, 7, .check_relay = false}, {0x1F5, 0, 8, .check_relay = false}}; // pt bus
|
||||
|
||||
@@ -581,7 +574,6 @@ static safety_config gm_init(uint16_t param) {
|
||||
static RxCheck gm_rx_checks[] = {
|
||||
GM_COMMON_RX_CHECKS
|
||||
|
||||
// OPGM Variables
|
||||
GM_ACC_RX_CHECKS
|
||||
};
|
||||
|
||||
@@ -589,7 +581,6 @@ static safety_config gm_init(uint16_t param) {
|
||||
GM_COMMON_RX_CHECKS
|
||||
{.msg = {{0xBD, 0, 7, 40U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}},
|
||||
|
||||
// OPGM Variables
|
||||
GM_ACC_RX_CHECKS
|
||||
};
|
||||
|
||||
@@ -600,12 +591,10 @@ static safety_config gm_init(uint16_t param) {
|
||||
|
||||
static const CanMsg GM_CAM_TX_MSGS[] = {{0x180, 0, 4, .check_relay = true}, {0x370, 0, 6, .check_relay = false}, {0x3D1, 0, 8, .check_relay = false}, // pt bus
|
||||
{0x1E1, 2, 7, .check_relay = false}, {0x184, 2, 8, .check_relay = true}, // camera bus
|
||||
// OPGM Variables
|
||||
{0x200, 0, 6, .check_relay = false},
|
||||
{0x1E1, 0, 7, .check_relay = false},
|
||||
{0xBD, 0, 7, .check_relay = false}, {0x1F5, 0, 8, .check_relay = false}}; // pt bus
|
||||
|
||||
// OPGM Variables
|
||||
static RxCheck gm_no_acc_ev_rx_checks[] = {
|
||||
GM_COMMON_RX_CHECKS
|
||||
{.msg = {{0xBD, 0, 7, 40U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}},
|
||||
@@ -646,7 +635,6 @@ static safety_config gm_init(uint16_t param) {
|
||||
gm_sdgm = GET_FLAG(param, GM_PARAM_HW_SDGM);
|
||||
gm_ascm_int = GET_FLAG(param, GM_PARAM_HW_ASCM_INT);
|
||||
|
||||
// OPGM Variables
|
||||
gm_cc_long = GET_FLAG(param, GM_PARAM_CC_LONG);
|
||||
gm_has_acc = !GET_FLAG(param, GM_PARAM_NO_ACC);
|
||||
gm_pedal_long = GET_FLAG(param, GM_PARAM_PEDAL_LONG);
|
||||
|
||||
@@ -52,7 +52,6 @@ const LongitudinalLimits HYUNDAI_LONG_LIMITS = {
|
||||
#define HYUNDAI_FCEV_GAS_ADDR_CHECK \
|
||||
{.msg = {{0x91, 0, 8, 100U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, \
|
||||
|
||||
// StarPilot variables
|
||||
#define HYUNDAI_LDA_BUTTON_ADDR_CHECK \
|
||||
{.msg = {{0x391, 0, 8, 100U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, \
|
||||
|
||||
@@ -178,7 +177,6 @@ static void hyundai_rx_hook(const CANPacket_t *msg) {
|
||||
brake_pressed = ((msg->data[5] >> 5U) & 0x3U) == 0x2U;
|
||||
}
|
||||
|
||||
// StarPilot variables
|
||||
if (msg->addr == 0x391U) {
|
||||
hyundai_lkas_button_check(GET_BIT(msg, 4U));
|
||||
}
|
||||
@@ -288,7 +286,6 @@ static safety_config hyundai_init(uint16_t param) {
|
||||
HYUNDAI_FCEV_GAS_ADDR_CHECK
|
||||
};
|
||||
|
||||
// StarPilot variables
|
||||
static RxCheck hyundai_long_rx_checks_lda[] = {
|
||||
HYUNDAI_COMMON_RX_CHECKS(false)
|
||||
HYUNDAI_LDA_BUTTON_ADDR_CHECK
|
||||
@@ -325,7 +322,6 @@ static safety_config hyundai_init(uint16_t param) {
|
||||
HYUNDAI_SCC12_ADDR_CHECK(2)
|
||||
};
|
||||
|
||||
// StarPilot variables
|
||||
static RxCheck hyundai_cam_scc_rx_checks_lda[] = {
|
||||
HYUNDAI_COMMON_RX_CHECKS(false)
|
||||
HYUNDAI_SCC12_ADDR_CHECK(2)
|
||||
@@ -349,7 +345,6 @@ static safety_config hyundai_init(uint16_t param) {
|
||||
HYUNDAI_FCEV_GAS_ADDR_CHECK
|
||||
};
|
||||
|
||||
// StarPilot variables
|
||||
static RxCheck hyundai_rx_checks_lda[] = {
|
||||
HYUNDAI_COMMON_RX_CHECKS(false)
|
||||
HYUNDAI_SCC12_ADDR_CHECK(0)
|
||||
|
||||
@@ -89,13 +89,11 @@ static void hyundai_canfd_rx_hook(const CANPacket_t *msg) {
|
||||
cruise_button = msg->data[2] & 0x7U;
|
||||
main_button = GET_BIT(msg, 19U);
|
||||
|
||||
// StarPilot variables
|
||||
hyundai_lkas_button_check(GET_BIT(msg, 23U));
|
||||
} else {
|
||||
cruise_button = (msg->data[4] >> 4) & 0x7U;
|
||||
main_button = GET_BIT(msg, 34U);
|
||||
|
||||
// StarPilot variables
|
||||
hyundai_lkas_button_check(GET_BIT(msg, 39U));
|
||||
}
|
||||
hyundai_common_cruise_buttons_check(cruise_button, main_button);
|
||||
|
||||
@@ -42,7 +42,6 @@ bool hyundai_fcev_gas_signal = false;
|
||||
extern bool hyundai_alt_limits_2;
|
||||
bool hyundai_alt_limits_2 = false;
|
||||
|
||||
// StarPilot variables
|
||||
extern bool hyundai_has_lda_button;
|
||||
bool hyundai_has_lda_button = false;
|
||||
|
||||
@@ -57,7 +56,6 @@ void hyundai_common_init(uint16_t param) {
|
||||
const uint16_t HYUNDAI_PARAM_FCEV_GAS = 256;
|
||||
const uint16_t HYUNDAI_PARAM_ALT_LIMITS_2 = 512;
|
||||
|
||||
// StarPilot variables
|
||||
const int HYUNDAI_PARAM_HAS_LDA_BUTTON = 1024;
|
||||
|
||||
hyundai_ev_gas_signal = GET_FLAG(param, HYUNDAI_PARAM_EV_GAS);
|
||||
@@ -68,7 +66,6 @@ void hyundai_common_init(uint16_t param) {
|
||||
hyundai_fcev_gas_signal = GET_FLAG(param, HYUNDAI_PARAM_FCEV_GAS);
|
||||
hyundai_alt_limits_2 = GET_FLAG(param, HYUNDAI_PARAM_ALT_LIMITS_2);
|
||||
|
||||
// StarPilot variables
|
||||
hyundai_has_lda_button = GET_FLAG(param, HYUNDAI_PARAM_HAS_LDA_BUTTON);
|
||||
|
||||
hyundai_last_button_interaction = HYUNDAI_PREV_BUTTON_SAMPLES;
|
||||
@@ -121,7 +118,6 @@ void hyundai_common_cruise_buttons_check(const int cruise_button, const bool mai
|
||||
cruise_button_prev = cruise_button;
|
||||
}
|
||||
|
||||
// StarPilot variables
|
||||
if (main_button && !main_button_prev) {
|
||||
acc_main_on = !acc_main_on;
|
||||
}
|
||||
@@ -155,7 +151,6 @@ uint32_t hyundai_common_canfd_compute_checksum(const CANPacket_t *msg) {
|
||||
}
|
||||
#endif
|
||||
|
||||
// StarPilot variables
|
||||
void hyundai_lkas_button_check(const bool lkas_button) {
|
||||
if (lkas_button && !lkas_button_prev) {
|
||||
lkas_on = !lkas_on;
|
||||
|
||||
@@ -35,7 +35,6 @@ static void mazda_rx_hook(const CANPacket_t *msg) {
|
||||
bool cruise_engaged = msg->data[0] & 0x8U;
|
||||
pcm_cruise_check(cruise_engaged);
|
||||
|
||||
// StarPilot variables
|
||||
acc_main_on = GET_BIT(msg, 17U);
|
||||
}
|
||||
|
||||
|
||||
@@ -51,7 +51,6 @@ static void nissan_rx_hook(const CANPacket_t *msg) {
|
||||
pcm_cruise_check(cruise_engaged);
|
||||
}
|
||||
|
||||
// StarPilot variables
|
||||
if ((msg->addr == 0x1B6U) && (msg->bus == (nissan_alt_eps ? 2U : 1U))) {
|
||||
acc_main_on = GET_BIT(msg, 36U);
|
||||
}
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
#define PSA_DAT_BSI 1042U // RX from BSI, brake
|
||||
#define PSA_LANE_KEEP_ASSIST 1010U // TX from OP, EPS
|
||||
|
||||
// StarPilot variables
|
||||
#define PSA_HS2_DYN1_MDD_ETAT_2B6 694U // RX from BSI, ACC status
|
||||
|
||||
// CAN bus
|
||||
@@ -24,7 +23,6 @@ static uint8_t psa_get_counter(const CANPacket_t *msg) {
|
||||
cnt = (msg->data[3] >> 4) & 0xFU;
|
||||
} else if (msg->addr == PSA_HS2_DYN_ABR_38D) {
|
||||
cnt = (msg->data[5] >> 4) & 0xFU;
|
||||
// StarPilot variables
|
||||
} else if (msg->addr == PSA_HS2_DYN1_MDD_ETAT_2B6) {
|
||||
cnt = (msg->data[7] >> 4) & 0xFU;
|
||||
} else {
|
||||
@@ -38,7 +36,6 @@ static uint32_t psa_get_checksum(const CANPacket_t *msg) {
|
||||
chksum = msg->data[5] & 0xFU;
|
||||
} else if (msg->addr == PSA_HS2_DYN_ABR_38D) {
|
||||
chksum = msg->data[5] & 0xFU;
|
||||
// StarPilot variables
|
||||
} else if (msg->addr == PSA_HS2_DYN1_MDD_ETAT_2B6) {
|
||||
chksum = msg->data[7] & 0xFU;
|
||||
} else {
|
||||
@@ -68,7 +65,6 @@ static uint32_t psa_compute_checksum(const CANPacket_t *msg) {
|
||||
chk = _psa_compute_checksum(msg, 0x4, 5);
|
||||
} else if (msg->addr == PSA_HS2_DYN_ABR_38D) {
|
||||
chk = _psa_compute_checksum(msg, 0x7, 5);
|
||||
// StarPilot variables
|
||||
} else if (msg->addr == PSA_HS2_DYN1_MDD_ETAT_2B6) {
|
||||
chk = _psa_compute_checksum(msg, 0x3, 7);
|
||||
} else {
|
||||
@@ -96,7 +92,6 @@ static void psa_rx_hook(const CANPacket_t *msg) {
|
||||
if (msg->addr == PSA_HS2_DAT_MDD_CMD_452) {
|
||||
pcm_cruise_check((msg->data[2U] >> 7U) & 1U); // RVV_ACC_ACTIVATION_REQ
|
||||
}
|
||||
// StarPilot variables
|
||||
if (msg->addr == PSA_HS2_DYN1_MDD_ETAT_2B6) {
|
||||
acc_main_on = (msg->data[3] & 0x0FU) > 2;
|
||||
}
|
||||
@@ -153,7 +148,6 @@ static safety_config psa_init(uint16_t param) {
|
||||
{.msg = {{PSA_DYN_CMM, PSA_MAIN_BUS, 8, 100U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, // gas pedal
|
||||
{.msg = {{PSA_DAT_BSI, PSA_CAM_BUS, 8, 20U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, // brake
|
||||
|
||||
// StarPilot variables
|
||||
{.msg = {{PSA_HS2_DYN1_MDD_ETAT_2B6, PSA_ADAS_BUS, 8, 20U, .max_counter = 15U, .ignore_quality_flag = true}, { 0 }, { 0 }}}, // ACC status
|
||||
};
|
||||
|
||||
|
||||
@@ -98,7 +98,6 @@ static void rivian_rx_hook(const CANPacket_t *msg) {
|
||||
const int feature_status = msg->data[2] >> 5U;
|
||||
pcm_cruise_check(feature_status == 1);
|
||||
|
||||
// StarPilot variables
|
||||
acc_main_on = (feature_status == 0) || (feature_status == 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -110,7 +110,6 @@ static void subaru_rx_hook(const CANPacket_t *msg) {
|
||||
bool cruise_engaged = (msg->data[5] >> 1) & 1U;
|
||||
pcm_cruise_check(cruise_engaged);
|
||||
|
||||
// StarPilot variables
|
||||
acc_main_on = GET_BIT(msg, 40U);
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,6 @@ static void subaru_preglobal_rx_hook(const CANPacket_t *msg) {
|
||||
bool cruise_engaged = (msg->data[6] >> 1) & 1U;
|
||||
pcm_cruise_check(cruise_engaged);
|
||||
|
||||
// StarPilot variables
|
||||
acc_main_on = GET_BIT(msg, 48U);
|
||||
}
|
||||
|
||||
|
||||
@@ -160,7 +160,6 @@ static void tesla_rx_hook(const CANPacket_t *msg) {
|
||||
|
||||
pcm_cruise_check(cruise_engaged);
|
||||
|
||||
// StarPilot variables
|
||||
acc_main_on = ((cruise_state == 1) || cruise_engaged) && !tesla_autopark;
|
||||
}
|
||||
|
||||
|
||||
@@ -162,7 +162,6 @@ static void toyota_rx_hook(const CANPacket_t *msg) {
|
||||
UPDATE_VEHICLE_SPEED(speed / 4.0 * 0.01 * KPH_TO_MS);
|
||||
}
|
||||
|
||||
// StarPilot variables
|
||||
if (msg->addr == 0x1D3U) {
|
||||
acc_main_on = GET_BIT(msg, 15U);
|
||||
}
|
||||
|
||||
@@ -60,7 +60,6 @@ bool acc_main_on = false; // referred to as "ACC off" in ISO 15622:2018
|
||||
int cruise_button_prev = 0;
|
||||
bool safety_rx_checks_invalid = false;
|
||||
|
||||
// StarPilot variables
|
||||
bool aol_allowed = false;
|
||||
bool lkas_button_prev = false;
|
||||
bool lkas_on = false;
|
||||
@@ -97,7 +96,6 @@ uint16_t current_safety_param = 0;
|
||||
static const safety_hooks *current_hooks = &nooutput_hooks;
|
||||
safety_config current_safety_config;
|
||||
|
||||
// OPGM variables
|
||||
bool enable_gas_interceptor = false;
|
||||
int gas_interceptor_prev = 0;
|
||||
bool gm_remote_start_boots_comma = false;
|
||||
@@ -375,7 +373,6 @@ static void generic_rx_checks(void) {
|
||||
}
|
||||
steering_disengage_prev = steering_disengage;
|
||||
|
||||
// StarPilot variables
|
||||
aol_allowed = (acc_main_on || lkas_on) && (alternative_experience & ALT_EXP_ALWAYS_ON_LATERAL);
|
||||
}
|
||||
|
||||
@@ -497,11 +494,9 @@ int set_safety_hooks(uint16_t mode, uint16_t param) {
|
||||
}
|
||||
}
|
||||
|
||||
// OPGM variables
|
||||
enable_gas_interceptor = false;
|
||||
gas_interceptor_prev = 0;
|
||||
|
||||
// StarPilot variables
|
||||
aol_allowed = false;
|
||||
lkas_button_prev = false;
|
||||
lkas_on = false;
|
||||
|
||||
@@ -310,7 +310,6 @@ class TorqueSteeringSafetyTestBase(SafetyTestBase, abc.ABC):
|
||||
for _ in range(10):
|
||||
self.assertFalse(self._tx(self._torque_cmd_msg(self.MAX_TORQUE, 1)))
|
||||
|
||||
# StarPilot variables
|
||||
def _toggle_aol(self, toggle_on):
|
||||
"""Toggles "Always On Lateral" On/Off"""
|
||||
pass
|
||||
@@ -851,7 +850,6 @@ class AngleSteeringSafetyTest(VehicleSpeedSafetyTest):
|
||||
for _ in range(5):
|
||||
self.assertTrue(self._tx(self._angle_cmd_msg(0, True, increment_timer=False)))
|
||||
|
||||
# StarPilot variables
|
||||
def _toggle_aol(self, toggle_on):
|
||||
"""Toggles "Always On Lateral" on/off"""
|
||||
pass
|
||||
@@ -1216,7 +1214,6 @@ class CarSafetyTest(SafetyTest):
|
||||
self.assertFalse(self.safety.safety_config_valid())
|
||||
|
||||
|
||||
# OPGM variables
|
||||
class GasInterceptorSafetyTest(PandaSafetyTestBase):
|
||||
|
||||
INTERCEPTOR_THRESHOLD = 0
|
||||
|
||||
@@ -71,7 +71,6 @@ class HyundaiButtonBase:
|
||||
self.assertEqual(controls_allowed, self.safety.get_controls_allowed())
|
||||
self._rx(self._button_msg(Buttons.NONE))
|
||||
|
||||
# StarPilot variables
|
||||
def _toggle_aol(self, toggle_on):
|
||||
"""
|
||||
Simulates toggling the main cruise button. The safety model requires a
|
||||
|
||||
@@ -71,7 +71,6 @@ class TestChryslerSafety(common.CarSafetyTest, common.MotorTorqueSteeringSafetyT
|
||||
self.assertFalse(self._tx(self._button_msg(cancel=True, resume=True)))
|
||||
self.assertFalse(self._tx(self._button_msg(cancel=False, resume=False)))
|
||||
|
||||
# StarPilot variables
|
||||
def _toggle_aol(self, toggle_on):
|
||||
# DAS_3, bit 20 is ACC_AVAILABLE
|
||||
values = {"ACC_AVAILABLE": 1 if toggle_on else 0}
|
||||
|
||||
@@ -378,7 +378,6 @@ class TestFordSafetyBase(common.CarSafetyTest):
|
||||
for bus in (0, 2):
|
||||
self.assertEqual(enabled, self._tx(self._acc_button_msg(Buttons.CANCEL, bus)))
|
||||
|
||||
# StarPilot variables
|
||||
def _toggle_aol(self, toggle_on):
|
||||
# EngBrakeData, CcStat_D_Actl is the cruise state
|
||||
# 3 is standby (main on), 5 is active (engaged)
|
||||
|
||||
@@ -132,7 +132,6 @@ class TestGmSafetyBase(common.CarSafetyTest, common.DriverTorqueSteeringSafetyTe
|
||||
values = {"ACCButtons": buttons}
|
||||
return self.packer.make_can_msg_safety("ASCMSteeringButton", self.BUTTONS_BUS, values)
|
||||
|
||||
# StarPilot variables
|
||||
def _toggle_aol(self, toggle_on):
|
||||
# ECMEngineStatus, bit 29 is CruiseMainOn
|
||||
values = {"CruiseMainOn": 1 if toggle_on else 0}
|
||||
@@ -289,7 +288,6 @@ class TestGmCameraLongitudinalEVSafety(GmCameraAccEVRegenMixin, TestGmCameraLong
|
||||
pass
|
||||
|
||||
|
||||
# OPGM variables
|
||||
def interceptor_msg(gas, addr):
|
||||
to_send = common.make_msg(0, addr, 6)
|
||||
to_send[0].data[0] = (gas & 0xFF00) >> 8
|
||||
|
||||
@@ -237,7 +237,6 @@ class HondaBase(common.CarSafetyTest):
|
||||
self.assertTrue(self._tx(self._send_steer_msg(0x0000)))
|
||||
self.assertFalse(self._tx(self._send_steer_msg(0x1000)))
|
||||
|
||||
# StarPilot variables
|
||||
def _toggle_aol(self, toggle_on):
|
||||
# SCM_FEEDBACK, bit 28 is MAIN_ON
|
||||
values = {"MAIN_ON": 1 if toggle_on else 0, "COUNTER": self.cnt_acc_state % 4}
|
||||
|
||||
@@ -81,7 +81,6 @@ class TestHyundaiCanfdBase(HyundaiButtonBase, common.CarSafetyTest, common.Drive
|
||||
}
|
||||
return self.packer.make_can_msg_safety("CRUISE_BUTTONS", bus, values)
|
||||
|
||||
# StarPilot variables
|
||||
def _toggle_aol(self, toggle_on):
|
||||
if not hasattr(self, "_aol_state"):
|
||||
self._aol_state = False
|
||||
@@ -172,7 +171,6 @@ class TestHyundaiCanfdLFASteeringAltButtonsBase(TestHyundaiCanfdLFASteeringBase)
|
||||
self.assertFalse(self._tx(self._acc_cancel_msg(True, accel=1)))
|
||||
self.assertFalse(self._tx(self._acc_cancel_msg(False)))
|
||||
|
||||
# StarPilot variables
|
||||
def _toggle_aol(self, toggle_on):
|
||||
if not hasattr(self, "_aol_state"):
|
||||
self._aol_state = False
|
||||
|
||||
@@ -80,7 +80,6 @@ class TestMazdaSafety(common.CarSafetyTest, common.DriverTorqueSteeringSafetyTes
|
||||
self.assertTrue(self._tx(self._button_msg(cancel=True)))
|
||||
self.assertTrue(self._tx(self._button_msg(resume=True)))
|
||||
|
||||
# StarPilot variables
|
||||
def _toggle_aol(self, toggle_on):
|
||||
# CRZ_CTRL, CRZ_AVAILABLE is the main on button
|
||||
values = {"CRZ_AVAILABLE": 1 if toggle_on else 0}
|
||||
|
||||
@@ -79,7 +79,6 @@ class TestNissanSafety(common.CarSafetyTest, common.AngleSteeringSafetyTest):
|
||||
tx = self._tx(self._acc_button_cmd(**args))
|
||||
self.assertEqual(tx, should_tx)
|
||||
|
||||
# StarPilot variables
|
||||
def _toggle_aol(self, toggle_on):
|
||||
# PRO_PILOT, CRUISE_ON is the main on button for X-Trail/Rogue/Altima
|
||||
values = {"CRUISE_ON": 1 if toggle_on else 0}
|
||||
@@ -119,7 +118,6 @@ class TestNissanLeafSafety(TestNissanSafety):
|
||||
def test_acc_buttons(self):
|
||||
pass
|
||||
|
||||
# StarPilot variables
|
||||
def _toggle_aol(self, toggle_on):
|
||||
# CRUISE_THROTTLE, CRUISE_AVAILABLE is the main on button for Leaf
|
||||
values = {"CRUISE_AVAILABLE": 1 if toggle_on else 0}
|
||||
|
||||
@@ -111,7 +111,6 @@ class TestSubaruSafetyBase(common.CarSafetyTest):
|
||||
values = {"Cruise_Activated": enable}
|
||||
return self.packer.make_can_msg_safety("CruiseControl", self.ALT_MAIN_BUS, values)
|
||||
|
||||
# StarPilot variables
|
||||
def _toggle_aol(self, toggle_on):
|
||||
# CruiseControl, Cruise_On is the main on button
|
||||
values = {"Cruise_On": 1 if toggle_on else 0}
|
||||
|
||||
@@ -59,7 +59,6 @@ class TestSubaruPreglobalSafety(common.CarSafetyTest, common.DriverTorqueSteerin
|
||||
values = {"Cruise_Activated": enable}
|
||||
return self.packer.make_can_msg_safety("CruiseControl", 0, values)
|
||||
|
||||
# StarPilot variables
|
||||
def _toggle_aol(self, toggle_on):
|
||||
# CruiseControl, Cruise_On is the main on button
|
||||
values = {"Cruise_On": 1 if toggle_on else 0}
|
||||
|
||||
@@ -353,7 +353,6 @@ class TestTeslaSafetyBase(common.CarSafetyTest, common.AngleSteeringSafetyTest,
|
||||
# Recover
|
||||
self.assertTrue(self._tx(self._angle_cmd_msg(0, True)))
|
||||
|
||||
# StarPilot variables
|
||||
def _toggle_aol(self, toggle_on):
|
||||
# DI_state, DI_cruiseState is the cruise state, 1 is standby
|
||||
values = {"DI_cruiseState": 1 if toggle_on else 0}
|
||||
|
||||
@@ -122,7 +122,6 @@ class TestToyotaSafetyBase(common.CarSafetyTest, common.LongitudinalAccelSafetyT
|
||||
self.assertFalse(self._rx(msg))
|
||||
self.assertFalse(self.safety.get_controls_allowed())
|
||||
|
||||
# StarPilot variables
|
||||
def _toggle_aol(self, toggle_on):
|
||||
# pcm_cruise_2, bit 15 is toggle_on
|
||||
values = {"MAIN_ON": 1 if toggle_on else 0}
|
||||
|
||||
@@ -126,7 +126,6 @@ class TestVolkswagenMqbSafetyBase(common.CarSafetyTest, common.DriverTorqueSteer
|
||||
self.assertEqual(0, self.safety.get_torque_driver_max())
|
||||
self.assertEqual(0, self.safety.get_torque_driver_min())
|
||||
|
||||
# StarPilot variables
|
||||
def _toggle_aol(self, toggle_on):
|
||||
# TSK_06, TSK_Status is the cruise state, 2 is standby
|
||||
return self._tsk_status_msg(False, main_switch=toggle_on)
|
||||
|
||||
@@ -108,7 +108,6 @@ class TestVolkswagenPqSafetyBase(common.CarSafetyTest, common.DriverTorqueSteeri
|
||||
self.assertEqual(0, self.safety.get_torque_driver_max())
|
||||
self.assertEqual(0, self.safety.get_torque_driver_min())
|
||||
|
||||
# StarPilot variables
|
||||
def _toggle_aol(self, toggle_on):
|
||||
# Motor_5, GRA_Hauptschalter is the main cruise switch
|
||||
return self._motor_5_msg(main_switch=toggle_on)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,2 +1,2 @@
|
||||
extern const uint8_t gitversion[19];
|
||||
const uint8_t gitversion[19] = "DEV-a97a59be-DEBUG";
|
||||
const uint8_t gitversion[19] = "DEV-82619bd7-DEBUG";
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user