diff --git a/radio/src/logs.cpp b/radio/src/logs.cpp index 3f79eb3a9..cf347ecae 100644 --- a/radio/src/logs.cpp +++ b/radio/src/logs.cpp @@ -200,13 +200,17 @@ void writeLogs() #if defined(FRSKY) #if defined(CPUARM) - f_printf(&g_oLogFile, "%d,%d,", frskyData.swr.value, frskyData.rssi[0].value); + f_printf(&g_oLogFile, "%d,%d,", frskyData.swr.raw, frskyData.rssi[0].raw); #else f_printf(&g_oLogFile, "%d,%d,%d,", frskyStreaming, frskyData.rssi[0].value, frskyData.rssi[1].value); #endif for (uint8_t i=0; ivalue = value; } else { - unsigned int sum = 0; + //calculate the average from values[], raw, value + unsigned int sum = values[0]; for (int i=0; ivalue = sum/TELEMETRY_AVERAGE_COUNT; + values[TELEMETRY_AVERAGE_COUNT-1] = raw; + sum += raw + value; + this->value = sum/(TELEMETRY_AVERAGE_COUNT+2); } + raw = value; #else if (this->value == 0) { this->value = value; diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index 163147a78..f6e12f56d 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -70,12 +70,13 @@ extern uint8_t telemetryState; #endif #if defined(CPUARM) -#define TELEMETRY_AVERAGE_COUNT 4 +#define TELEMETRY_AVERAGE_COUNT 2 //we actually average two more readings! class FrskyValueWithMin { public: - uint8_t value; - uint8_t min; + uint8_t value; //fitered value (average of last TELEMETRY_AVERAGE_COUNT+2 values) + uint8_t min; uint8_t values[TELEMETRY_AVERAGE_COUNT]; + uint8_t raw; //raw value (unfiltered) void set(uint8_t value); }; #else