I want to experiment with long-range transmit (TX) and receive (RX) using the LimeSDR Mini 2.4. To do this, I need to establish an Automatic Gain Control (AGC) loop by observing both:
The RF RSSI (pre-RXLNAW), and
The digital RSSI.
Current Status:
I’ve been able to find the LimeSuite functions that read the digital RSSI, but I haven’t been able to find any LimeSuite function for reading the RF RSSI.
Questions:
Is there a direct function in LimeSuite to read the RF RSSI?
If yes, please direct me to it.
If no, how can I access or calculate the RF RSSI?
I would like to make these functions into Octave-callable C++ binding, since the rest of my project is implemented in Octave.
Is it possible to wrap these LimeSuite functions (if they exist) into Octave-callable C++ binding and use them from within Octave?
I am trying to use the analog RSSI feature as you suggested earlier — by first calling:
LMS7002M::CalibrateAnalogRSSI_DC_Offset()
before reading register 0x0605 during streaming.
I am implementing this through an Octave-callable C++ binding, using the standard lms_device_t* lmsDev from the LimeSuite C API.
However, I’ve discovered that in an installed LimeSuite build (/usr/local/include/lime), the C API does not expose any way to access the LMS7002M object or the LMS7_Device class. As a result:
CalibrateAnalogRSSI_DC_Offset() is not exposed through the public API
There is no C API wrapper that calls it
lms_device_t cannot be cast to LMS7_Device
None of the existing exposed functions (including LMS_Calibrate) appear to call this calibration internally
So at the moment, I cannot reach the calibration routine from an external application (Octave/GNU Radio), even though the function is present in LMS7002M.cpp:
How should external applications call CalibrateAnalogRSSI_DC_Offset() if it is not exposed in the C API?
Is there a recommended way to trigger this calibration via the LimeSuite GUI or the .ini file, so that loading Rx.ini in Octave would perform it automatically?
Or is there another API call that already performs this calibration implicitly? (From the code it appears that none of the exposed APIs call it.)
My goal is simply:
Run the analog RSSI DC offset calibration once
Then continuously poll register 0x0605 for analog RSSI while streaming