From 57cb96cade2aff4696d94afe885c59db9416acc2 Mon Sep 17 00:00:00 2001 From: FrogAi <91348155+FrogAi@users.noreply.github.com> Date: Fri, 15 Mar 2024 18:53:21 -0700 Subject: [PATCH] Fired the babysitter Added toggles to dsiable the "System Overheated" alert and all logging. --- common/params.cc | 4 +++ .../offroad/icon_wifi_uploading_disabled.svg | 6 ++++ .../assets/toggle_icons/icon_babysitter.png | Bin 0 -> 14357 bytes selfdrive/frogpilot/ui/control_settings.cc | 23 +++++++++++++ selfdrive/frogpilot/ui/control_settings.h | 2 +- selfdrive/manager/manager.py | 2 +- selfdrive/manager/process_config.py | 21 +++++++----- selfdrive/thermald/thermald.py | 3 ++ selfdrive/ui/qt/widgets/wifi.cc | 31 +++++++++++++++++- 9 files changed, 81 insertions(+), 11 deletions(-) create mode 100644 selfdrive/assets/offroad/icon_wifi_uploading_disabled.svg create mode 100644 selfdrive/frogpilot/assets/toggle_icons/icon_babysitter.png diff --git a/common/params.cc b/common/params.cc index 35e9ea7..7be23cc 100644 --- a/common/params.cc +++ b/common/params.cc @@ -259,6 +259,7 @@ std::unordered_map keys = { {"ExperimentalModeViaDistance", PERSISTENT}, {"ExperimentalModeViaLKAS", PERSISTENT}, {"ExperimentalModeViaScreen", PERSISTENT}, + {"FireTheBabysitter", PERSISTENT}, {"FrogPilotTogglesUpdated", PERSISTENT}, {"FrogsGoMoo", PERSISTENT}, {"GoatScream", PERSISTENT}, @@ -268,6 +269,9 @@ std::unordered_map keys = { {"LongitudinalTune", PERSISTENT}, {"ManualUpdateInitiated", CLEAR_ON_MANAGER_START}, {"ModelUI", PERSISTENT}, + {"MuteOverheated", PERSISTENT}, + {"NoLogging", PERSISTENT}, + {"NoUploads", PERSISTENT}, {"PathEdgeWidth", PERSISTENT}, {"PathWidth", PERSISTENT}, {"PromptVolume", PERSISTENT}, diff --git a/selfdrive/assets/offroad/icon_wifi_uploading_disabled.svg b/selfdrive/assets/offroad/icon_wifi_uploading_disabled.svg new file mode 100644 index 0000000..1560525 --- /dev/null +++ b/selfdrive/assets/offroad/icon_wifi_uploading_disabled.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/selfdrive/frogpilot/assets/toggle_icons/icon_babysitter.png b/selfdrive/frogpilot/assets/toggle_icons/icon_babysitter.png new file mode 100644 index 0000000000000000000000000000000000000000..9789aebfef2aa2395064561be827dcd1693be5dd GIT binary patch literal 14357 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.find(key.c_str()) != fireTheBabysitterKeys.end()); + } + }); + toggle = fireTheBabysitterToggle; + } else if (param == "LateralTune") { FrogPilotParamManageControl *lateralTuneToggle = new FrogPilotParamManageControl(param, title, desc, icon, this); QObject::connect(lateralTuneToggle, &FrogPilotParamManageControl::manageButtonClicked, this, [this]() { @@ -230,6 +245,14 @@ FrogPilotControlsPanel::FrogPilotControlsPanel(SettingsWindow *parent) : FrogPil }); } + QObject::connect(toggles["MuteOverheated"], &ToggleControl::toggleFlipped, [this]() { + if (params.getBool("MuteOverheated")) { + FrogPilotConfirmationDialog::toggleAlert( + "WARNING: This MAY cause premature wear or damage by running the device over comma's recommended temperature limits!", + "I understand the risks.", this); + } + }); + std::set rebootKeys = {"AlwaysOnLateral"}; for (const std::string &key : rebootKeys) { QObject::connect(toggles[key], &ToggleControl::toggleFlipped, [this, key]() { diff --git a/selfdrive/frogpilot/ui/control_settings.h b/selfdrive/frogpilot/ui/control_settings.h index 68899b1..300dbeb 100644 --- a/selfdrive/frogpilot/ui/control_settings.h +++ b/selfdrive/frogpilot/ui/control_settings.h @@ -37,7 +37,7 @@ private: std::set conditionalExperimentalKeys = {"CECurves", "CECurvesLead", "CESlowerLead", "CENavigation", "CEStopLights", "CESignal"}; std::set experimentalModeActivationKeys = {"ExperimentalModeViaDistance", "ExperimentalModeViaLKAS", "ExperimentalModeViaScreen"}; - std::set fireTheBabysitterKeys = {}; + std::set fireTheBabysitterKeys = {"NoLogging", "MuteOverheated", "NoUploads"}; std::set laneChangeKeys = {}; std::set lateralTuneKeys = {}; std::set longitudinalTuneKeys = {"AccelerationProfile", "DecelerationProfile", "AggressiveAcceleration"}; diff --git a/selfdrive/manager/manager.py b/selfdrive/manager/manager.py index f9621f7..29ecd65 100644 --- a/selfdrive/manager/manager.py +++ b/selfdrive/manager/manager.py @@ -334,7 +334,7 @@ def manager_cleanup() -> None: def update_frogpilot_params(params, params_memory): - keys = ["DisableOnroadUploads"] + keys = ["DisableOnroadUploads", "FireTheBabysitter", "NoLogging", "NoUploads"] for key in keys: params_memory.put_bool(key, params.get_bool(key)) diff --git a/selfdrive/manager/process_config.py b/selfdrive/manager/process_config.py index 9996349..3eff5bf 100644 --- a/selfdrive/manager/process_config.py +++ b/selfdrive/manager/process_config.py @@ -43,23 +43,28 @@ def only_offroad(started, params, params_memory, CP: car.CarParams) -> bool: # FrogPilot functions def allow_uploads(started, params, params_memory, CP: car.CarParams) -> bool: + allow_uploads = not (params_memory.get_bool("FireTheBabysitter") and params_memory.get_bool("NoUploads")) at_home = not started or not params_memory.get_bool("DisableOnroadUploads") - return at_home + return allow_uploads and at_home + +def allow_logging(started, params, params_memory, CP: car.CarParams) -> bool: + allow_logging = not (params_memory.get_bool("FireTheBabysitter") and params_memory.get_bool("NoLogging")) + return allow_logging and logging(started, params, params_memory, CP) procs = [ DaemonProcess("manage_athenad", "selfdrive.athena.manage_athenad", "AthenadPid"), NativeProcess("camerad", "system/camerad", ["./camerad"], driverview), - NativeProcess("logcatd", "system/logcatd", ["./logcatd"], only_onroad), - NativeProcess("proclogd", "system/proclogd", ["./proclogd"], only_onroad), - PythonProcess("logmessaged", "system.logmessaged", always_run), + NativeProcess("logcatd", "system/logcatd", ["./logcatd"], allow_logging), + NativeProcess("proclogd", "system/proclogd", ["./proclogd"], allow_logging), + PythonProcess("logmessaged", "system.logmessaged", allow_logging), PythonProcess("micd", "system.micd", iscar), PythonProcess("timed", "system.timed", always_run, enabled=not PC), PythonProcess("dmonitoringmodeld", "selfdrive.modeld.dmonitoringmodeld", driverview, enabled=(not PC or WEBCAM)), - NativeProcess("encoderd", "system/loggerd", ["./encoderd"], only_onroad), + NativeProcess("encoderd", "system/loggerd", ["./encoderd"], allow_logging), NativeProcess("stream_encoderd", "system/loggerd", ["./encoderd", "--stream"], notcar), - NativeProcess("loggerd", "system/loggerd", ["./loggerd"], logging), + NativeProcess("loggerd", "system/loggerd", ["./loggerd"], allow_logging), NativeProcess("modeld", "selfdrive/modeld", ["./modeld"], only_onroad), NativeProcess("mapsd", "selfdrive/navd", ["./mapsd"], only_onroad), PythonProcess("navmodeld", "selfdrive.modeld.navmodeld", only_onroad), @@ -82,10 +87,10 @@ procs = [ PythonProcess("plannerd", "selfdrive.controls.plannerd", only_onroad), PythonProcess("radard", "selfdrive.controls.radard", only_onroad), PythonProcess("thermald", "selfdrive.thermald.thermald", always_run), - PythonProcess("tombstoned", "selfdrive.tombstoned", always_run, enabled=not PC), + PythonProcess("tombstoned", "selfdrive.tombstoned", allow_logging, enabled=not PC), PythonProcess("updated", "selfdrive.updated", only_offroad, enabled=not PC), PythonProcess("uploader", "system.loggerd.uploader", allow_uploads), - PythonProcess("statsd", "selfdrive.statsd", always_run), + PythonProcess("statsd", "selfdrive.statsd", allow_logging), # debug procs NativeProcess("bridge", "cereal/messaging", ["./bridge"], notcar), diff --git a/selfdrive/thermald/thermald.py b/selfdrive/thermald/thermald.py index 33ef4e2..93b7a78 100755 --- a/selfdrive/thermald/thermald.py +++ b/selfdrive/thermald/thermald.py @@ -297,6 +297,9 @@ def thermald_thread(end_event, hw_queue) -> None: elif current_band.max_temp is not None and all_comp_temp > current_band.max_temp: thermal_status = list(THERMAL_BANDS.keys())[band_idx + 1] + if params.get_bool("FireTheBabysitter") and params.get_bool("MuteOverheated"): + thermal_status = ThermalStatus.green + # **** starting logic **** startup_conditions["up_to_date"] = params.get("Offroad_ConnectivityNeeded") is None or params.get_bool("DisableUpdates") or params.get_bool("SnoozeUpdate") diff --git a/selfdrive/ui/qt/widgets/wifi.cc b/selfdrive/ui/qt/widgets/wifi.cc index 9c5289a..95beab4 100644 --- a/selfdrive/ui/qt/widgets/wifi.cc +++ b/selfdrive/ui/qt/widgets/wifi.cc @@ -81,6 +81,34 @@ WiFiPromptWidget::WiFiPromptWidget(QWidget *parent) : QFrame(parent) { } stack->addWidget(uploading); + QWidget *notUploading = new QWidget; + QVBoxLayout *not_uploading_layout = new QVBoxLayout(notUploading); + not_uploading_layout->setContentsMargins(64, 56, 64, 56); + not_uploading_layout->setSpacing(36); + { + QHBoxLayout *title_layout = new QHBoxLayout; + { + QLabel *title = new QLabel(tr("Uploading disabled")); + title->setStyleSheet("font-size: 64px; font-weight: 600;"); + title->setWordWrap(true); + title->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum); + title_layout->addWidget(title); + title_layout->addStretch(); + + QLabel *icon = new QLabel; + QPixmap pixmap("../assets/offroad/icon_wifi_uploading_disabled.svg"); + icon->setPixmap(pixmap.scaledToWidth(120, Qt::SmoothTransformation)); + title_layout->addWidget(icon); + } + not_uploading_layout->addLayout(title_layout); + + QLabel *desc = new QLabel(tr("Training data wont be pulled periodically until you disable the 'Disable Uploading' toggle")); + desc->setStyleSheet("font-size: 48px; font-weight: 400;"); + desc->setWordWrap(true); + not_uploading_layout->addWidget(desc); + } + stack->addWidget(notUploading); + setStyleSheet(R"( WiFiPromptWidget { background-color: #333333; @@ -99,5 +127,6 @@ void WiFiPromptWidget::updateState(const UIState &s) { auto network_type = sm["deviceState"].getDeviceState().getNetworkType(); auto uploading = network_type == cereal::DeviceState::NetworkType::WIFI || network_type == cereal::DeviceState::NetworkType::ETHERNET; - stack->setCurrentIndex(uploading ? 1 : 0); + auto uploading_disabled = params.getBool("NoUploads"); + stack->setCurrentIndex(uploading_disabled ? 2 : uploading ? 1 : 0); }