|
5G-MAG Reference Tools - MBMS Modem
|
Interface to the SDR stick. More...
#include <SdrReader.h>

Public Member Functions | |
| SdrReader (const libconfig::Config &cfg, size_t rx_channels) | |
| Default constructor. More... | |
| virtual | ~SdrReader () |
| Default destructor. More... | |
| void | enumerateDevices () |
| Prints a list of all available SDR devices. More... | |
| bool | init (const std::string &device_args, const char *sample_file, const char *write_sample_file, bool repeat_sample_file) |
| Initializes the SDR interface and creates a ring buffer according to the params from Cfg. More... | |
| bool | tune (uint32_t frequency, uint32_t sample_rate, uint32_t bandwidth, double gain, const std::string &antenna, bool use_agc) |
| Tune the SDR to the desired frequency, and set gain, filter and antenna parameters. More... | |
| void | start () |
| Start reading samples from the SDR. More... | |
| void | stop () |
| Stop reading samples from the SDR. More... | |
| void | clear_buffer () |
| Clear all samples from the rx buffers. More... | |
| int | get_samples (cf_t *data[SRSRAN_MAX_CHANNELS], uint32_t nsamples, srsran_timestamp_t *rx_time) |
| Store nsamples count samples into the buffer at data. More... | |
| double | get_sample_rate () |
| Get current sample rate. More... | |
| double | get_frequency () |
| Get current center frequency. More... | |
| unsigned | get_filter_bw () |
| Get current filter bandwidth. More... | |
| double | get_gain () |
| Get current gain. More... | |
| double | get_buffer_level () |
| Get current ringbuffer level (0 = empty . More... | |
| std::string | get_antenna () |
| Get current antenna port. More... | |
| uint32_t | rssi () |
| Get RSSI estimate (disabled at the moment) More... | |
| double | min_gain () |
| double | max_gain () |
| void | enableSampleFileWriting () |
| If sample file creation is enabled, writing samples starts after this call. More... | |
| void | disableSampleFileWriting () |
| If sample file creation is enabled, writing samples stops after this call. More... | |
Private Member Functions | |
| void | init_buffer () |
| bool | set_gain (bool use_agc, double gain, uint8_t idx) |
| bool | set_sample_rate (uint32_t rate, uint8_t idx) |
| bool | set_filter_bw (uint32_t bandwidth, uint8_t idx) |
| bool | set_antenna (const std::string &antenna, uint8_t idx) |
| bool | set_frequency (uint32_t frequency, uint8_t idx) |
| void | read () |
Private Attributes | |
| void * | _sdr = nullptr |
| void * | _stream = nullptr |
| const libconfig::Config & | _cfg |
| std::unique_ptr< MultichannelRingbuffer > | _buffer |
| std::unique_ptr< MultichannelRingbuffer > | _buffer_write |
| std::thread | _readerThread |
| bool | _running |
| unsigned | _rx_channels = 1 |
| double | _sampleRate |
| double | _frequency |
| unsigned | _filterBw |
| double | _gain |
| bool | _use_agc |
| double | _min_gain |
| double | _max_gain |
| std::string | _antenna |
| unsigned | _overflows |
| unsigned | _underflows |
| cf_t * | _read_buffer |
| srsran_filesource_t | file_source |
| srsran_filesink_t | file_sink |
| std::chrono::steady_clock::time_point | _last_read |
| bool | _high_watermark_reached = false |
| int | _sleep_adjustment = 0 |
| unsigned | _buffer_ms = 200 |
| bool | _buffer_ready = false |
| bool | _reading_from_file = false |
| bool | _writing_to_file = false |
| bool | _write_samples = false |
| bool | _repeat_sample_file = false |
| uint32_t | _rssi = 0 |
| bool | _temp_sensor_available = false |
| std::string | _temp_sensor_key = {} |
| std::map< std::string, std::string > | _device_args |
Interface to the SDR stick.
Sets up the SDR, reads samples from it, and handles a ringbuffer for the received samples.
Definition at line 37 of file SdrReader.h.
|
inlineexplicit |
Default constructor.
| cfg | Config singleton reference |
Definition at line 44 of file SdrReader.h.
|
virtual |
| void SdrReader::clear_buffer | ( | ) |
Clear all samples from the rx buffers.
Definition at line 109 of file SdrReader.cpp.
|
inline |
If sample file creation is enabled, writing samples stops after this call.
Definition at line 139 of file SdrReader.h.
|
inline |
If sample file creation is enabled, writing samples starts after this call.
Definition at line 134 of file SdrReader.h.
| void SdrReader::enumerateDevices | ( | ) |
|
inline |
| auto SdrReader::get_buffer_level | ( | ) |
|
inline |
|
inline |
|
inline |
|
inline |
| auto SdrReader::get_samples | ( | cf_t * | data[SRSRAN_MAX_CHANNELS], |
| uint32_t | nsamples, | ||
| srsran_timestamp_t * | rx_time | ||
| ) |
Store nsamples count samples into the buffer at data.
| data | Buffer pointer |
| nsamples | sample count |
| rx_time | unused |
Definition at line 345 of file SdrReader.cpp.
| auto SdrReader::init | ( | const std::string & | device_args, |
| const char * | sample_file, | ||
| const char * | write_sample_file, | ||
| bool | repeat_sample_file | ||
| ) |
Initializes the SDR interface and creates a ring buffer according to the params from Cfg.
Definition at line 66 of file SdrReader.cpp.
|
private |
Definition at line 102 of file SdrReader.cpp.
|
inline |
Definition at line 129 of file SdrReader.h.
|
inline |
Definition at line 127 of file SdrReader.h.
|
private |
Definition at line 268 of file SdrReader.cpp.
|
inline |
|
private |
Definition at line 115 of file SdrReader.cpp.
|
private |
Definition at line 134 of file SdrReader.cpp.
|
private |
Definition at line 128 of file SdrReader.cpp.
|
private |
Definition at line 146 of file SdrReader.cpp.
|
private |
Definition at line 140 of file SdrReader.cpp.
| void SdrReader::start | ( | ) |
Start reading samples from the SDR.
Definition at line 216 of file SdrReader.cpp.
| void SdrReader::stop | ( | ) |
Stop reading samples from the SDR.
Definition at line 255 of file SdrReader.cpp.
| auto SdrReader::tune | ( | uint32_t | frequency, |
| uint32_t | sample_rate, | ||
| uint32_t | bandwidth, | ||
| double | gain, | ||
| const std::string & | antenna, | ||
| bool | use_agc | ||
| ) |
Tune the SDR to the desired frequency, and set gain, filter and antenna parameters.
Definition at line 169 of file SdrReader.cpp.
|
private |
Definition at line 175 of file SdrReader.h.
|
private |
Definition at line 161 of file SdrReader.h.
|
private |
Definition at line 189 of file SdrReader.h.
|
private |
Definition at line 190 of file SdrReader.h.
|
private |
Definition at line 162 of file SdrReader.h.
|
private |
Definition at line 159 of file SdrReader.h.
|
private |
Definition at line 201 of file SdrReader.h.
|
private |
Definition at line 170 of file SdrReader.h.
|
private |
Definition at line 169 of file SdrReader.h.
|
private |
Definition at line 171 of file SdrReader.h.
|
private |
Definition at line 186 of file SdrReader.h.
|
private |
Definition at line 184 of file SdrReader.h.
|
private |
Definition at line 174 of file SdrReader.h.
|
private |
Definition at line 173 of file SdrReader.h.
|
private |
Definition at line 176 of file SdrReader.h.
|
private |
Definition at line 179 of file SdrReader.h.
|
private |
Definition at line 164 of file SdrReader.h.
|
private |
Definition at line 191 of file SdrReader.h.
|
private |
Definition at line 194 of file SdrReader.h.
|
private |
Definition at line 196 of file SdrReader.h.
|
private |
Definition at line 165 of file SdrReader.h.
|
private |
Definition at line 167 of file SdrReader.h.
|
private |
Definition at line 168 of file SdrReader.h.
|
private |
Definition at line 156 of file SdrReader.h.
|
private |
Definition at line 187 of file SdrReader.h.
|
private |
Definition at line 157 of file SdrReader.h.
|
private |
Definition at line 198 of file SdrReader.h.
|
private |
Definition at line 199 of file SdrReader.h.
|
private |
Definition at line 177 of file SdrReader.h.
|
private |
Definition at line 172 of file SdrReader.h.
|
private |
Definition at line 193 of file SdrReader.h.
|
private |
Definition at line 192 of file SdrReader.h.
|
private |
Definition at line 182 of file SdrReader.h.
|
private |
Definition at line 181 of file SdrReader.h.