41 return decimation_ratio[decimation];
43 bool setDecimate(uint8_t dec)
45 if(dec >= NDECIDX)
return false;
46 this->decimation = dec;
51 void SetRand(
bool v) { this->stateADCRand = v; }
52 bool getRand()
const {
return this->stateADCRand; }
54 void setSideband(
bool lsb) { this->useSidebandLSB = lsb; }
55 bool getSideband()
const {
return this->useSidebandLSB; }
57 float setFreqOffset(
float offset);
61 template<
bool rand>
void convert_float(
const int16_t *input,
float* output,
int size)
63 for(
int m = 0; m < size; m++)
66 if (rand && (input[m] & 1))
68 val = input[m] ^ (-2);
74 output[m] = float(val);
78 void shift_freq(fftwf_complex* dest,
const fftwf_complex* source1,
const fftwf_complex* source2,
int start,
int end)
80 for (
int m = start; m < end; m++)
84 dest[m][0] = source1[m][0] * source2[m][0] - source1[m][1] * source2[m][1];
85 dest[m][1] = source1[m][1] * source2[m][0] + source1[m][0] * source2[m][1];
89 template<
bool flip>
void copy(fftwf_complex* dest,
const fftwf_complex* source,
int count)
93 for (
int i = 0; i < count; i++)
95 dest[i][0] = source[i][0];
96 dest[i][1] = -source[i][1];
101 for (
int i = 0; i < count; i++)
103 dest[i][0] = source[i][0];
104 dest[i][1] = source[i][1];
113 size_t inputbuffer_block_size = 0;
121 int decimation_ratio[NDECIDX];
126 int fft_size_per_decimation[NDECIDX];
133 int ffts_per_blocks = 0;
142 int center_frequency_bin = 0;
152 fftwf_complex **filterHw;
154 fftwf_plan plan_time2freq_r2c;
155 fftwf_plan *plan_freq2time;
156 fftwf_plan plan_freq2time_per_decimation[NDECIDX];
158 uint32_t processor_count;
160 std::mutex mutexR2iqControl;
161 std::thread r2iq_thread[N_MAX_R2IQ_THREADS];