diff --git a/CHANGELOGS.md b/CHANGELOGS.md index 650d149843..208512b3dd 100644 --- a/CHANGELOGS.md +++ b/CHANGELOGS.md @@ -14,6 +14,9 @@ sunnypilot - 0.9.8.0 (2024-xx-xx) * Provides a more responsive and tailored driving experience compared to predefined settings * UPDATED: Driving Personality: Updated mode names * Aggressive, Moderate, Standard, Relaxed +* NEW❗: Hyundai CAN: Enable Cruise Main by Default + * Set CRUISE MAIN to ON by default when the car starts, without engaging MADS + * This feature only applies when "openpilot Longitudinal Control (Alpha)" is enabled under the "Toggles" menu * NEW❗: Toyota - Enhanced Blind Spot Monitor (BSM) thanks to arne182, rav4kumar, and eFiniLan! * Enables Blind Spot Monitor (BSM) signals parsing in sunnypilot using the factory Blind Spot Monitor (BSM) * sunnypilot will use debugging CAN messages to receive unfiltered BSM signals, allowing detection of more objects diff --git a/common/params.cc b/common/params.cc index 04906f3d6a..fa0c0491c8 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/interface.py b/selfdrive/car/hyundai/interface.py index f6bb0b924a..332af827fa 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -110,6 +110,7 @@ class CarInterface(CarInterfaceBase): if DBC[ret.carFingerprint]["radar"] is None: if ret.spFlags & (HyundaiFlagsSP.SP_ENHANCED_SCC | HyundaiFlagsSP.SP_CAMERA_SCC_LEAD): + ret.radarTimeStep = 0.02 ret.radarUnavailable = False # *** feature detection *** @@ -211,6 +212,11 @@ class CarInterface(CarInterfaceBase): params.put_bool_nonblocking("HyundaiRadarTracksAvailable", False) def _update(self, c): + if not self.CS.control_initialized and not self.CP.pcmCruise: + 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 = [ @@ -230,8 +236,8 @@ class CarInterface(CarInterfaceBase): self.CS.accEnabled = True if self.enable_mads: - if not self.CS.prev_mads_enabled and self.CS.mads_enabled and \ - any(b.type == ButtonType.altButton3 for b in self.CS.button_events): + if not self.CS.prev_mads_enabled and self.CS.mads_enabled and (self.CP.pcmCruise or + (any(b.type == ButtonType.altButton3 for b in self.CS.button_events) and not self.CP.pcmCruise)): self.CS.madsEnabled = True if any(b.type == ButtonType.altButton1 and b.pressed for b in self.CS.button_events): self.CS.madsEnabled = not self.CS.madsEnabled diff --git a/selfdrive/car/param_manager.py b/selfdrive/car/param_manager.py index b0f830ccc7..00e7bb382d 100644 --- a/selfdrive/car/param_manager.py +++ b/selfdrive/car/param_manager.py @@ -13,6 +13,7 @@ class ParamManager: "hyundai_radar_tracks_available_cache": 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, @@ -41,6 +42,7 @@ class ParamManager: "hyundai_radar_tracks_available_cache": params.get_bool("HyundaiRadarTracksAvailableCache"), "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..330458de1c 100644 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/vehicle_settings.cc +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/vehicle_settings.cc @@ -109,6 +109,16 @@ SPVehiclesTogglesPanel::SPVehiclesTogglesPanel(VehiclePanel *parent) : ListWidge hkgSmoothStop->setConfirmation(true, false); addItem(hkgSmoothStop); + hyundaiCruiseMainDefault = new ParamControlSP( + "HyundaiCruiseMainDefault", + tr("HKG CAN: Enable Cruise Main by Default"), + QString("%1

%2") + .arg(tr("WARNING: This feature only applies when \"openpilot Longitudinal Control (Alpha)\" is enabled under \"Toggles\"")) + .arg(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"); + hyundaiCruiseMainDefault->setConfirmation(true, false); + addItem(hyundaiCruiseMainDefault); + // Subaru addItem(new LabelControlSP(tr("Subaru"))); auto subaruManualParkingBrakeSng = new ParamControlSP( @@ -194,6 +204,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 +234,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..e40771ae8c 100644 --- a/selfdrive/ui/translations/main_ar.ts +++ b/selfdrive/ui/translations/main_ar.ts @@ -1583,6 +1583,18 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main by Default + + + + WARNING: This feature only applies when "openpilot Longitudinal Control (Alpha)" is enabled under "Toggles" + + + + 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..d48c0f5330 100644 --- a/selfdrive/ui/translations/main_de.ts +++ b/selfdrive/ui/translations/main_de.ts @@ -1565,6 +1565,18 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main by Default + + + + WARNING: This feature only applies when "openpilot Longitudinal Control (Alpha)" is enabled under "Toggles" + + + + 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..36d8fb8c83 100644 --- a/selfdrive/ui/translations/main_es.ts +++ b/selfdrive/ui/translations/main_es.ts @@ -1563,6 +1563,18 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main by Default + + + + WARNING: This feature only applies when "openpilot Longitudinal Control (Alpha)" is enabled under "Toggles" + + + + 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..f76b7cb63b 100644 --- a/selfdrive/ui/translations/main_fr.ts +++ b/selfdrive/ui/translations/main_fr.ts @@ -1567,6 +1567,18 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main by Default + + + + WARNING: This feature only applies when "openpilot Longitudinal Control (Alpha)" is enabled under "Toggles" + + + + 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..d8124dc12b 100644 --- a/selfdrive/ui/translations/main_ja.ts +++ b/selfdrive/ui/translations/main_ja.ts @@ -1561,6 +1561,18 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main by Default + + + + WARNING: This feature only applies when "openpilot Longitudinal Control (Alpha)" is enabled under "Toggles" + + + + 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..adb6547643 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -1563,6 +1563,18 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main by Default + + + + WARNING: This feature only applies when "openpilot Longitudinal Control (Alpha)" is enabled under "Toggles" + + + + 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..b2cbf296e6 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -1567,6 +1567,18 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main by Default + + + + WARNING: This feature only applies when "openpilot Longitudinal Control (Alpha)" is enabled under "Toggles" + + + + 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..26d8e95fa1 100644 --- a/selfdrive/ui/translations/main_th.ts +++ b/selfdrive/ui/translations/main_th.ts @@ -1563,6 +1563,18 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main by Default + + + + WARNING: This feature only applies when "openpilot Longitudinal Control (Alpha)" is enabled under "Toggles" + + + + 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..f55bbd7781 100644 --- a/selfdrive/ui/translations/main_tr.ts +++ b/selfdrive/ui/translations/main_tr.ts @@ -1561,6 +1561,18 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main by Default + + + + WARNING: This feature only applies when "openpilot Longitudinal Control (Alpha)" is enabled under "Toggles" + + + + 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..98801bffbd 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -1563,6 +1563,18 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main by Default + + + + WARNING: This feature only applies when "openpilot Longitudinal Control (Alpha)" is enabled under "Toggles" + + + + 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..5e6e3a7418 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -1563,6 +1563,18 @@ Reboot Required. Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2. + + HKG CAN: Enable Cruise Main by Default + + + + WARNING: This feature only applies when "openpilot Longitudinal Control (Alpha)" is enabled under "Toggles" + + + + 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 a964b27341..60ec7cb92a 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"), ("HyundaiRadarTracksAvailable", "0"), ("HyundaiRadarTracksAvailableCache", "0"),