True diversity rssi update on both radio (#2143)
commit8c35080956557041dc59f4c8994ed31678cabbd2
authorSunjun Kim <SunjunKim@users.noreply.github.com>
Wed, 19 Apr 2023 21:33:37 +0000 (20 06:33 +0900)
committerGitHub <noreply@github.com>
Wed, 19 Apr 2023 21:33:37 +0000 (20 07:33 +1000)
treea16cbff2579d770d7081a1ee02c636f4ba964946
parent4664dcd2452697bc6b97ec681d5839516948a3b2
True diversity rssi update on both radio (#2143)

* TD RSSI update first working draft

* use correct dio states

* check dio state only if it's a dual radio rx

* Send telemetry with stronger antenna & more debug stats

* add arduino header for github test

* check IrqState instead of digitalRead dios (+FLRC hw crc check)

* add cstdint for git testing

* Removing common.h from SX1280 lib

* Second packet sanity check in a proper way

* Check the second radio only in the first IRQ, SNR averaging

* includ type match for the byte checking

* comment cleanup

* More analytics logs

* Moving isFirstIrq to SX12xxDriverCommon

* Added separate SNR stats

* Fixed a bug, and hide stats behind DEBUG_LOG flag

* Changed DEBUG_LOG to DEBUG_RCVR_DUAL_RSSI flag

* Some formatting improvements

* more stats, refactored as a proper struct

* Enable single radio report mode

* formatting improvements

* sx127x impelementation

* Prevent div/0 situation

* fix the frequency correction error by 1

* SNR report based on Fuzzy Logic

When the difference between those two SNRs are larger than threshold, we'd return the averaged value between two. When the difference between the two values are small, return the lower SNR value. On the borderline differences, the transition between two logics are smoothend by a fuzzy logic.

The thershold of the fuzzy logic is determined by dynamic power up/down SNR thresholds

* more correct rounding, fuzzy logic also on 900M

* fix threshold set error (dn > up!) & comment correction

* Fix some glitches after the master merge

* Update one or both telem_count depending on parameter

* Add -flto flag for Siyi - untested

* refactoring + small casting bugfix

* fixing rssi_sum overflow

* fuzzy snr calculation moved to SX12xxDriverCommon

---------

Co-authored-by: Paul Kendall <pkendall64@gmail.com>
src/lib/SX127xDriver/SX127x.cpp
src/lib/SX127xDriver/SX127x.h
src/lib/SX1280Driver/SX1280.cpp
src/lib/SX1280Driver/SX1280.h
src/lib/SX12xxDriverCommon/SX12xxDriverCommon.h
src/src/rx_main.cpp
src/src/tx_main.cpp
src/targets/siyi.ini
src/user_defines.txt