diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index 01762831b..e16bb5216 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -299,7 +299,7 @@ bool luaFindFieldByName(const char * name, LuaField & field, unsigned int flags) static int luaSportTelemetryPop(lua_State * L) { if (!luaInputTelemetryFifo) { - luaInputTelemetryFifo = new Fifo(); + luaInputTelemetryFifo = new Fifo(); if (!luaInputTelemetryFifo) { return 0; } @@ -346,7 +346,7 @@ static int luaSportTelemetryPush(lua_State * L) static int luaCrossfireTelemetryPop(lua_State * L) { if (!luaInputTelemetryFifo) { - luaInputTelemetryFifo = new Fifo(); + luaInputTelemetryFifo = new Fifo(); if (!luaInputTelemetryFifo) { return 0; } @@ -361,7 +361,6 @@ static int luaCrossfireTelemetryPop(lua_State * L) lua_pushinteger(L, packet.crossfire.data[i]); lua_settable(L, -3); } - lua_settable(L, -3); return 2; } diff --git a/radio/src/targets/taranis/board_taranis.h b/radio/src/targets/taranis/board_taranis.h index 931c27633..451ae28fc 100644 --- a/radio/src/targets/taranis/board_taranis.h +++ b/radio/src/targets/taranis/board_taranis.h @@ -401,7 +401,7 @@ void checkTrainerSettings(void); #if defined(__cplusplus) #include "fifo.h" #include "dmafifo.h" -extern Fifo telemetryFifo; +extern Fifo telemetryFifo; extern DMAFifo<32> serial2RxFifo; extern Fifo sbusFifo; #endif diff --git a/radio/src/targets/taranis/telemetry_driver.cpp b/radio/src/targets/taranis/telemetry_driver.cpp index 5f830376c..ddb130bb9 100644 --- a/radio/src/targets/taranis/telemetry_driver.cpp +++ b/radio/src/targets/taranis/telemetry_driver.cpp @@ -20,7 +20,7 @@ #include "opentx.h" -Fifo telemetryFifo; +Fifo telemetryFifo; uint32_t telemetryErrors = 0; void telemetryPortInit(uint32_t baudrate) diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index 1041570e9..d610f0548 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -509,19 +509,22 @@ struct LuaTelemetryPacket } } sport; +#if defined(CROSSFIRE) struct { uint8_t command; uint8_t length; - uint8_t data[8]; + uint8_t data[32]; void clear() { command = 0x00; } } crossfire; +#endif }; }; -extern Fifo * luaInputTelemetryFifo; +#define LUA_TELEMETRY_FIFO_SIZE 8 +extern Fifo * luaInputTelemetryFifo; extern LuaTelemetryPacket luaOutputTelemetryPacket; void sportSendLuaPacket(LuaTelemetryPacket & packet); #endif diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 054a0c87f..fd23e30df 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -460,6 +460,6 @@ NOINLINE uint8_t getRssiAlarmValue(uint8_t alarm) } #if defined(LUA) -Fifo * luaInputTelemetryFifo = NULL; +Fifo * luaInputTelemetryFifo = NULL; LuaTelemetryPacket luaOutputTelemetryPacket; #endif diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index dcb9ddc8b..043055b24 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -60,7 +60,13 @@ extern uint8_t telemetryState; #endif #define TELEMETRY_TIMEOUT10ms 100 // 1 second + +#if defined(CROSSFIRE) +#define TELEMETRY_RX_PACKET_SIZE 40 +#else #define TELEMETRY_RX_PACKET_SIZE 19 // 9 bytes (full packet), worst case 18 bytes with byte-stuffing (+1) +#endif + extern uint8_t telemetryRxBuffer[TELEMETRY_RX_PACKET_SIZE]; extern uint8_t telemetryRxBufferCount;