From 59eb020eb13a1371aac6d45f14d3fb25e1d154e1 Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 1 Jul 2014 18:06:37 +0200 Subject: [PATCH] getGeneralSettings(), lcd.getLastPos() and lcd.drawGauge() added --- radio/src/lua.cpp | 91 +++++++++++++++++++++++++++-------------------- 1 file changed, 53 insertions(+), 38 deletions(-) diff --git a/radio/src/lua.cpp b/radio/src/lua.cpp index 964e634f0..9d780340b 100644 --- a/radio/src/lua.cpp +++ b/radio/src/lua.cpp @@ -51,7 +51,8 @@ extern "C" { #define lua_registerint(L, n, i) (lua_pushinteger(L, (i)), lua_setglobal(L, (n))) #define lua_pushtablenil(L, k) (lua_pushstring(L, (k)), lua_pushnil(L), lua_settable(L, -3)) #define lua_pushtableboolean(L, k, v) (lua_pushstring(L, (k)), lua_pushboolean(L, (v)), lua_settable(L, -3)) -#define lua_pushtablenumber(L, k, v) (lua_pushstring(L, (k)), lua_pushinteger(L, (v)), lua_settable(L, -3)) +#define lua_pushtableinteger(L, k, v) (lua_pushstring(L, (k)), lua_pushinteger(L, (v)), lua_settable(L, -3)) +#define lua_pushtablenumber(L, k, v) (lua_pushstring(L, (k)), lua_pushnumber(L, (v)), lua_settable(L, -3)) #define lua_pushtablestring(L, k, v) { char tmp[sizeof(v)+1]; strncpy(tmp, (v), sizeof(v)); tmp[sizeof(v)] = '\0'; lua_pushstring(L, (k)); lua_pushstring(L, tmp); lua_settable(L, -3); } #define lua_pushtablezstring(L, k, v) { char tmp[sizeof(v)+1]; zchar2str(tmp, (v), sizeof(v)); lua_pushstring(L, (k)); lua_pushstring(L, tmp); lua_settable(L, -3); } #define lua_registerlib(L, name, tab) (luaL_newmetatable(L, name), luaL_setfuncs(L, tab, 0), lua_setglobal(L, name)) @@ -227,6 +228,14 @@ static int luaKillEvents(lua_State *L) return 0; } +static int luaGetGeneralSettings(lua_State *L) +{ + lua_newtable(L); + lua_pushtablenumber(L, "battMin", double(90+g_eeGeneral.vBatMin)/10); + lua_pushtablenumber(L, "battMax", double(120+g_eeGeneral.vBatMax)/10); + return 1; +} + static int luaLcdLock(lua_State *L) { lcd_locked = true; @@ -259,6 +268,12 @@ static int luaLcdDrawLine(lua_State *L) return 0; } +static int luaLcdGetLastPos(lua_State *L) +{ + lua_pushinteger(L, lcdLastPos); + return 1; +} + static int luaLcdDrawText(lua_State *L) { int x = luaL_checkinteger(L, 1); @@ -366,7 +381,6 @@ static int luaLcdDrawFilledRectangle(lua_State *L) return 0; } -#if 0 static int luaLcdDrawGauge(lua_State *L) { int x = luaL_checkinteger(L, 1); @@ -375,7 +389,7 @@ static int luaLcdDrawGauge(lua_State *L) int h = luaL_checkinteger(L, 4); int num = luaL_checkinteger(L, 5); int den = luaL_checkinteger(L, 6); - int flags = luaL_checkinteger(L, 7); + // int flags = luaL_checkinteger(L, 7); lcd_rect(x, y, w, h); uint8_t len = limit((uint8_t)1, uint8_t(w*num/den), uint8_t(w)); for (int i=1; iname); - lua_pushtablenumber(L, "source", expo->srcRaw); - lua_pushtablenumber(L, "weight", expo->weight); - lua_pushtablenumber(L, "offset", expo->offset); + lua_pushtableinteger(L, "source", expo->srcRaw); + lua_pushtableinteger(L, "weight", expo->weight); + lua_pushtableinteger(L, "offset", expo->offset); } else { lua_pushnil(L); @@ -699,11 +712,11 @@ static int luaModelGetMix(lua_State *L) MixData * mix = mixAddress(first+idx); lua_newtable(L); lua_pushtablezstring(L, "name", mix->name); - lua_pushtablenumber(L, "source", mix->srcRaw); - lua_pushtablenumber(L, "weight", mix->weight); - lua_pushtablenumber(L, "offset", mix->offset); - lua_pushtablenumber(L, "switch", mix->swtch); - lua_pushtablenumber(L, "multiplex", mix->mltpx); + lua_pushtableinteger(L, "source", mix->srcRaw); + lua_pushtableinteger(L, "weight", mix->weight); + lua_pushtableinteger(L, "offset", mix->offset); + lua_pushtableinteger(L, "switch", mix->swtch); + lua_pushtableinteger(L, "multiplex", mix->mltpx); } else { lua_pushnil(L); @@ -780,13 +793,13 @@ static int luaModelGetLogicalSwitch(lua_State *L) if (idx < NUM_LOGICAL_SWITCH) { LogicalSwitchData * sw = lswAddress(idx); lua_newtable(L); - lua_pushtablenumber(L, "func", sw->func); - lua_pushtablenumber(L, "v1", sw->v1); - lua_pushtablenumber(L, "v2", sw->v2); - lua_pushtablenumber(L, "v3", sw->v3); - lua_pushtablenumber(L, "and", sw->andsw); - lua_pushtablenumber(L, "delay", sw->delay); - lua_pushtablenumber(L, "duration", sw->duration); + lua_pushtableinteger(L, "func", sw->func); + lua_pushtableinteger(L, "v1", sw->v1); + lua_pushtableinteger(L, "v2", sw->v2); + lua_pushtableinteger(L, "v3", sw->v3); + lua_pushtableinteger(L, "and", sw->andsw); + lua_pushtableinteger(L, "delay", sw->delay); + lua_pushtableinteger(L, "duration", sw->duration); } else { lua_pushnil(L); @@ -838,17 +851,17 @@ static int luaModelGetCustomFunction(lua_State *L) if (idx < NUM_CFN) { CustomFnData * cfn = &g_model.funcSw[idx]; lua_newtable(L); - lua_pushtablenumber(L, "switch", CFN_SWITCH(cfn)); - lua_pushtablenumber(L, "func", CFN_FUNC(cfn)); + lua_pushtableinteger(L, "switch", CFN_SWITCH(cfn)); + lua_pushtableinteger(L, "func", CFN_FUNC(cfn)); if (CFN_FUNC(cfn) == FUNC_PLAY_TRACK || CFN_FUNC(cfn) == FUNC_BACKGND_MUSIC || CFN_FUNC(cfn) == FUNC_PLAY_SCRIPT) { lua_pushtablestring(L, "name", cfn->play.name); } else { - lua_pushtablenumber(L, "value", cfn->all.val); - lua_pushtablenumber(L, "mode", cfn->all.mode); - lua_pushtablenumber(L, "param", cfn->all.param); + lua_pushtableinteger(L, "value", cfn->all.val); + lua_pushtableinteger(L, "mode", cfn->all.mode); + lua_pushtableinteger(L, "param", cfn->all.param); } - lua_pushtablenumber(L, "active", CFN_ACTIVE(cfn)); + lua_pushtableinteger(L, "active", CFN_ACTIVE(cfn)); } else { lua_pushnil(L); @@ -902,14 +915,14 @@ static int luaModelGetOutput(lua_State *L) LimitData * limit = limitAddress(idx); lua_newtable(L); lua_pushtablezstring(L, "name", limit->name); - lua_pushtablenumber(L, "min", limit->min-1000); - lua_pushtablenumber(L, "max", limit->max+1000); - lua_pushtablenumber(L, "offset", limit->offset); - lua_pushtablenumber(L, "ppmCenter", limit->ppmCenter); - lua_pushtablenumber(L, "symetrical", limit->symetrical); - lua_pushtablenumber(L, "revert", limit->revert); + lua_pushtableinteger(L, "min", limit->min-1000); + lua_pushtableinteger(L, "max", limit->max+1000); + lua_pushtableinteger(L, "offset", limit->offset); + lua_pushtableinteger(L, "ppmCenter", limit->ppmCenter); + lua_pushtableinteger(L, "symetrical", limit->symetrical); + lua_pushtableinteger(L, "revert", limit->revert); if (limit->curve) - lua_pushtablenumber(L, "curve", limit->curve-1); + lua_pushtableinteger(L, "curve", limit->curve-1); else lua_pushtablenil(L, "curve"); } @@ -1131,11 +1144,12 @@ static const luaL_Reg modelLib[] = { static const luaL_Reg lcdLib[] = { { "lock", luaLcdLock }, { "clear", luaLcdClear }, + { "getLastPos", luaLcdGetLastPos }, { "drawPoint", luaLcdDrawPoint }, { "drawLine", luaLcdDrawLine }, { "drawRectangle", luaLcdDrawRectangle }, { "drawFilledRectangle", luaLcdDrawFilledRectangle }, - // { "drawGauge", luaLcdDrawGauge }, + { "drawGauge", luaLcdDrawGauge }, { "drawText", luaLcdDrawText }, { "drawTimer", luaLcdDrawTimer }, { "drawNumber", luaLcdDrawNumber }, @@ -1166,6 +1180,7 @@ void luaInit() // Push OpenTX functions lua_register(L, "getTime", luaGetTime); lua_register(L, "getVersion", luaGetVersion); + lua_register(L, "getGeneralSettings", luaGetGeneralSettings); lua_register(L, "getValue", luaGetValue); lua_register(L, "playFile", luaPlayFile); lua_register(L, "playNumber", luaPlayNumber);