public Radio() { RadioDSP.CreateDSP(); Thread.Sleep(100); DttSP.ReleaseUpdate(); dsp_rx = new RadioDSPRX[NUM_RX_THREADS][]; for(int i=0; i<NUM_RX_THREADS; i++) { dsp_rx[i] = new RadioDSPRX[NUM_RX_PER_THREAD]; for(int j=0; j<NUM_RX_PER_THREAD; j++) dsp_rx[i][j] = new RadioDSPRX((uint)i*2, (uint)j); } dsp_tx = new RadioDSPTX[1]; dsp_tx[0] = new RadioDSPTX(1); dsp_rx[0][0].Active = true; // enable main RX //dsp_tx[0].Active = true; // enable main TX // set for half duplex DttSP.SetThreadProcessingMode(0,2); DttSP.SetThreadProcessingMode(1,1); }
public void Copy(RadioDSPRX rx) { this.AudioSize = rx.audio_size; this.DSPMode = rx.dsp_mode; this.SetRXFilter(rx.rx_filter_low, rx.rx_filter_high); this.NoiseReduction = rx.noise_reduction; this.SetNRVals(rx.nr_taps, rx.nr_delay, rx.nr_gain, rx.nr_leak); this.AutoNotchFilter = rx.auto_notch_filter; this.SetANFVals(rx.anf_taps, rx.anf_delay, rx.anf_gain, rx.anf_leak); this.RXAGCMode = rx.rx_agc_mode; this.RXEQNumBands = rx_eq_num_bands; if (this.rx_eq_num_bands == 3) { this.RXEQ10 = rx.rx_eq10; this.RXEQ3 = rx.rx_eq3; } else { this.RXEQ3 = rx.rx_eq3; this.RXEQ10 = rx.rx_eq10; } this.RXEQOn = rx.rx_eq_on; this.NBOn = rx.nb_on; this.NBThreshold = rx.nb_threshold; this.RXCorrectIQMu = rx.rx_correct_iq_mu; this.SDROM = rx.sdrom; this.SDROMThreshold = rx.sdrom_threshold; this.RXFixedAGC = rx.rx_fixed_agc; this.RXAGCMaxGain = rx.rx_agc_max_gain; this.RXAGCAttack = rx.rx_agc_attack; this.RXAGCDecay = rx.rx_agc_decay; this.RXAGCHang = rx.rx_agc_hang; this.RXOutputGain = rx.rx_output_gain; this.RXAGCSlope = rx.rx_agc_slope; this.RXAGCHangThreshold = rx.rx_agc_hang_threshold; this.CurrentWindow = rx.current_window; this.SpectrumPolyphase = rx.spectrum_polyphase; this.BinOn = rx.bin_on; this.RXSquelchThreshold = rx.rx_squelch_threshold; this.RXSquelchOn = rx.rx_squelch_on; this.SpectrumPreFilter = rx.spectrum_pre_filter; this.Active = rx.active; this.Pan = rx.pan; this.RXOsc = rx.rx_osc; }