Пример #1
0
        private void mnuXVTR_Click(object sender, System.EventArgs e)
        {
            if(XVTRForm == null || XVTRForm.IsDisposed)
                XVTRForm = new XVTRForm(this);

            XVTRForm.Show();
            XVTRForm.Focus();
        }
Пример #2
0
        private void InitConsole()
        {
            #if(DEBUG)
            mnuUCB.Visible = true;
            button1.Visible = true;
            #endif
            Thread.Sleep(100);
            UpdateBandStackRegisters();

            Audio.console = this;
            FWCMidi.console = this;
            Display.console = this;

            chkDSPNB2.Enabled = true;

            vfoa_hover_digit = -1;
            vfob_hover_digit = -1;

            rx1_ant_by_band = new FWCAnt[(int)Band.LAST];
            for(int i=0; i<(int)Band.LAST; i++) rx1_ant_by_band[i] = FWCAnt.ANT1;
            rx2_ant_by_band = new FWCAnt[(int)Band.LAST];
            for(int i=0; i<(int)Band.LAST; i++) rx2_ant_by_band[i] = FWCAnt.RX2IN;
            tx_ant_by_band = new FWCAnt[(int)Band.LAST];
            for(int i=0; i<(int)Band.LAST; i++) tx_ant_by_band[i] = FWCAnt.ANT1;
            rx1_loop_by_band = new bool[(int)Band.LAST];
            rx1_preamp_by_band = new PreampMode[(int)Band.LAST];
            for(int i=0; i<(int)Band.LAST; i++) rx1_preamp_by_band[i] = PreampMode.HIGH;
            rx2_preamp_by_band = new PreampMode[(int)Band.LAST];
            for(int i=0; i<(int)Band.LAST; i++) rx2_preamp_by_band[i] = PreampMode.HIGH;
            power_by_band = new int[(int)Band.LAST];
            for(int i=0; i<(int)Band.LAST; i++) power_by_band[i] = 50;
            rx1_agct_by_band = new int[(int)Band.LAST];
            for(int i=0; i<(int)Band.LAST; i++) rx1_agct_by_band[i] = 90;
            rx2_agct_by_band = new int[(int)Band.LAST];
            for(int i=0; i<(int)Band.LAST; i++) rx2_agct_by_band[i] = 90;
            tx1_by_band = new bool[(int)Band.LAST];
            tx2_by_band = new bool[(int)Band.LAST];
            tx3_by_band = new bool[(int)Band.LAST];

            for(int i=0; i<(int)Band.LAST; i++)
                tx1_by_band[i] = tx2_by_band[i] = tx3_by_band[i] = true;

            vhf_text = new ButtonTS[15];
            vhf_text[0] = btnBandVHF0;
            vhf_text[1] = btnBandVHF1;
            vhf_text[2] = btnBandVHF2;
            vhf_text[3] = btnBandVHF3;
            vhf_text[4] = btnBandVHF4;
            vhf_text[5] = btnBandVHF5;
            vhf_text[6] = btnBandVHF6;
            vhf_text[7] = btnBandVHF7;
            vhf_text[8] = btnBandVHF8;
            vhf_text[9] = btnBandVHF9;
            vhf_text[10] = btnBandVHF10;
            vhf_text[11] = btnBandVHF11;
            vhf_text[12] = btnBandVHF12;
            vhf_text[13] = btnBandVHF13;

            power_table = new float[(int)Band.LAST][];
            for(int i=0; i<(int)Band.LAST; i++)
                power_table[i] = new float[13];

            rx1_image_gain_table = new float[(int)Band.LAST];
            rx1_image_phase_table = new float[(int)Band.LAST];
            rx2_image_gain_table = new float[(int)Band.LAST];
            rx2_image_phase_table = new float[(int)Band.LAST];
            tx_image_gain_table = new float[(int)Band.LAST];
            tx_image_phase_table = new float[(int)Band.LAST];

            tx_carrier_table = new int[(int)Band.LAST][];
            for(int i=0; i<(int)Band.LAST; i++)
            {
                tx_carrier_table[i] = new int[4];
                for(int j=0; j<4; j++)
                    tx_carrier_table[i][j] = 128;
            }

            pa_bias_table = new int[4][]; // 4 groups of 8 pot settings
            for(int i=0; i<4; i++)
            {
                pa_bias_table[i] = new int[8];
                for(int j=0; j<8; j++)
                    pa_bias_table[i][j] = 0;
            }

            rx1_level_table = new float[(int)Band.LAST][]; // 3 settings per band (display_offset, preamp, multimeter offset)
            for(int i=0; i<(int)Band.LAST; i++)
            {
                rx1_level_table[i] = new float[3];
                rx1_level_table[i][0] = -59.2f;	// setup defaults;
                rx1_level_table[i][1] = -13.5f;
                rx1_level_table[i][2] = -32.0f;
            }

            rx2_level_table = new float[(int)Band.LAST][]; // 3 settings per band (display_offset, preamp, multimeter offset)
            for(int i=0; i<(int)Band.LAST; i++)
            {
                rx2_level_table[i] = new float[3];
                rx2_level_table[i][0] = -59.2f;	// setup defaults;
                rx2_level_table[i][1] = -13.5f;
                rx2_level_table[i][2] = -32.0f;
            }

            pa_bridge_table = new float[(int)Band.LAST][];
            for(int i=0; i<(int)Band.LAST; i++)
            {
                pa_bridge_table[i] = new float[6]; // 1, 2, 5, 10, 20, 90
                for(int j=0; j<6; j++)
                    pa_bridge_table[i][j] = 0.0f;
            }

            swr_table = new float[(int)Band.LAST];
            for(int i=0; i<(int)Band.LAST; i++)
                swr_table[i] = 1.0f;

            atu_tuning = false;
            tune_power = 10;
            calibrating = false;
            run_setup_wizard = true;

            // get culture specific decimal separator
            separator = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;

            last_band = "";						// initialize bandstack

            wheel_tune_list = new double[13];		// initialize wheel tuning list array
            wheel_tune_list[0]  =  0.000001;
            wheel_tune_list[1]  =  0.000010;
            wheel_tune_list[2]  =  0.000050;
            wheel_tune_list[3]  =  0.000100;
            wheel_tune_list[4]  =  0.000250;
            wheel_tune_list[5]  =  0.000500;
            wheel_tune_list[6]  =  0.001000;
            wheel_tune_list[7]  =  0.005000;
            wheel_tune_list[8]  =  0.009000;
            wheel_tune_list[9]  =  0.010000;
            wheel_tune_list[10] =  0.100000;
            wheel_tune_list[11] =  1.000000;
            wheel_tune_list[12] = 10.000000;
            wheel_tune_index = 6;

            meter_text_history = new float[multimeter_text_peak_samples];

            current_meter_data = -200.0f;

            rx1_preamp_offset = new float[4];
            rx1_preamp_offset[(int)PreampMode.OFF] = 10.0f;
            rx1_preamp_offset[(int)PreampMode.LOW] = 0.0f;
            rx1_preamp_offset[(int)PreampMode.MED] = -16.0f;
            rx1_preamp_offset[(int)PreampMode.HIGH] = -26.0f;

            rx2_preamp_offset = new float[4];
            rx2_preamp_offset[(int)PreampMode.OFF] = 0.0f;
            rx2_preamp_offset[(int)PreampMode.HIGH] = 14.0f;

            this.ActiveControl = chkPower;		// Power has focus initially

            Display.Target = picDisplay;
            Display.Init();						// Initialize Display variables
            InitDisplayModes();					// Initialize Display Modes
            InitAGCModes();						// Initialize AGC Modes
            InitMultiMeterModes();				// Initialize MultiMeter Modes
            ProcessSampleThreadController[] pstc = new ProcessSampleThreadController[3];
            audio_process_thread = new Thread[3];
            for (uint proc_thread=0;proc_thread<3;proc_thread++)
            {
                pstc[proc_thread] = new ProcessSampleThreadController(proc_thread);
                audio_process_thread[proc_thread] = new Thread( new ThreadStart(pstc[proc_thread].ProcessSampleThread));
                audio_process_thread[proc_thread].Name = "Audio Process Thread "+proc_thread.ToString();
                audio_process_thread[proc_thread].Priority = ThreadPriority.Highest;
                audio_process_thread[proc_thread].IsBackground = true;
                audio_process_thread[proc_thread].Start();

                /*				DttSP.SetThreadCom(proc_thread);

                                audio_process_thread = new Thread(	// create audio process thread
                                    new ThreadStart(DttSP.ProcessSamplesThread));
                                audio_process_thread.Name = "Audio Process Thread ";
                                audio_process_thread.Priority = ThreadPriority.Highest;
                                audio_process_thread.IsBackground = true;
                                audio_process_thread.Start();
                */
            }

            hw = new HW(0x378);					// create hardware object

            siolisten = new SIOListenerII(this);

            Keyer = new CWKeyer2(this);			// create new Keyer
            //			Keyer.sp.BaudRate = 4800;	//[patch_15]
            EQForm = new EQForm(this);

            InitFilterPresets();					// Initialize filter values

            SetupForm = new Setup(this);		// create Setup form
            SetupForm.StartPosition = FormStartPosition.Manual;

            switch(current_model)
            {
                case Model.SDR1000:
                    Hdw.Init();							// Power down hardware
                    Hdw.StandBy();						// initialize hardware device
                    break;
                    /*case Model.SDRX:
                        if(fwc_init)
                        {
                            byte mask;
                            FWC.GetRXPresentMask(out mask);
                            for(int i=0; i<8; i++)
                            {
                                if((mask>>i & 1) == 1)
                                {
                                    fwc_index = i;
                                    break;
                                }
                            }
                        }
                        break;*/
                case Model.FLEX5000:
                    if(fwc_init)
                        fwcMixForm = new FWCMixForm(this);
                    break;
            }

            //SetupForm.GetTxProfiles();
            UpdateTXProfile(SetupForm.TXProfile);

            Common.RestoreForm(EQForm, "EQForm", false);

            XVTRForm = new XVTRForm(this);

            MemForm = new Memory(this);			// create Memory form
            MemForm.StartPosition = FormStartPosition.Manual;

            WaveForm = new WaveControl(this);	// create Wave form
            WaveForm.StartPosition = FormStartPosition.Manual;

            //rx1_filter = Filter.F2600;

            //RX1AGCMode = AGCMode.MED;				// Initialize front panel controls
            comboPreamp.Text = "High";
            chkRX1Preamp.Checked = true;
            vfob_dsp_mode = DSPMode.LSB;
            vfob_filter = Filter.F3;
            comboDisplayMode.Text = "Panadapter";
            comboRX2DisplayMode.Text = "Panadapter";
            comboMeterRXMode.SelectedIndex = 0;
            comboRX2MeterMode.SelectedIndex = 0;
            comboTuneMode.SelectedIndex = 0;
            quick_save_filter = Filter.F3;
            quick_save_mode = DSPMode.LSB;
            udPWR.Value = 50;
            btnDisplayPanCenter_Click(this, EventArgs.Empty);
            comboTXProfile.Text = SetupForm.TXProfile;
            comboDigTXProfile.Text = SetupForm.TXProfile;

            GetState();							// recall saved state

            chkFullDuplex.Checked = false;
            if(rx1_dsp_mode == DSPMode.FIRST || rx1_dsp_mode == DSPMode.LAST)
                radModeLSB.Checked = true;
            if(rx2_dsp_mode == DSPMode.FIRST || rx2_dsp_mode == DSPMode.LAST)
                radRX2ModeLSB.Checked = true;
            if(rx1_filter == Filter.FIRST || rx1_filter == Filter.LAST ||
                (rx1_filter == Filter.NONE && rx1_dsp_mode != DSPMode.DRM && rx1_dsp_mode != DSPMode.SPEC))
                radFilter3.Checked = true;
            if(rx2_filter == Filter.FIRST || rx2_filter == Filter.LAST ||
                (rx2_filter == Filter.NONE && rx2_dsp_mode != DSPMode.DRM && rx2_dsp_mode != DSPMode.SPEC))
                radRX2Filter3.Checked = true;

            txtVFOAFreq_LostFocus(this, EventArgs.Empty);

            /*			if(fwc_init && current_model == Model.FLEX5000 && !run_setup_wizard)
            {
                CheckFLEX5000CalData();
                if(fwcAntForm != null && !fwcAntForm.IsDisposed)
                {
                    fwcAntForm.SetBand(rx1_band);
                    fwcAntForm.CurrentAntMode = current_ant_mode;
                    fwcAntForm.RX1Ant = rx1_ant;
                    fwcAntForm.RX1Loop = rx1_loop;
                    fwcAntForm.RX2Ant = rx2_ant;
                    fwcAntForm.TXAnt = tx_ant;
                }
                CheckRX2CalData();
                RX1Ant = rx1_ant;
                if(FWCEEPROM.RX2OK) RX2Ant = rx2_ant;
            }
            else PAPresent = pa_present;
            */
            PAPresent = pa_present;
            if(comboAGC.SelectedIndex < 0)
                RX1AGCMode = AGCMode.MED;
            if(comboRX2AGC.SelectedIndex < 0)
                comboRX2AGC.Text = "Med";
            txtVFOBFreq_LostFocus(this, EventArgs.Empty);
            txtVFOAFreq_LostFocus(this, EventArgs.Empty);
            udPWR_ValueChanged(this, EventArgs.Empty);
            udAF_ValueChanged(this, EventArgs.Empty);
            udMIC_ValueChanged(this, EventArgs.Empty);
            RX1PreampMode = rx1_preamp_mode;
            RX2PreampMode = rx2_preamp_mode;
            tbDisplayZoom_Scroll(this, EventArgs.Empty);
            tbRX0Gain_Scroll(this, EventArgs.Empty);
            tbRX1Gain_Scroll(this, EventArgs.Empty);
            tbPanMainRX_Scroll(this, EventArgs.Empty);
            tbPanSubRX_Scroll(this, EventArgs.Empty);
            CalcDisplayFreq();

            wheel_tune_index--;					// Setup wheel tuning
            ChangeWheelTuneLeft();
            UpdateDisplayOffsets();

            SetupForm.initCATandPTTprops();   // wjt added -- get console props setup for cat and ptt
            if ( CmdLineArgs != null )
            {
                for ( int i = 0; i < CmdLineArgs.Length; i++ )
                {
                    switch(CmdLineArgs[i])
                    {
                        case "--disable-swr-prot-at-my-risk":
                            DisableSWRProtection = true;
                            this.Text = this.Text + "  *** SWR Protection Disabled! ***";
                            break;
                        case "--high-pwr-am":
                            Audio.high_pwr_am = true;
                            MessageBox.Show("high power am");
                            break;

                        case "--ignore-pp-ptt":  // ignore parallel port ptt -- simple testing w/o hardware attached
                            Hdw.ignorePTT(true);
                            this.Text = this.Text + " *** PP PTT disabled ***";
                            break;

                            // the next 4 opts are for various experimental HPSDR xmit and receive options

                        case "--force-16bit-IQ":
                            Force16bitIQ = true;
                            this.Text = this.Text + " *** 16 bit IQ ***";
                            break;

                        case "--mercury-xmit-hack":
                            DttSP.SetMercuryXmit(true);
                            this.Text = this.Text + " *** MercXmit ***";
                            break;

                        case "--eer-xmit-hack":
                            DttSP.SetEerXmit(true);
                            this.Text = this.Text + " *** EerXmit ***";
                            break;

                        case "--no-send-to-Janus":
                            NoJanusSend = true;
                            this.Text = this.Text + "*** NoJanusSend ***";
                            break;
                    }
                }
            }

            if(comboMeterTXMode.Items.Count > 0 && comboMeterTXMode.SelectedIndex < 0)
                comboMeterTXMode.SelectedIndex = 0;
            chkMOX.Enabled = false;

            RadioDSP.SyncStatic();

            for(int i=0; i<2; i++)
            {
                for(int j=0; j<2; j++)
                {
                    RadioDSPRX dsp_rx = radio.GetDSPRX(i, j);
                    dsp_rx.Force = true;
                    dsp_rx.Update = true;
                    dsp_rx.Force = false;
                }
            }

            for(int i=0; i<1; i++)
            {
                RadioDSPTX dsp_tx = radio.GetDSPTX(i);
                dsp_tx.Force = true;
                dsp_tx.Update = true;
                dsp_tx.Force = false;
            }

            if(this.SetupForm.FlexProfilerInstalled)
                mnuProfiles.Visible = true;
        }