diff --git a/common/params.cc b/common/params.cc index e0e02a6..2a4374e 100644 --- a/common/params.cc +++ b/common/params.cc @@ -244,6 +244,7 @@ std::unordered_map keys = { {"CustomSounds", PERSISTENT}, {"CustomTheme", PERSISTENT}, {"DeviceShutdown", PERSISTENT}, + {"DisableOnroadUploads", PERSISTENT}, {"FrogPilotTogglesUpdated", PERSISTENT}, {"GasRegenCmd", PERSISTENT}, {"GoatScream", PERSISTENT}, diff --git a/selfdrive/manager/process_config.py b/selfdrive/manager/process_config.py index 41a59cf..738fff1 100644 --- a/selfdrive/manager/process_config.py +++ b/selfdrive/manager/process_config.py @@ -1,10 +1,12 @@ import os -from cereal import car +from cereal import car, log from openpilot.common.params import Params -from openpilot.system.hardware import PC, TICI +from openpilot.system.hardware import HARDWARE, PC, TICI from openpilot.selfdrive.manager.process import PythonProcess, NativeProcess, DaemonProcess +WIFI = log.DeviceState.NetworkType.wifi + WEBCAM = os.getenv("USE_WEBCAM") is not None def driverview(started: bool, params: Params, CP: car.CarParams) -> bool: @@ -42,6 +44,9 @@ def only_offroad(started, params, CP: car.CarParams) -> bool: return not started # FrogPilot functions +def allow_uploads(started, params, CP: car.CarParams) -> bool: + wifi_connected = HARDWARE.get_network_type() == WIFI and not started + return wifi_connected if params.get_bool("DisableOnroadUploads") else True procs = [ DaemonProcess("manage_athenad", "selfdrive.athena.manage_athenad", "AthenadPid"), @@ -81,7 +86,7 @@ procs = [ PythonProcess("thermald", "selfdrive.thermald.thermald", always_run), PythonProcess("tombstoned", "selfdrive.tombstoned", always_run, enabled=not PC), PythonProcess("updated", "selfdrive.updated", only_offroad, enabled=not PC), - PythonProcess("uploader", "system.loggerd.uploader", always_run), + PythonProcess("uploader", "system.loggerd.uploader", allow_uploads), PythonProcess("statsd", "selfdrive.statsd", always_run), # debug procs diff --git a/selfdrive/ui/qt/network/networking.cc b/selfdrive/ui/qt/network/networking.cc index 5354a01..729708e 100644 --- a/selfdrive/ui/qt/network/networking.cc +++ b/selfdrive/ui/qt/network/networking.cc @@ -201,6 +201,14 @@ AdvancedNetworking::AdvancedNetworking(QWidget* parent, WifiManager* wifi): QWid }); list->addItem(hiddenNetworkButton); + // Disable onroad uploads toggle + const bool disableOnroadUploads = params.getBool("DisableOnroadUploads"); + disableOnroadUploadsToggle = new ToggleControl(tr("Disable Onroad Uploads"), tr("Prevent large data uploads when onroad."), "", disableOnroadUploads); + QObject::connect(disableOnroadUploadsToggle, &ToggleControl::toggleFlipped, [=](bool state) { + params.putBool("DisableOnroadUploads", state); + }); + list->addItem(disableOnroadUploadsToggle); + // Set initial config wifi->updateGsmSettings(roamingEnabled, QString::fromStdString(params.get("GsmApn")), metered); diff --git a/selfdrive/ui/qt/network/networking.h b/selfdrive/ui/qt/network/networking.h index 9b6af00..3a4dff9 100644 --- a/selfdrive/ui/qt/network/networking.h +++ b/selfdrive/ui/qt/network/networking.h @@ -67,6 +67,9 @@ private: WifiManager* wifi = nullptr; Params params; + // FrogPilot variables + ToggleControl *disableOnroadUploadsToggle; + signals: void backPress(); void requestWifiScreen();