...
For pull request:
Make LOS/RSSI branch (after weekend)
Research
Notes about RSSI
...
:
https://www.youtube.com/watch?v=nZxMvTCN_pI&t=340s&ab_channel=AndyRC
Some RSSI Types
Basic analog signal (eg. voltage range between 0.0 and 5.0, or 0.0 and 3.3)
PWM signal
PPM signal
PPM vs. PWM:
Ardupilot implementation reference
AP_RSSI.cpp calls on AP_HAL_SITL/AnalopIn.cpp class for its ‘channel’ function
AnalogIn.cpp has ‘channel’ function which returns a pointer to an AnalogSource object by calling the ADCSource object constructor. Pointer is stored in rssi_analog_source variable
(ADCSource inherits from AnalogSource, is declared in AP_HAL_SITL/AnalogIn)
https://github.com/ArduPilot/ardupilot/blob/master/libraries/AP_HAL_SITL/AnalogIn.cpp
AnalogSource is an abstract class, defined in a different AnalogIn file, AP_HAL/AnalogIn
AnalogSource constructor requires inputting a pointer to a SITL_State object
In AP_RSSI.cpp, AnalogIn object is actually a member variable of AP_HAL::HAL.h class
A hal.h object called hal is accessed using ‘extern’ keyword
In AP_RSSI.cpp read_pin_rssi function
ADCSource voltage_average() function is called on rssi_analog_source variable
voltage_average() returns a manipulated (normalized to between 0.0f and 5.0f) output of ADCSource read_average() function. read_average() returns return of ADCSource read_latest() function.
read_latest(), depending on the pin, returns the appropriate pin value from the _sitlState member variable of ADCSource, which holds a pointer to a sitlState object
(the desired pin is an argument of the ‘channel’ function mentioned earlier)
the pin values are from 0.0f to 1023.0f
AP_RSSI.cpp also has functions which get PWM values