add a lua binding for playing a sine wave

custom
jacqueline 11 months ago
parent 51bbb6a495
commit d948585b00
  1. 7
      src/tangara/lua/bridge.cpp
  2. 40
      src/tangara/lua/lua_testing.cpp
  3. 15
      src/tangara/lua/lua_testing.hpp

@ -21,6 +21,7 @@
#include "lua/lua_filesystem.hpp"
#include "lua/lua_queue.hpp"
#include "lua/lua_screen.hpp"
#include "lua/lua_testing.hpp"
#include "lua/lua_theme.hpp"
#include "lua/lua_version.hpp"
#include "lvgl.h"
@ -47,9 +48,8 @@ namespace lua {
static constexpr char kBridgeKey[] = "bridge";
static auto make_font_cb(const char* name,
int size,
int weight) -> const lv_font_t* {
static auto make_font_cb(const char* name, int size, int weight)
-> const lv_font_t* {
if (std::string{"fusion"} == name) {
if (size == 12) {
return &font_fusion_12;
@ -87,6 +87,7 @@ auto Bridge::installBaseModules(lua_State* L) -> void {
RegisterControlsModule(L);
RegisterDatabaseModule(L);
RegisterQueueModule(L);
RegisterTestingModule(L);
RegisterFileSystemModule(L);
RegisterVersionModule(L);
RegisterThemeModule(L);

@ -0,0 +1,40 @@
/*
* Copyright 2024 jacqueline <me@jacqueline.id.au>
*
* SPDX-License-Identifier: GPL-3.0-only
*/
#include "lua_testing.hpp"
#include "lauxlib.h"
#include "lua.h"
#include "audio/audio_events.hpp"
#include "events/event_queue.hpp"
namespace lua {
static auto testing_tone(lua_State* L) -> int {
auto freq = luaL_checkinteger(L, 1);
events::Audio().Dispatch(
audio::PlaySineWave{.frequency = static_cast<uint32_t>(freq)});
events::Audio().Dispatch(audio::TogglePlayPause{.set_to = true});
return 0;
}
static const struct luaL_Reg kTestingFuncs[] = {
{"tone", testing_tone},
{NULL, NULL},
};
static auto lua_testing(lua_State* state) -> int {
luaL_newlib(state, kTestingFuncs);
return 1;
}
auto RegisterTestingModule(lua_State* L) -> void {
luaL_requiref(L, "testing", lua_testing, false);
lua_pop(L, 1);
}
} // namespace lua

@ -0,0 +1,15 @@
/*
* Copyright 2024 jacqueline <me@jacqueline.id.au>
*
* SPDX-License-Identifier: GPL-3.0-only
*/
#pragma once
#include "lua.hpp"
namespace lua {
auto RegisterTestingModule(lua_State*) -> void;
} // namespace lua
Loading…
Cancel
Save