22#ifndef _H_RADIOHANDLER
23#define _H_RADIOHANDLER
34#include "radio/RadioHardware.h"
35#include "fft_mt_r2iq/fft_mt_r2iq.h"
36#include "dsp/ringbuffer.h"
58 sddc_err_t
AttachReal(
void (*callback)(
void* context,
const int16_t*, uint32_t),
void* context =
nullptr);
59 sddc_err_t
AttachIQ(
void (*callback)(
void* context,
const sddc_complex_t*, uint32_t),
void* context =
nullptr);
60 sddc_err_t
Start(
bool convert_r2iq);
71 sddc_err_t SetRFMode(sddc_rf_mode_t mode);
75 uint32_t GetADCSampleRate();
76 sddc_err_t SetADCSampleRate(uint32_t samplefreq);
83 vector<float> GetRFGainSteps(sddc_rf_mode_t mode = NOMODE);
84 array<float, 2> GetRFGainRange(sddc_rf_mode_t mode = NOMODE);
86 sddc_err_t SetRFGain(
float new_att);
88 vector<float> GetIFGainSteps(sddc_rf_mode_t mode = NOMODE);
89 array<float, 2> GetIFGainRange(sddc_rf_mode_t mode = NOMODE);
91 sddc_err_t SetIFGain(
float new_gain);
95 sddc_err_t SetBiasT_HF (
bool new_state);
97 sddc_err_t SetBiasT_VHF(
bool new_state);
99 sddc_err_t SetDither(
bool new_state);
101 sddc_err_t SetPGA(
bool new_state);
103 sddc_err_t SetRand(
bool new_state);
106 sddc_err_t SetLED (sddc_leds_t led,
bool on);
109 float getRealSamplesPerSecond()
const {
return real_samples_per_second; }
110 float getIQSamplesPerSecond()
const {
return iq_samples_per_second; }
114 const char *getHardwareName() {
return hardware->GetName(); }
115 uint16_t GetHardwareFirmware() {
return devFirmware; }
119 void EnableDebug(
void (*dbgprintFX3)(
const char* fmt, ...),
bool (*getconsolein)(
char* buf,
int maxlen))
121 this->DbgPrintFX3 = dbgprintFX3;
122 this->GetConsoleIn = getconsolein;
125 bool ReadDebugTrace(uint8_t* pdata, uint8_t len) {
return fx3->ReadDebugTrace(pdata, len); }
128 static size_t GetDeviceListLength();
129 static vector<SDDC::DeviceItem> GetDeviceList();
135 void CaculateStats();
138 void (*callbackReal)(
void* context,
const int16_t *data, uint32_t length);
139 void *callbackRealContext;
140 void (*callbackIQ)(
void* context,
const sddc_complex_t *data, uint32_t length);
141 void *callbackIQContext;
143 void (*DbgPrintFX3)(
const char* fmt, ...);
144 bool (*GetConsoleIn)(
char* buf,
int maxlen);
146 bool streamRunning =
false;
149 uint16_t devFirmware;
156 std::thread show_stats_thread;
157 std::thread submit_thread;
160 uint32_t count_real_samples = 0;
161 uint32_t count_iq_samples = 0;
162 float real_samples_per_second = 0;
163 float iq_samples_per_second = 0;
170 bool r2iqEnabled =
false;
Definition RadioHandler.h:53
sddc_err_t AttachIQ(void(*callback)(void *context, const sddc_complex_t *, uint32_t), void *context=nullptr)
Define the function to call when an IQ sample is available.
Definition RadioHandler.cpp:216
uint32_t GetCenterFrequency()
Get the frequency currently tuned in the SDR.
Definition RadioHandler.cpp:575
sddc_err_t Init(SDDC::DeviceItem dev_index)
Initialize the RadioHandler instance.
Definition RadioHandler.cpp:104
sddc_rf_mode_t GetBestRFMode(uint64_t freq)
Return the best RF mode to use for the frequency given.
Definition RadioHandler.cpp:725
sddc_err_t Resume()
Resume data transmission from the SDR.
Definition RadioHandler.cpp:344
RadioModel getHardwareModel()
— Hardware infos — //
Definition RadioHandler.h:113
sddc_rf_mode_t GetRFMode()
Return the current RF mode.
Definition RadioHandler.cpp:731
RadioHandler()
Create a new Radio Handler.
Definition RadioHandler.cpp:83
sddc_err_t Stop()
Stop the SDR data stream and processing functions.
Definition RadioHandler.cpp:296
sddc_err_t Start(bool convert_r2iq)
Start the SDR data stream and processing functions.
Definition RadioHandler.cpp:258
sddc_err_t AttachReal(void(*callback)(void *context, const int16_t *, uint32_t), void *context=nullptr)
Define the function to call when a real sample is available.
Definition RadioHandler.cpp:196
sddc_err_t SetCenterFrequency(uint32_t freq)
Set the frequency tuned in the SDR.
Definition RadioHandler.cpp:597
array< float, 2 > GetADCSampleRateLimits()
Get the limits of the ADC of your SDR.
Definition RadioHandler.cpp:738
sddc_err_t Pause()
Pause the data transmission from the SDR.
Definition RadioHandler.cpp:329
sddc_err_t SetDecimation(uint8_t decimate)
Set the decimation factor of the FFT.
Definition RadioHandler.cpp:242
Definition RadioHardware.h:33
Definition fft_mt_r2iq.h:27
Definition ringbuffer.h:18
Definition pf_mixer.h:206