From a315f6702bfa3528a43e87fa9e0bbce11093555a Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Wed, 9 Nov 2016 14:14:35 +0100 Subject: [PATCH] lua: allow telemetry buffer availability to be queried When crossfireTelemetryPush() or sportTelemetryPush() is called without arguments, it returns a boolean telling whether or not the output buffer is currently available. This simplifies the LUA in case SPORT or Crossfire is used as a transport for bigger requests (like MSP/SPORT). --- radio/src/lua/api_general.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index 7714db9f4..65d35d5f5 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -333,7 +333,10 @@ uint8_t getDataId(uint8_t physicalId) static int luaSportTelemetryPush(lua_State * L) { - if (isSportOutputBufferAvailable()) { + if (lua_gettop(L) == 0) { + lua_pushboolean(L, isSportOutputBufferAvailable()); + } + else if (isSportOutputBufferAvailable()) { SportTelemetryPacket packet; packet.physicalId = getDataId(luaL_checkunsigned(L, 1)); packet.primId = luaL_checkunsigned(L, 2); @@ -378,7 +381,10 @@ static int luaCrossfireTelemetryPop(lua_State * L) static int luaCrossfireTelemetryPush(lua_State * L) { - if (isCrossfireOutputBufferAvailable()) { + if (lua_gettop(L) == 0) { + lua_pushboolean(L, isCrossfireOutputBufferAvailable()); + } + else if (isCrossfireOutputBufferAvailable()) { uint8_t command = luaL_checkunsigned(L, 1); luaL_checktype(L, 2, LUA_TTABLE); uint8_t length = luaL_len(L, 2);