diff --git a/selfdrive/frogpilot/assets/other_images/bg.jpg b/selfdrive/frogpilot/assets/other_images/bg.jpg new file mode 100644 index 000000000..13c36a7e2 Binary files /dev/null and b/selfdrive/frogpilot/assets/other_images/bg.jpg differ diff --git a/selfdrive/frogpilot/controls/lib/frogpilot_functions.py b/selfdrive/frogpilot/controls/lib/frogpilot_functions.py new file mode 100644 index 000000000..36bb7d61c --- /dev/null +++ b/selfdrive/frogpilot/controls/lib/frogpilot_functions.py @@ -0,0 +1,69 @@ +from openpilot.common.params_pyx import Params, UnknownKeyName + +class FrogPilotFunctions: + @classmethod + def convert_params(cls, params, params_storage, params_tracking): + def convert_param(key, action_func): + try: + if params_storage.check_key(key): + if params_storage.get_bool(key): + action_func() + except UnknownKeyName: + pass + + def convert_param_mappings(param_mappings, remove_from, min_value=-1): + for key, (getter, setter) in param_mappings.items(): + try: + value = getter(key) + if value > min_value: + setter(key, value) + remove_from.remove(key) + except UnknownKeyName: + pass + + install_date = params.get("InstallDate") + if install_date and install_date.decode('utf-8').startswith("November 21, 2023"): + params.remove("InstallDate") + + version = 5 + + try: + if params_storage.check_key("ParamConversionVersion"): + if params_storage.get_int("ParamConversionVersion") == version: + print("Params already converted, moving on.") + return + print("Converting params...") + except UnknownKeyName: + pass + + def onroad_uploads(): + params.put("DeviceManagement", "True") + params.put("NoUploads", "True") + + convert_param("DisableOnroadUploads", onroad_uploads) + + param_mappings = { + "FrogPilotDrives": (params.get_int, params_tracking.put_int), + "FrogPilotKilometers": (params.get_float, params_tracking.put_float), + "FrogPilotMinutes": (params.get_float, params_tracking.put_float) + } + convert_param_mappings(param_mappings, params, 0) + + param_storage_mappings = { + "FrogPilotDrives": (params_storage.get_int, params_tracking.put_int), + "FrogPilotKilometers": (params_storage.get_float, params_tracking.put_float), + "FrogPilotMinutes": (params_storage.get_float, params_tracking.put_float) + } + convert_param_mappings(param_storage_mappings, params_storage, 0) + + params.remove("CarMake") + params.remove("CarModel") + params.remove("ForceFingerprint") + + print("Params successfully converted!") + params_storage.put_int("ParamConversionVersion", version) + + original_boot_logo_location = f'{BASEDIR}/selfdrive/frogpilot/assets/other_images/bg.jpg' + original_boot_logo_save_location = f'{BASEDIR}/selfdrive/frogpilot/assets/other_images/original_bg.jpg' + shutil.copy(original_boot_logo_location, original_boot_logo_save_location) + print("Successfully replaced original_bg.jpg with bg.jpg.") diff --git a/system/manager/manager.py b/system/manager/manager.py index 6d1b8d9c2..5117b0a90 100755 --- a/system/manager/manager.py +++ b/system/manager/manager.py @@ -18,20 +18,25 @@ from openpilot.system.athena.registration import register, UNREGISTERED_DONGLE_I from openpilot.common.swaglog import cloudlog, add_file_handler from openpilot.system.version import get_build_metadata, terms_version, training_version +from openpilot.selfdrive.frogpilot.controls.lib.frogpilot_functions import FrogPilotFunctions -def manager_init() -> None: +def manager_init(frogpilot_functions) -> None: save_bootlog() build_metadata = get_build_metadata() params = Params() + params_storage = Params("/persist/params") + params_tracking = Params("/persist/tracking") params.clear_all(ParamKeyType.CLEAR_ON_MANAGER_START) params.clear_all(ParamKeyType.CLEAR_ON_ONROAD_TRANSITION) params.clear_all(ParamKeyType.CLEAR_ON_OFFROAD_TRANSITION) if build_metadata.release_channel: params.clear_all(ParamKeyType.DEVELOPMENT_ONLY) + frogpilot_functions.convert_params(params, params_storage, params_tracking) + default_params: list[tuple[str, str | bytes]] = [ ("CompletedTrainingVersion", "0"), ("DisengageOnAccelerator", "0"), @@ -175,8 +180,8 @@ def manager_thread() -> None: break -def main() -> None: - manager_init() +def main(frogpilot_functions) -> None: + manager_init(frogpilot_functions) if os.getenv("PREPAREONLY") is not None: return @@ -207,7 +212,7 @@ if __name__ == "__main__": unblock_stdout() try: - main() + main(FrogPilotFunctions()) except KeyboardInterrupt: print("got CTRL-C, exiting") except Exception: