Lua telemetryPush function now added

This commit is contained in:
Bertrand Songis
2016-02-28 21:21:48 +01:00
parent fe901dabdf
commit 56fb01a958
4 changed files with 27 additions and 8 deletions
+21 -4
View File
@@ -328,15 +328,15 @@ bool luaFindFieldByName(const char * name, LuaField & field, unsigned int flags)
static int luaTelemetryPop(lua_State *L)
{
if (!luaTelemetryFifo) {
luaTelemetryFifo = new Fifo<LuaTelemetryValue, 16>();
if (!luaTelemetryFifo) {
if (!luaInputTelemetryFifo) {
luaInputTelemetryFifo = new Fifo<LuaTelemetryValue, 16>();
if (!luaInputTelemetryFifo) {
return 0;
}
}
LuaTelemetryValue value;
if (luaTelemetryFifo->pop(value)) {
if (luaInputTelemetryFifo->pop(value)) {
lua_pushnumber(L, value.id);
lua_pushunsigned(L, value.value);
return 2;
@@ -345,6 +345,22 @@ static int luaTelemetryPop(lua_State *L)
return 0;
}
static int luaTelemetryPush(lua_State *L)
{
if (!luaOutputTelemetryFifo) {
luaOutputTelemetryFifo = new Fifo<LuaTelemetryValue, 16>();
if (!luaOutputTelemetryFifo) {
return 0;
}
}
unsigned int id = luaL_checkunsigned(L, 1);
unsigned int value = luaL_checkunsigned(L, 2);
luaOutputTelemetryFifo->push((LuaTelemetryValue){ id, value });
return 0;
}
/*luadoc
@function getFieldInfo(name)
@@ -814,6 +830,7 @@ const luaL_Reg opentxLib[] = {
{ "GREY", luaGrey },
#endif
{ "telemetryPop", luaTelemetryPop },
{ "telemetryPush", luaTelemetryPush },
{ NULL, NULL } /* sentinel */
};
+2 -1
View File
@@ -667,5 +667,6 @@ NOINLINE uint8_t getRssiAlarmValue(uint8_t alarm)
}
#if defined(LUA)
Fifo<LuaTelemetryValue, 16> * luaTelemetryFifo = NULL;
Fifo<LuaTelemetryValue, 16> * luaInputTelemetryFifo = NULL;
Fifo<LuaTelemetryValue, 16> * luaOutputTelemetryFifo = NULL;
#endif
+2 -1
View File
@@ -561,7 +561,8 @@ struct LuaTelemetryValue
uint32_t value;
};
extern Fifo<LuaTelemetryValue, 16> * luaTelemetryFifo;
extern Fifo<LuaTelemetryValue, 16> * luaInputTelemetryFifo;
extern Fifo<LuaTelemetryValue, 16> * luaOutputTelemetryFifo;
#endif
#endif // _FRSKY_H_
+2 -2
View File
@@ -271,8 +271,8 @@ void processSportPacket(uint8_t * packet)
}
else if (id >= DIY_FIRST_ID && id <= DIY_LAST_ID) {
#if defined(LUA)
if (luaTelemetryFifo) {
luaTelemetryFifo->push((LuaTelemetryValue){(uint8_t)id, data});
if (luaInputTelemetryFifo) {
luaInputTelemetryFifo->push((LuaTelemetryValue){(uint8_t)id, data});
}
#endif
}