diff --git a/python_payload/st3m/settings.py b/python_payload/st3m/settings.py index 4877b31bc2e444b59011ef453a8fb18afb02c48a..65334a99a3b6e7ee7d19e75ae5cee7fb2583b500 100644 --- a/python_payload/st3m/settings.py +++ b/python_payload/st3m/settings.py @@ -320,13 +320,25 @@ def load_all() -> None: setting.load(data) +def _update(d: Dict[str, Any], u: Dict[str, Any]) -> Dict[str, Any]: + """ + Recursive update dictionary. + """ + for k, v in u.items(): + if type(v) == type({}): + d[k] = _update(d.get(k, {}), v) + else: + d[k] = v + return d + + def save_all() -> None: """ Save all settings to flash. """ - res = {} + res: Dict[str, Any] = {} for setting in all_settings: - res.update(setting.save()) + res = _update(res, setting.save()) try: with open("/flash/settings.json", "w") as f: json.dump(res, f)