From 2665d308caca3ba29c11cff33d0a0ae555014f52 Mon Sep 17 00:00:00 2001 From: Rick Lan Date: Thu, 5 Nov 2020 16:17:54 +1000 Subject: [PATCH] * HYUNDAI_GENESIS added Cruise button event and lkMode feature. (Thanks to @donfyffe) --- CHANGELOGS-DEV.md | 2 ++ CHANGELOGS-REL.md | 2 ++ CHANGELOGS.md | 5 +++++ selfdrive/car/honda/carstate.py | 8 ++------ selfdrive/car/hyundai/carcontroller.py | 2 +- selfdrive/car/hyundai/carstate.py | 10 ++++++++-- selfdrive/car/hyundai/interface.py | 3 +++ 7 files changed, 23 insertions(+), 9 deletions(-) diff --git a/CHANGELOGS-DEV.md b/CHANGELOGS-DEV.md index aa310dc49..e36b11db5 100644 --- a/CHANGELOGS-DEV.md +++ b/CHANGELOGS-DEV.md @@ -2,6 +2,8 @@ dragonpilot 0.7.10.1 ======================== * HYUNDAI_GENESIS 使用 INDI 控制器。(感謝 @donfyffe 提供) * HYUNDAI_GENESIS uses INDI controller. (Thanks to @donfyffe) +* HYUNDAI_GENESIS 加入 Cruise 按紐 和 lkMode 支援。(感謝 @donfyffe 建議) +* HYUNDAI_GENESIS added Cruise button event and lkMode feature. (Thanks to @donfyffe) dragonpilot 0.7.10.0 ======================== diff --git a/CHANGELOGS-REL.md b/CHANGELOGS-REL.md index 00a255665..4e2519791 100644 --- a/CHANGELOGS-REL.md +++ b/CHANGELOGS-REL.md @@ -19,6 +19,8 @@ dragonpilot 0.7.10.0 * Fixed auto shutdown issue when EON connect to PC/USB Charger. (Thanks to @LOVEChen) * HYUNDAI_GENESIS 使用 INDI 控制器。(感謝 @donfyffe 提供) * HYUNDAI_GENESIS uses INDI controller. (Thanks to @donfyffe) +* HYUNDAI_GENESIS 加入 Cruise 按紐 和 lkMode 支援。(感謝 @donfyffe 建議) +* HYUNDAI_GENESIS added Cruise button event and lkMode feature. (Thanks to @donfyffe) dragonpilot 0.7.8 ======================== diff --git a/CHANGELOGS.md b/CHANGELOGS.md index c3a37c2a6..8dbf45140 100644 --- a/CHANGELOGS.md +++ b/CHANGELOGS.md @@ -1,3 +1,8 @@ +2020-11-05 (0.7.10.0) +======================== +* HYUNDAI_GENESIS 加入 Cruise 按紐 和 lkMode 支援。(感謝 @donfyffe 建議) +* HYUNDAI_GENESIS added Cruise button event and lkMode feature. (Thanks to @donfyffe) + 2020-11-04 (0.7.10.0) ======================== * HYUNDAI_GENESIS 使用 INDI 控制器。(感謝 @donfyffe 提供) diff --git a/selfdrive/car/honda/carstate.py b/selfdrive/car/honda/carstate.py index 978fded11..764386815 100644 --- a/selfdrive/car/honda/carstate.py +++ b/selfdrive/car/honda/carstate.py @@ -234,12 +234,8 @@ class CarState(CarStateBase): ret.steeringRate = cp.vl["STEERING_SENSORS"]['STEER_ANGLE_RATE'] # dp - when user presses LKAS button on steering wheel - if self.cruise_setting == 1: - if cp.vl["SCM_BUTTONS"]["CRUISE_SETTING"] == 0: - if self.lkMode: - self.lkMode = False - else: - self.lkMode = True + if self.cruise_setting == 1 and cp.vl["SCM_BUTTONS"]["CRUISE_SETTING"] == 0: + self.lkMode = not self.lkMode self.cruise_setting = cp.vl["SCM_BUTTONS"]['CRUISE_SETTING'] self.cruise_buttons = cp.vl["SCM_BUTTONS"]['CRUISE_BUTTONS'] diff --git a/selfdrive/car/hyundai/carcontroller.py b/selfdrive/car/hyundai/carcontroller.py index 465ee92cf..97322079c 100644 --- a/selfdrive/car/hyundai/carcontroller.py +++ b/selfdrive/car/hyundai/carcontroller.py @@ -58,7 +58,7 @@ class CarController(): self.steer_rate_limited = new_steer != apply_steer # disable if steer angle reach 90 deg, otherwise mdps fault in some models - lkas_active = enabled and abs(CS.out.steeringAngle) < 90. + lkas_active = enabled and abs(CS.out.steeringAngle) < 90. and CS.lkMode # fix for Genesis hard fault at low speed if CS.out.vEgo < 16.7 and self.car_fingerprint == CAR.HYUNDAI_GENESIS: diff --git a/selfdrive/car/hyundai/carstate.py b/selfdrive/car/hyundai/carstate.py index b799a13fe..48681e80a 100644 --- a/selfdrive/car/hyundai/carstate.py +++ b/selfdrive/car/hyundai/carstate.py @@ -1,6 +1,6 @@ import copy from cereal import car -from selfdrive.car.hyundai.values import DBC, STEER_THRESHOLD, FEATURES, EV_HYBRID +from selfdrive.car.hyundai.values import CAR, DBC, STEER_THRESHOLD, FEATURES, EV_HYBRID from selfdrive.car.interfaces import CarStateBase from opendbc.can.parser import CANParser from selfdrive.config import Conversions as CV @@ -9,6 +9,11 @@ GearShifter = car.CarState.GearShifter class CarState(CarStateBase): + def __init__(self, CP): + super().__init__(CP) + #dp + self.lkMode = True + def update(self, cp, cp_cam): ret = car.CarState.new_message() @@ -37,7 +42,7 @@ class CarState(CarStateBase): ret.steerWarning = cp.vl["MDPS12"]['CF_Mdps_ToiUnavail'] != 0 # cruise state - ret.cruiseState.available = True + ret.cruiseState.available = cp.vl["SCC11"]["MainMode_ACC"] != 0 if self.CP.carFingerprint in [CAR.HYUNDAI_GENESIS] else True ret.cruiseState.enabled = cp.vl["SCC12"]['ACCMode'] != 0 ret.cruiseState.standstill = cp.vl["SCC11"]['SCCInfoDisplay'] == 4. @@ -131,6 +136,7 @@ class CarState(CarStateBase): self.steer_state = cp.vl["MDPS12"]['CF_Mdps_ToiActive'] # 0 NOT ACTIVE, 1 ACTIVE self.lead_distance = cp.vl["SCC11"]['ACC_ObjDist'] + self.lkMode = bool(cp_cam.vl["LKAS11"]["CF_Lkas_LdwsSysState"]) return ret @staticmethod diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py index 3d8422053..2cba1686b 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -200,10 +200,13 @@ class CarInterface(CarInterfaceBase): self.dragonconf = dragonconf ret.cruiseState.enabled = common_interface_atl(ret, dragonconf.dpAtl) ret.canValid = self.cp.can_valid and self.cp_cam.can_valid + ret.lkMode = self.CS.lkMode events = self.create_common_events(ret) #TODO: addd abs(self.CS.angle_steers) > 90 to 'steerTempUnavailable' event + if not self.CS.lkMode: + events.add(car.CarEvent.EventName.manualSteeringRequired) # low speed steer alert hysteresis logic (only for cars with steer cut off above 10 m/s) if ret.vEgo < (self.CP.minSteerSpeed + 2.) and self.CP.minSteerSpeed > 10.: self.low_speed_alert = True