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) |
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::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 |
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 | ( | ) |
|
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 315 of file SdrReader.cpp.
auto SdrReader::init | ( | const std::string & | device_args, |
const char * | sample_file, | ||
const char * | write_sample_file | ||
) |
Initializes the SDR interface and creates a ring buffer according to the params from Cfg.
Definition at line 65 of file SdrReader.cpp.
|
private |
Definition at line 101 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 258 of file SdrReader.cpp.
|
inline |
|
private |
Definition at line 112 of file SdrReader.cpp.
|
private |
Definition at line 131 of file SdrReader.cpp.
|
private |
Definition at line 125 of file SdrReader.cpp.
|
private |
Definition at line 143 of file SdrReader.cpp.
|
private |
Definition at line 137 of file SdrReader.cpp.
void SdrReader::start | ( | ) |
Start reading samples from the SDR.
Definition at line 213 of file SdrReader.cpp.
void SdrReader::stop | ( | ) |
Stop reading samples from the SDR.
Definition at line 245 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 166 of file SdrReader.cpp.
|
private |
Definition at line 174 of file SdrReader.h.
|
private |
Definition at line 161 of file SdrReader.h.
|
private |
Definition at line 188 of file SdrReader.h.
|
private |
Definition at line 189 of file SdrReader.h.
|
private |
Definition at line 159 of file SdrReader.h.
|
private |
Definition at line 199 of file SdrReader.h.
|
private |
Definition at line 169 of file SdrReader.h.
|
private |
Definition at line 168 of file SdrReader.h.
|
private |
Definition at line 170 of file SdrReader.h.
|
private |
Definition at line 185 of file SdrReader.h.
|
private |
Definition at line 183 of file SdrReader.h.
|
private |
Definition at line 173 of file SdrReader.h.
|
private |
Definition at line 172 of file SdrReader.h.
|
private |
Definition at line 175 of file SdrReader.h.
|
private |
Definition at line 178 of file SdrReader.h.
|
private |
Definition at line 163 of file SdrReader.h.
|
private |
Definition at line 190 of file SdrReader.h.
|
private |
Definition at line 194 of file SdrReader.h.
|
private |
Definition at line 164 of file SdrReader.h.
|
private |
Definition at line 166 of file SdrReader.h.
|
private |
Definition at line 167 of file SdrReader.h.
|
private |
Definition at line 156 of file SdrReader.h.
|
private |
Definition at line 186 of file SdrReader.h.
|
private |
Definition at line 157 of file SdrReader.h.
|
private |
Definition at line 196 of file SdrReader.h.
|
private |
Definition at line 197 of file SdrReader.h.
|
private |
Definition at line 176 of file SdrReader.h.
|
private |
Definition at line 171 of file SdrReader.h.
|
private |
Definition at line 192 of file SdrReader.h.
|
private |
Definition at line 191 of file SdrReader.h.
|
private |
Definition at line 181 of file SdrReader.h.
|
private |
Definition at line 180 of file SdrReader.h.