diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-11-12 19:14:09 +1100 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-11-12 19:14:09 +1100 |
| commit | 8a0a167adbf3d9b6f8b6f16aaf20ca39ad5549de (patch) | |
| tree | 02b6cf23f591915747ec2994381854a79979c4a0 /src/lua/include | |
| parent | 8471046a95ab9e00f7d42b56dbbc9ce3e5b424b9 (diff) | |
| download | tangara-fw-8a0a167adbf3d9b6f8b6f16aaf20ca39ad5549de.tar.gz | |
Convert the main menu screen to lua lol
Diffstat (limited to 'src/lua/include')
| -rw-r--r-- | src/lua/include/bridge.hpp | 29 | ||||
| -rw-r--r-- | src/lua/include/lua_thread.hpp | 38 |
2 files changed, 67 insertions, 0 deletions
diff --git a/src/lua/include/bridge.hpp b/src/lua/include/bridge.hpp new file mode 100644 index 00000000..059d0604 --- /dev/null +++ b/src/lua/include/bridge.hpp @@ -0,0 +1,29 @@ +/* + * Copyright 2023 jacqueline <me@jacqueline.id.au> + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#pragma once + +#include <memory> +#include <string> + +#include "lua.hpp" +#include "lvgl.h" +#include "service_locator.hpp" + +namespace lua { + +class Bridge { + public: + Bridge(system_fsm::ServiceLocator&, lua_State& s); + + system_fsm::ServiceLocator& services() { return services_; } + + private: + system_fsm::ServiceLocator& services_; + lua_State& state_; +}; + +} // namespace lua diff --git a/src/lua/include/lua_thread.hpp b/src/lua/include/lua_thread.hpp new file mode 100644 index 00000000..381b1bdb --- /dev/null +++ b/src/lua/include/lua_thread.hpp @@ -0,0 +1,38 @@ +/* + * Copyright 2023 jacqueline <me@jacqueline.id.au> + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#pragma once + +#include <memory> +#include <string> + +#include "lua.hpp" +#include "lvgl.h" + +#include "bridge.hpp" +#include "service_locator.hpp" + +namespace lua { + +class Allocator; + +class LuaThread { + public: + static auto Start(system_fsm::ServiceLocator&, lv_obj_t* lvgl_root = nullptr) + -> LuaThread*; + ~LuaThread(); + + auto RunScript(const std::string& path) -> bool; + + private: + LuaThread(std::unique_ptr<Allocator>&, std::unique_ptr<Bridge>&, lua_State*); + + std::unique_ptr<Allocator> alloc_; + std::unique_ptr<Bridge> bridge_; + lua_State* state_; +}; + +} // namespace lua |
