mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-09-30 21:23:43 +08:00
init
This commit is contained in:
@@ -169,6 +169,7 @@ inline static std::unordered_map<std::string, uint32_t> keys = {
|
||||
{"HyundaiRadarTracksConfirmed", PERSISTENT},
|
||||
{"HyundaiRadarTracksPersistent", PERSISTENT},
|
||||
{"HyundaiRadarTracksToggle", PERSISTENT},
|
||||
{"HyundaiRadar", PERSISTENT},
|
||||
|
||||
{"DynamicExperimentalControl", PERSISTENT},
|
||||
};
|
||||
|
||||
+1
-1
Submodule opendbc_repo updated: 5db6b93bc5...a905f691ee
@@ -20,6 +20,19 @@ HyundaiSettings::HyundaiSettings(QWidget *parent) : BrandSettingsInterface(paren
|
||||
QObject::connect(longitudinalTuningToggle, &ButtonParamControlSP::buttonToggled, this, &HyundaiSettings::updateSettings);
|
||||
list->addItem(longitudinalTuningToggle);
|
||||
longitudinalTuningToggle->showDescription();
|
||||
|
||||
std::vector<QString> radar_tuning_texts{ tr("Off"), tr("Lead Only"), tr("Full Radar") };
|
||||
radarToggle = new ButtonParamControl(
|
||||
"HyundaiRadar",
|
||||
tr("Radar Tracks"),
|
||||
"",
|
||||
"",
|
||||
radar_tuning_texts,
|
||||
500
|
||||
);
|
||||
QObject::connect(radarToggle, &ButtonParamControlSP::buttonToggled, this, &HyundaiSettings::updateSettings);
|
||||
list->addItem(radarToggle);
|
||||
radarToggle->showDescription();
|
||||
}
|
||||
|
||||
void HyundaiSettings::updateSettings() {
|
||||
@@ -54,4 +67,25 @@ void HyundaiSettings::updateSettings() {
|
||||
longitudinalTuningToggle->setEnabled(!longitudinal_tuning_disabled);
|
||||
longitudinalTuningToggle->setDescription(longitudinal_tuning_description);
|
||||
longitudinalTuningToggle->showDescription();
|
||||
|
||||
auto radar_param = std::atoi(params.get("HyundaiRadar").c_str());
|
||||
|
||||
RadarOption radar_option;
|
||||
if (radar_param == int(RadarOption::LEAD_ONLY)) {
|
||||
radar_option = RadarOption::LEAD_ONLY;
|
||||
} else if (radar_param == int(RadarOption::FULL_RADAR)) {
|
||||
radar_option = RadarOption::FULL_RADAR;
|
||||
} else {
|
||||
radar_option = RadarOption::OFF;
|
||||
}
|
||||
|
||||
bool radar_disabled = !offroad || !has_longitudinal_control;
|
||||
QString radar_description = radarDescription(radar_option);
|
||||
if (radar_disabled) {
|
||||
radar_description = toggleDisableMsg(offroad, has_longitudinal_control);
|
||||
}
|
||||
|
||||
radarToggle->setEnabled(!radar_disabled);
|
||||
radarToggle->setDescription(radar_description);
|
||||
radarToggle->showDescription();
|
||||
}
|
||||
|
||||
@@ -20,6 +20,12 @@ enum class LongitudinalTuningOption {
|
||||
PREDICTIVE,
|
||||
};
|
||||
|
||||
enum class RadarOption {
|
||||
OFF,
|
||||
LEAD_ONLY,
|
||||
FULL_RADAR,
|
||||
};
|
||||
|
||||
class HyundaiSettings : public BrandSettingsInterface {
|
||||
Q_OBJECT
|
||||
|
||||
@@ -30,6 +36,7 @@ public:
|
||||
private:
|
||||
bool has_longitudinal_control = false;
|
||||
ButtonParamControl *longitudinalTuningToggle = nullptr;
|
||||
ButtonParamControl *radarToggle = nullptr;
|
||||
|
||||
static QString toggleDisableMsg(bool _offroad, bool _has_longitudinal_control) {
|
||||
if (!_has_longitudinal_control) {
|
||||
@@ -62,4 +69,24 @@ private:
|
||||
.arg(dynamic_str)
|
||||
.arg(predictive_str);
|
||||
}
|
||||
|
||||
static QString radarDescription(RadarOption option = RadarOption::OFF) {
|
||||
QString off_str = tr("Off: Disables radar tracking. Vision-only vehicle detection.");
|
||||
QString lead_only_str = tr("Lead Only: Tracks only the closest vehicle ahead.");
|
||||
QString full_radar_str = tr("Full Radar: Tracks all nearby vehicles using radar.");
|
||||
|
||||
if (option == RadarOption::LEAD_ONLY) {
|
||||
lead_only_str = "<font color='white'><b>" + lead_only_str + "</b></font>";
|
||||
} else if (option == RadarOption::FULL_RADAR) {
|
||||
full_radar_str = "<font color='white'><b>" + full_radar_str + "</b></font>";
|
||||
} else {
|
||||
off_str = "<font color='white'><b>" + off_str + "</b></font>";
|
||||
}
|
||||
|
||||
return QString("%1<br><br>%2<br>%3<br>%4<br>")
|
||||
.arg(tr("Configure how radar tracks surrounding vehicles — turn it off, track only the lead, or track all."))
|
||||
.arg(off_str)
|
||||
.arg(lead_only_str)
|
||||
.arg(full_radar_str);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -11,7 +11,7 @@ from opendbc.car.car_helpers import can_fingerprint
|
||||
from opendbc.car.interfaces import CarInterfaceBase
|
||||
from opendbc.car.hyundai.radar_interface import RADAR_START_ADDR
|
||||
from opendbc.car.hyundai.values import HyundaiFlags, DBC as HYUNDAI_DBC
|
||||
from opendbc.sunnypilot.car.hyundai.longitudinal.helpers import LongitudinalTuningType
|
||||
from opendbc.sunnypilot.car.hyundai.longitudinal.helpers import LongitudinalTuningType, RadarType
|
||||
from opendbc.sunnypilot.car.hyundai.values import HyundaiFlagsSP
|
||||
from openpilot.common.params import Params
|
||||
from openpilot.common.swaglog import cloudlog
|
||||
@@ -77,6 +77,19 @@ def _initialize_radar_tracks(CP: structs.CarParams, CP_SP: structs.CarParamsSP,
|
||||
CP.radarUnavailable = False
|
||||
|
||||
|
||||
def _initialize_radar(CI: CarInterfaceBase, CP: structs.CarParams, CP_SP: structs.CarParamsSP, params: Params = None) -> None:
|
||||
if params is None:
|
||||
params = Params()
|
||||
|
||||
# Hyundai Radar
|
||||
if CP.brand == 'hyundai':
|
||||
hyundai_radar = int(params.get("HyundaiRadar", encoding="utf8") or 0)
|
||||
if hyundai_radar == RadarType.LEAD_ONLY:
|
||||
CP_SP.flags |= HyundaiFlagsSP.RADAR_LEAD_ONLY.value
|
||||
if hyundai_radar == RadarType.FULL_RADAR:
|
||||
CP_SP.flags |= HyundaiFlagsSP.RADAR_FULL_RADAR.value
|
||||
|
||||
|
||||
def setup_interfaces(CI: CarInterfaceBase, params: Params = None) -> None:
|
||||
CP = CI.CP
|
||||
CP_SP = CI.CP_SP
|
||||
@@ -84,6 +97,7 @@ def setup_interfaces(CI: CarInterfaceBase, params: Params = None) -> None:
|
||||
_initialize_custom_longitudinal_tuning(CI, CP, CP_SP, params)
|
||||
_initialize_neural_network_lateral_control(CI, CP, CP_SP, params)
|
||||
_initialize_radar_tracks(CP, CP_SP, params)
|
||||
_initialize_radar(CI, CP, CP_SP, params)
|
||||
|
||||
|
||||
def _enable_radar_tracks(CP: structs.CarParams, CP_SP: structs.CarParamsSP, can_recv: CanRecvCallable,
|
||||
|
||||
@@ -46,6 +46,7 @@ def manager_init() -> None:
|
||||
("AutoLaneChangeBsmDelay", "0"),
|
||||
("DynamicExperimentalControl", "0"),
|
||||
("HyundaiLongitudinalTuning", "0"),
|
||||
("HyundaiRadar", "0"),
|
||||
("Mads", "1"),
|
||||
("MadsMainCruiseAllowed", "1"),
|
||||
("MadsSteeringMode", "0"),
|
||||
|
||||
Reference in New Issue
Block a user