diff --git a/common/params.cc b/common/params.cc index c613cf0a36..5cb98babf4 100644 --- a/common/params.cc +++ b/common/params.cc @@ -261,6 +261,7 @@ std::unordered_map keys = { {"HandsOnWheelMonitoring", PERSISTENT | BACKUP}, {"HasAcceptedTermsSP", PERSISTENT}, {"HideVEgoUi", PERSISTENT | BACKUP}, + {"HyundaiCruiseMainDefault", PERSISTENT | BACKUP}, {"HkgSmoothStop", PERSISTENT | BACKUP}, {"HotspotOnBoot", PERSISTENT}, {"HotspotOnBootConfirmed", PERSISTENT}, diff --git a/selfdrive/car/hyundai/carstate.py b/selfdrive/car/hyundai/carstate.py index 63291a9511..fcd44cc1cd 100644 --- a/selfdrive/car/hyundai/carstate.py +++ b/selfdrive/car/hyundai/carstate.py @@ -55,7 +55,7 @@ class CarState(CarStateBase): self.lfa_enabled = False self.prev_lfa_enabled = False - self.mainEnabled = True if CP.spFlags & HyundaiFlagsSP.SP_CAN_LFA_BTN or CP.carFingerprint in CANFD_CAR else False + self.mainEnabled = False self.escc_aeb_warning = 0 self.escc_aeb_dec_cmd_act = 0 self.escc_cmd_act = 0 diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py index c2140d2925..a6f35abb18 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -202,6 +202,10 @@ class CarInterface(CarInterfaceBase): enable_radar_tracks(logcan, sendcan, bus=0, addr=0x7d0, config_data_id=b'\x01\x42') def _update(self, c): + if not self.CS.control_initialized: + can_cruise_main_default = self.CP.spFlags & HyundaiFlagsSP.SP_CAN_LFA_BTN and not self.CP.flags & HyundaiFlags.CANFD and self.CS.params_list.hyundai_cruise_main_default + self.CS.mainEnabled = True if can_cruise_main_default or self.CP.carFingerprint in CANFD_CAR else False + ret = self.CS.update(self.cp, self.cp_cam) self.CS.button_events = [ diff --git a/selfdrive/car/param_manager.py b/selfdrive/car/param_manager.py index c7df87b9b7..6f393bd2d2 100644 --- a/selfdrive/car/param_manager.py +++ b/selfdrive/car/param_manager.py @@ -11,6 +11,7 @@ class ParamManager: "experimental_mode": False, "is_metric": False, "last_speed_limit_sign_tap": False, + "hyundai_cruise_main_default": False, "mads_main_toggle": False, "pause_lateral_speed": 0, "reverse_acc_change": False, @@ -37,6 +38,7 @@ class ParamManager: "experimental_mode": params.get_bool("ExperimentalMode"), "is_metric": params.get_bool("IsMetric"), "last_speed_limit_sign_tap": params.get_bool("LastSpeedLimitSignTap"), + "hyundai_cruise_main_default": params.get_bool("HyundaiCruiseMainDefault"), "mads_main_toggle": params.get_bool("MadsCruiseMain"), "pause_lateral_speed": int(params.get("PauseLateralSpeed", encoding="utf8")), "reverse_acc_change": params.get_bool("ReverseAccChange"), diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/vehicle_settings.cc b/selfdrive/ui/sunnypilot/qt/offroad/settings/vehicle_settings.cc index 10ff22c028..16c237bf45 100644 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/vehicle_settings.cc +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/vehicle_settings.cc @@ -109,6 +109,13 @@ SPVehiclesTogglesPanel::SPVehiclesTogglesPanel(VehiclePanel *parent) : ListWidge hkgSmoothStop->setConfirmation(true, false); addItem(hkgSmoothStop); + hyundaiCruiseMainDefault = new ParamControlSP( + "HyundaiCruiseMainDefault", + tr("HKG CAN: Enable Cruise Main By Default"), + tr("Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS"), + "../assets/offroad/icon_blank.png"); + addItem(hyundaiCruiseMainDefault); + // Subaru addItem(new LabelControlSP(tr("Subaru"))); auto subaruManualParkingBrakeSng = new ParamControlSP( @@ -194,6 +201,7 @@ SPVehiclesTogglesPanel::SPVehiclesTogglesPanel(VehiclePanel *parent) : ListWidge connect(uiStateSP(), &UIStateSP::offroadTransition, [=](bool offroad) { is_onroad = !offroad; hkgSmoothStop->setEnabled(offroad); + hyundaiCruiseMainDefault->setEnabled(offroad); toyotaTss2LongTune->setEnabled(offroad); toyotaEnhancedBsm->setEnabled(offroad); toyotaSngHack->setEnabled(offroad); @@ -223,6 +231,17 @@ void SPVehiclesTogglesPanel::updateToggles() { capnp::FlatArrayMessageReader cmsg(aligned_buf.align(cp_bytes.data(), cp_bytes.size())); cereal::CarParams::Reader CP = cmsg.getRoot(); + // Hyundai/Kia/Genesis + { + if (CP.getCarName() == "hyundai") { + if ((CP.getSpFlags() & 2) and !(CP.getFlags() & 8192)) { + hyundaiCruiseMainDefault->setEnabled(true); + } else { + hyundaiCruiseMainDefault->setEnabled(false); + } + } + } + // Toyota: Enhanced Blind Spot Monitor { if (CP.getCarName() == "toyota") { diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/vehicle_settings.h b/selfdrive/ui/sunnypilot/qt/offroad/settings/vehicle_settings.h index ddf61f6e76..9d172be239 100644 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/vehicle_settings.h +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/vehicle_settings.h @@ -67,6 +67,7 @@ private: Params params; bool is_onroad = false; + ParamControlSP *hyundaiCruiseMainDefault; ParamControlSP *stockLongToyota; ParamControlSP *toyotaEnhancedBsm; diff --git a/selfdrive/ui/translations/main_ar.ts b/selfdrive/ui/translations/main_ar.ts index 7dae31a53e..6bc28355ca 100644 --- a/selfdrive/ui/translations/main_ar.ts +++ b/selfdrive/ui/translations/main_ar.ts @@ -1583,6 +1583,14 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main By Default + + + + Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS + + SettingsWindow diff --git a/selfdrive/ui/translations/main_de.ts b/selfdrive/ui/translations/main_de.ts index 6b8fd1efc1..54091977cc 100644 --- a/selfdrive/ui/translations/main_de.ts +++ b/selfdrive/ui/translations/main_de.ts @@ -1565,6 +1565,14 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main By Default + + + + Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS + + SettingsWindow diff --git a/selfdrive/ui/translations/main_es.ts b/selfdrive/ui/translations/main_es.ts index 4b0262e699..edd6417cd2 100644 --- a/selfdrive/ui/translations/main_es.ts +++ b/selfdrive/ui/translations/main_es.ts @@ -1563,6 +1563,14 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main By Default + + + + Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS + + SettingsWindow diff --git a/selfdrive/ui/translations/main_fr.ts b/selfdrive/ui/translations/main_fr.ts index 0071a33e47..0201456ff4 100644 --- a/selfdrive/ui/translations/main_fr.ts +++ b/selfdrive/ui/translations/main_fr.ts @@ -1567,6 +1567,14 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main By Default + + + + Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS + + SettingsWindow diff --git a/selfdrive/ui/translations/main_ja.ts b/selfdrive/ui/translations/main_ja.ts index 5db645c9f4..e648fbbade 100644 --- a/selfdrive/ui/translations/main_ja.ts +++ b/selfdrive/ui/translations/main_ja.ts @@ -1561,6 +1561,14 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main By Default + + + + Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS + + SettingsWindow diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index 1a55d59a3b..80b718abe4 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -1563,6 +1563,14 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main By Default + + + + Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS + + SettingsWindow diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index 856ef26ca8..4888cc3dd9 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -1567,6 +1567,14 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main By Default + + + + Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS + + SettingsWindow diff --git a/selfdrive/ui/translations/main_th.ts b/selfdrive/ui/translations/main_th.ts index 220b6575c4..9f28dd8c36 100644 --- a/selfdrive/ui/translations/main_th.ts +++ b/selfdrive/ui/translations/main_th.ts @@ -1563,6 +1563,14 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main By Default + + + + Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS + + SettingsWindow diff --git a/selfdrive/ui/translations/main_tr.ts b/selfdrive/ui/translations/main_tr.ts index a8c3992fd2..c253b763e4 100644 --- a/selfdrive/ui/translations/main_tr.ts +++ b/selfdrive/ui/translations/main_tr.ts @@ -1561,6 +1561,14 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main By Default + + + + Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS + + SettingsWindow diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index fddf413a50..71b7b5ebda 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -1563,6 +1563,14 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main By Default + + + + Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS + + SettingsWindow diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index 684447b113..8a9683c9b4 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -1563,6 +1563,14 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main By Default + + + + Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS + + SettingsWindow diff --git a/system/manager/manager.py b/system/manager/manager.py index 8169617302..e4537cac78 100755 --- a/system/manager/manager.py +++ b/system/manager/manager.py @@ -71,6 +71,7 @@ def manager_init() -> None: ("FeatureStatus", "1"), ("HandsOnWheelMonitoring", "0"), ("HasAcceptedTermsSP", "0"), + ("HyundaiCruiseMainDefault", "0"), ("HideVEgoUi", "0"), ("LastSpeedLimitSignTap", "0"), ("LkasToggle", "0"),