diff --git a/frogpilot/common/frogpilot_functions.py b/frogpilot/common/frogpilot_functions.py index 40b2d35fb..9ff95c62a 100644 --- a/frogpilot/common/frogpilot_functions.py +++ b/frogpilot/common/frogpilot_functions.py @@ -15,7 +15,7 @@ from openpilot.frogpilot.assets.theme_manager import ThemeManager from openpilot.frogpilot.common.frogpilot_backups import backup_frogpilot from openpilot.frogpilot.common.frogpilot_utilities import is_FrogsGoMoo, run_cmd from openpilot.frogpilot.common.frogpilot_variables import ( - ERROR_LOGS_PATH, FROGS_GO_MOO_PATH, THEME_SAVE_PATH, + ERROR_LOGS_PATH, FROGS_GO_MOO_PATH, HD_LOGS_PATH, THEME_SAVE_PATH, FrogPilotVariables, get_frogpilot_toggles ) @@ -39,6 +39,7 @@ def frogpilot_boot_functions(build_metadata, params): def install_frogpilot(build_metadata, params): paths = [ ERROR_LOGS_PATH, + HD_LOGS_PATH, THEME_SAVE_PATH ] for path in paths: diff --git a/frogpilot/common/frogpilot_variables.py b/frogpilot/common/frogpilot_variables.py index 7fde0981b..a19723a61 100644 --- a/frogpilot/common/frogpilot_variables.py +++ b/frogpilot/common/frogpilot_variables.py @@ -64,6 +64,9 @@ TOGGLE_BACKUPS = Path("/data/toggle_backups") FROGS_GO_MOO_PATH = Path("/persist/frogsgomoo.py") +HD_LOGS_PATH = Path("/data/media/0/realdata_HD") +HD_PATH = Path("/cache/use_HD") + MAPD_PATH = Path("/data/media/0/osm/mapd") MAPS_PATH = Path("/data/media/0/osm/offline") @@ -204,6 +207,24 @@ class FrogPilotVariables: self.frogs_go_moo = FROGS_GO_MOO_PATH.is_file() toggle.block_user = (self.development_branch or branch == "MAKE-PRS-HERE" or self.vetting_branch) and not self.frogs_go_moo + self.tuning_level = self.params.get("TuningLevel") if self.params.get_bool("TuningLevelConfirmed") else TUNING_LEVELS["ADVANCED"] + + device_management = self.get_value("DeviceManagement") + + toggle.use_higher_bitrate = device_management + toggle.use_higher_bitrate &= self.get_value("HigherBitrate") + toggle.use_higher_bitrate &= self.get_value("NoUploads") + toggle.use_higher_bitrate &= not self.get_value("DisableOnroadUploads") + toggle.use_higher_bitrate &= not self.vetting_branch + toggle.use_higher_bitrate |= self.development_branch + + if not HD_PATH.is_file() and toggle.use_higher_bitrate: + HD_PATH.touch() + HARDWARE.reboot() + elif HD_PATH.is_file() and not toggle.use_higher_bitrate: + HD_PATH.unlink() + HARDWARE.reboot() + stock_colors_json = (STOCK_THEME_PATH / "colors/colors.json") self.stock_colors = json.loads(stock_colors_json.read_text()) if stock_colors_json.is_file() else {} diff --git a/system/hardware/hw.h b/system/hardware/hw.h index f837a4fa5..865a52612 100644 --- a/system/hardware/hw.h +++ b/system/hardware/hw.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include "system/hardware/base.h" @@ -32,6 +33,9 @@ namespace Path { } // FrogPilot variables + if (std::filesystem::exists("/cache/use_HD")) { + return "/data/media/0/realdata_HD/"; + } return "/data/media/0/realdata"; } diff --git a/system/hardware/hw.py b/system/hardware/hw.py index dc36dc047..f962de20c 100644 --- a/system/hardware/hw.py +++ b/system/hardware/hw.py @@ -17,6 +17,8 @@ class Paths: return os.environ['LOG_ROOT'] elif PC: return str(Path(Paths.comma_home()) / "media" / "0" / "realdata") + elif Path("/cache/use_HD").is_file(): + return '/data/media/0/realdata_HD/' else: return '/data/media/0/realdata/' diff --git a/system/loggerd/loggerd.h b/system/loggerd/loggerd.h index 8e3a74d2d..0949aae68 100644 --- a/system/loggerd/loggerd.h +++ b/system/loggerd/loggerd.h @@ -36,9 +36,17 @@ struct EncoderSettings { static EncoderSettings MainEncoderSettings(int in_width) { if (in_width <= 1344) { - return EncoderSettings{.encode_type = MAIN_ENCODE_TYPE, .bitrate = 5'000'000, .gop_size = 20}; + return EncoderSettings{ + .encode_type = MAIN_ENCODE_TYPE, + .bitrate = std::filesystem::exists("/cache/use_HD") ? 10'000'000 : 5'000'000, + .gop_size = 20 + }; } else { - return EncoderSettings{.encode_type = MAIN_ENCODE_TYPE, .bitrate = 10'000'000, .gop_size = 30}; + return EncoderSettings{ + .encode_type = MAIN_ENCODE_TYPE, + .bitrate = std::filesystem::exists("/cache/use_HD") ? 20'000'000 : 10'000'000, + .gop_size = 30 + }; } }