71 bool setDecimate(uint8_t dec);
74 void SetRand(
bool v) { this->stateADCRand = v; }
75 bool getRand()
const {
return this->stateADCRand; }
77 void setSideband(
bool lsb) { this->useSidebandLSB = lsb; }
78 bool getSideband()
const {
return this->useSidebandLSB; }
80 float setFreqOffset(
float offset);
84 template<
bool rand>
void convert_float(
const int16_t *input,
float* output,
int size)
86 for(
int m = 0; m < size; m++)
89 if (rand && (input[m] & 1))
91 val = input[m] ^ (-2);
97 output[m] = float(val);
101 void shift_freq(fftwf_complex* dest,
const fftwf_complex* source1,
const fftwf_complex* source2,
int start,
int end)
103 for (
int m = start; m < end; m++)
107 dest[m][0] = source1[m][0] * source2[m][0] - source1[m][1] * source2[m][1];
108 dest[m][1] = source1[m][1] * source2[m][0] + source1[m][0] * source2[m][1];
112 template<
bool flip>
void copy(fftwf_complex* dest,
const fftwf_complex* source,
int count)
116 for (
int i = 0; i < count; i++)
118 dest[i][0] = source[i][0];
119 dest[i][1] = -source[i][1];
124 for (
int i = 0; i < count; i++)
126 dest[i][0] = source[i][0];
127 dest[i][1] = source[i][1];
135 size_t inputbuffer_block_size = 0;
143 int decimation_ratio[NDECIDX];
148 int fft_size_per_decimation[NDECIDX];
155 int ffts_per_blocks = 0;
164 int center_frequency_bin = 0;
174 fftwf_complex **filterHw;
176 fftwf_plan plan_time2freq_r2c;
177 fftwf_plan *plan_freq2time;
178 fftwf_plan plan_freq2time_per_decimation[NDECIDX];
180 uint32_t processor_count;
182 std::mutex mutexR2iqControl;
183 std::thread r2iq_thread[N_MAX_R2IQ_THREADS];