Write settings to nvs when changing from the setting screen

Otherwise, settings may not actually be saved if the device crashes/
reboots unexpectedly.

Fixes #148
custom
Clayton Craft 4 months ago committed by cooljqln
parent 92908533c4
commit ff87c92175
  1. 4
      lua/settings.lua
  2. 9
      luals-stubs/nvs.lua
  3. 2
      src/tangara/lua/bridge.cpp
  4. 39
      src/tangara/lua/lua_nvs.cpp
  5. 15
      src/tangara/lua/lua_nvs.hpp

@ -13,6 +13,7 @@ local usb = require("usb")
local font = require("font")
local main_menu = require("main_menu")
local img = require("images")
local nvs = require("nvs")
local settings = {}
@ -33,6 +34,9 @@ local SettingsScreen = widgets.MenuScreen:new {
pad_left = 4,
pad_right = 4,
}
end,
on_hide = function(self)
nvs.write();
end
}

@ -0,0 +1,9 @@
--- @meta
--- @class nvs
local nvs = {}
--- Saves current nvs
function nvs.write() end
return nvs

@ -25,6 +25,7 @@
#include "lua/lua_database.hpp"
#include "lua/lua_filesystem.hpp"
#include "lua/lua_font.hpp"
#include "lua/lua_nvs.hpp"
#include "lua/lua_queue.hpp"
#include "lua/lua_screen.hpp"
#include "lua/lua_testing.hpp"
@ -84,6 +85,7 @@ auto Bridge::installBaseModules(lua_State* L) -> void {
RegisterVersionModule(L);
RegisterThemeModule(L);
RegisterScreenModule(L);
RegisterNvsModule(L);
}
auto Bridge::installLvgl(lua_State* L) -> void {

@ -0,0 +1,39 @@
/*
* Copyright 2024 Clayton Craft <clayton@craftyguy.net>
*
* SPDX-License-Identifier: GPL-3.0-only
*/
#include "lua/lua_version.hpp"
#include "lua.hpp"
#include "lua/bridge.hpp"
#include "lua.h"
#include "lua/lua_thread.hpp"
namespace lua {
[[maybe_unused]] static constexpr char kTag[] = "lua_nvs";
static auto write(lua_State* L) -> int {
Bridge* instance = Bridge::Get(L);
instance->services().nvs().Write();
return 1;
}
static const struct luaL_Reg kNvsFuncs[] = {{"write", write},
{NULL, NULL}};
static auto lua_nvs(lua_State* L) -> int {
luaL_newlib(L, kNvsFuncs);
return 1;
}
auto RegisterNvsModule(lua_State* L) -> void {
luaL_requiref(L, "nvs", lua_nvs, true);
lua_pop(L, 1);
}
} // namespace lua

@ -0,0 +1,15 @@
/*
* Copyright 2024 Clayton Craft <clayton@craftyguy.net>
*
* SPDX-License-Identifier: GPL-3.0-only
*/
#pragma once
#include "lua.hpp"
namespace lua {
auto RegisterNvsModule(lua_State*) -> void;
} // namespace lua
Loading…
Cancel
Save