diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index b807906c7..658f95efb 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -218,6 +218,11 @@ static void luaPushCells(lua_State* L, TelemetrySensor & telemetrySensor, Teleme void luaGetValueAndPush(lua_State* L, int src) { + if(IS_FAI_FORBIDDEN(src)) { + lua_pushinteger(L, 0); + return; + } + getvalue_t value = getValue(src); // ignored for GPS, DATETIME, and CELLS if (src >= MIXSRC_FIRST_TELEM && src <= MIXSRC_LAST_TELEM) { @@ -587,6 +592,7 @@ or a name (string) of the source. @retval value current source value (number). Zero is returned for: * non-existing sources * for all telemetry source when the telemetry stream is not received + * far all non allowed sensors while FAI MODE is active @retval table GPS position is returned in a table: * `lat` (number) latitude, positive is North diff --git a/radio/src/mixer.cpp b/radio/src/mixer.cpp index 9eb1d6726..fbf37c0d4 100644 --- a/radio/src/mixer.cpp +++ b/radio/src/mixer.cpp @@ -448,6 +448,9 @@ getvalue_t getValue(mixsrc_t i) #if defined(CPUARM) else if (i <= MIXSRC_LAST_TELEM) { + if(IS_FAI_FORBIDDEN(i)) { + return 0; + } i -= MIXSRC_FIRST_TELEM; div_t qr = div(i, 3); TelemetryItem & telemetryItem = telemetryItems[qr.quot]; diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 9b8f2b22c..8a24314f8 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -231,7 +231,7 @@ #define IF_FAI_CHOICE(x) #endif -#define IS_FAI_FORBIDDEN(idx) (IS_FAI_ENABLED() && idx >= MIXSRC_FIRST_TELEM) +#define IS_FAI_FORBIDDEN(idx) (IS_FAI_ENABLED() && isFaiForbidden(idx)) #if defined(BLUETOOTH) #if defined(X9E) && !defined(USEHORUSBT) diff --git a/radio/src/telemetry/telemetry_sensors.cpp b/radio/src/telemetry/telemetry_sensors.cpp index 52c5ea02a..aa7cddb93 100644 --- a/radio/src/telemetry/telemetry_sensors.cpp +++ b/radio/src/telemetry/telemetry_sensors.cpp @@ -23,6 +23,16 @@ TelemetryItem telemetryItems[MAX_TELEMETRY_SENSORS]; uint8_t allowNewSensors; +bool isFaiForbidden(source_t idx) { + TelemetrySensor * sensor = &g_model.telemetrySensors[idx-MIXSRC_FIRST_TELEM]; + if (sensor->id == RSSI_ID) { + return false; + } + else { + return true; + } +} + // TODO in maths uint32_t getDistFromEarthAxis(int32_t latitude) { diff --git a/radio/src/telemetry/telemetry_sensors.h b/radio/src/telemetry/telemetry_sensors.h index 91ae90468..78e9e48ad 100644 --- a/radio/src/telemetry/telemetry_sensors.h +++ b/radio/src/telemetry/telemetry_sensors.h @@ -136,5 +136,6 @@ class TelemetryItem extern TelemetryItem telemetryItems[MAX_TELEMETRY_SENSORS]; extern uint8_t allowNewSensors; +bool isFaiForbidden(source_t idx); #endif // _TELEMETRY_SENSORS_H_