refactor(api)!: one namespace per feature, screen split out
Namespaces were shared across features: `settings` was written by core, the
panel and touch, and `input` by touch and buttons. That made "does this
firmware implement the whole feature?" a question no pointer could answer.
Each namespace now belongs to exactly one feature or to core, so a feature is
a provider pointer and the compiler validates completeness:
gui, node -> screen, tree, under the screen feature
settings -> screen (rotation, theme), sys (timezone),
touch (calibration)
input -> touch, buttons
Runtime::open() no longer requires a GuiProvider; a firmware without one runs
with no screen/tree globals and reports sys.hasFeature("screen") false.
Rotation is one value again: GuiProvider::setRotation applies and persists, so
an app rotating the panel transiently puts the old value back itself.
This commit is contained in:
@@ -32,18 +32,18 @@ int wasReleased(lua_State* state) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// @lua-augment input InputLib
|
||||
// @lua-module buttons ButtonsLib
|
||||
// @lua-preamble ---@alias Button "up"|"down"|"left"|"right"|"confirm"|"back"
|
||||
// @lua-preamble
|
||||
// @lua-preamble -- Roles, not physical buttons: a device maps whatever hardware
|
||||
// it has onto them, and
|
||||
// @lua-preamble -- up/down/left/right are the directions node.moveFocus already
|
||||
// @lua-preamble -- up/down/left/right are the directions tree.moveFocus already
|
||||
// takes.
|
||||
const luaL_Reg INPUT_FUNCTIONS[] = {
|
||||
const luaL_Reg FUNCTIONS[] = {
|
||||
// ---Returns the roles this device reports, so an app can label only the
|
||||
// actions it has.
|
||||
// @return Button[]
|
||||
{"getButtons", getButtons},
|
||||
{"getAll", getButtons},
|
||||
// ---Whether any button is held.
|
||||
// @return boolean
|
||||
{"isAnyPressed", isAnyPressed},
|
||||
@@ -65,7 +65,8 @@ const luaL_Reg INPUT_FUNCTIONS[] = {
|
||||
} // namespace
|
||||
|
||||
void registerButtons(lua_State* state) {
|
||||
augmentGlobal(state, "input", INPUT_FUNCTIONS);
|
||||
luaL_newlib(state, FUNCTIONS);
|
||||
lua_setglobal(state, "buttons");
|
||||
}
|
||||
|
||||
} // namespace bindings
|
||||
|
||||
Reference in New Issue
Block a user