diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index fdb44737050..dde247954c4 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -1173,10 +1173,12 @@ When called without parameters, it will only return the status of the output buf @status current Introduced in 2.2.0, retval nil added in 2.3.4 */ -static int luaCrossfireTelemetryPush(lua_State * L) +static int luaCrossfireTelemetryPush(lua_State* L) { - bool external = (moduleState[EXTERNAL_MODULE].protocol == PROTOCOL_CHANNELS_CROSSFIRE); - bool internal = (moduleState[INTERNAL_MODULE].protocol == PROTOCOL_CHANNELS_CROSSFIRE); + bool external = + (moduleState[EXTERNAL_MODULE].protocol == PROTOCOL_CHANNELS_CROSSFIRE); + bool internal = + (moduleState[INTERNAL_MODULE].protocol == PROTOCOL_CHANNELS_CROSSFIRE); if (!internal && !external) { lua_pushnil(L); @@ -1185,27 +1187,51 @@ static int luaCrossfireTelemetryPush(lua_State * L) if (lua_gettop(L) == 0) { lua_pushboolean(L, outputTelemetryBuffer.isAvailable()); - } - else if (lua_gettop(L) > TELEMETRY_OUTPUT_BUFFER_SIZE ) { + } else if (lua_gettop(L) > TELEMETRY_OUTPUT_BUFFER_SIZE) { lua_pushboolean(L, false); return 1; - } - else if (outputTelemetryBuffer.isAvailable()) { + } else if (outputTelemetryBuffer.isAvailable()) { uint8_t command = luaL_checkunsigned(L, 1); luaL_checktype(L, 2, LUA_TTABLE); uint8_t length = luaL_len(L, 2); + outputTelemetryBuffer.pushByte(MODULE_ADDRESS); - outputTelemetryBuffer.pushByte(2 + length); // 1(COMMAND) + data length + 1(CRC) - outputTelemetryBuffer.pushByte(command); // COMMAND - for (int i=0; i