コード例 #1
0
ファイル: console.cs プロジェクト: Dfinitski/genesisradio
        private void InitConsole()      // changes yt7pwr
        {
            this.Text = this.Text + GSDR_version + GSDR_revision;
            WinVer = WindowsVersion.WindowsXP;      // default
            OSInfo = System.Environment.OSVersion;
            Mixer.console = this;

            switch (OSInfo.Version.Major)
            {
                case 5:
                    {
                        switch (OSInfo.Version.Minor)
                        {
                            case 0:
                                WinVer = WindowsVersion.Windows2000;
                                break;
                            case 1:
                                WinVer = WindowsVersion.WindowsXP;
                                break;
                        }
                    }
                    break;
                case 6:
                    {
                        switch (OSInfo.Version.Minor)
                        {
                            case 0:
                                WinVer = WindowsVersion.WindowsVista;
                                break;
                            case 1:
                                WinVer = WindowsVersion.Windows7;
                                break;
                            case 2:
                                WinVer = WindowsVersion.Windows8;
                                break;
                            case 3:
                                WinVer = WindowsVersion.Windows8;
                                break;
                            default:
                                WinVer = WindowsVersion.WindowsVista;
                                break;
                        }
                    }
                    break;
                default:
                    WinVer = WindowsVersion.WindowsXP;
                    break;
            }

            booting = true;
            skin = new Skin(this);
            VoiceMsgForm = new VoiceMessages(this);
            g59 = new GenesisG59.G59(Handle);
            g59.booting = true;
            g11 = new GenesisG11.G11(Handle);
            g11.booting = true;
            g6 = new GenesisG6.G6(Handle);
            g6.booting = true;
            g6.SetCallback(GenesisG6CommandCallback);
            g6.SetIQCallback(Audio.G6AudioCallback);
            //g6.SetIQCallback(Audio.G6ADCaudioCallback);
            //g6.SetDACcallback(Audio.G6DACaudioCallback);
            net_device = new GenesisNetBox.NetBox(Handle);
            net_device.booting = true;
            qrp2000 = new QRP2000(this);
            AnalogSignalGauge = new AGauge(this);
            NewVFOSignalGauge = new AGauge(this);

            try
            {
                ServerSocket = new ServerSendData(this);    // error!
                ClientSocket = new ClientRecvData(this);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error1 in network configuration!\nCheck your network settings!\n" +
                    ex.ToString());
            }

            try
            {
                CAT_server_socket = new CAToverEthernetServer(this);
                CAT_client_socket = new CAToverEthernetClient(this);
            }
            catch (Exception ex)
            {
                Debug.Write("Error while creating network CAT!\n" +
                    ex.ToString());
            }

            try
            {
                MultiPSKServer = new MultiPSKEthernetServer(this);
            }
            catch (Exception ex)
            {
                Debug.Write("Error in MultiPSK network configuration!\nCheck your network settings!\n" +
                    ex.ToString());
            }

            UpdateBandStackRegisters();

            Audio.console = this;
            chkDSPNB2.Enabled = true;
            Display_GDI.console = this;     // for GDI+
#if(DirectX)
            try
            {
                Display_DirectX.console = this; // for DirectX
            }
            catch (Exception ex)
            {
                MessageBox.Show("DirectX general fault!\n" + ex.ToString());
            }
#endif

            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 "--debug-enable":
                            debug_enabled = true;
                            debug = new DebugForm(this, true);
                            debug.StartPosition = FormStartPosition.Manual;
                            debug.Show();
                            debug.Focus();
                            Win32.SetWindowPos(debug.Handle.ToInt32(),
                                -1, this.Left, this.Top, debug.Width, debug.Height, 0);
                            this.Text = this.Text + " Debug enabled!";
                            break;
                    }
                }
            }

            losc_hover_digit = -1;
            vfoA_hover_digit = -1;
            vfoB_hover_digit = -1;
            run_setup_wizard = true;

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

            last_band = "";						// initialize bandstack

            wheel_tune_list = new double[15];		// 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] = 0.250000;
            wheel_tune_list[12] = 0.500000;
            wheel_tune_list[13] = 1.000000;
            wheel_tune_list[14] = 10.000000;
            wheel_tune_index = 6;
            wheel_tune_index_subRX = 6;

            meter_text_history = new float[multimeter_text_peak_samples];
            current_meter_data = -200.0f;
            this.ActiveControl = chkPower;		// Power has focus initially

            Display_GDI.Target = picDisplay;
            Display_GDI.Init();					// Initialize Display variables
            InitDisplayModes();					// Initialize Display Modes
            InitAGCModes();						// Initialize AGC Modes
            InitMultiMeterModes();				// Initialize MultiMeter Modes

            ProcessSampleThreadController[] pstc = new ProcessSampleThreadController[1];
            audio_process_thread = new Thread[1];

            for (uint proc_thread = 0; proc_thread < 1; 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();
            }

            siolisten = new SIOListenerII(this);

            Keyer = new CWKeyer2(this);			// create new Keyer
            CWXForm = new CWX(this);            // create CWX form
            CWXForm.stopButton_Click(null, null);
            EQForm = new EQForm();
            XTRVForm = new XTRV(this);
            UpdateBandStackRegisters();

            InitFilterPresets(ref filter_presets, ref filter_presets_subRX);					// Initialize filter values

            SI570 = new ExtIO_si570_usb(this);
            RTL_SDR = new ExtIO_RTL(this);

            ir_remote = new WinLIRC(this);

            rx_image_real_table = new float[(int)Band.LAST + 1];
            rx_image_imag_table = new float[(int)Band.LAST + 1];
            tx_image_phase_table = new float[(int)Band.LAST + 1];
            tx_image_gain_table = new float[(int)Band.LAST + 1];
            rx_image_phase_table = new float[(int)Band.LAST + 1];
            rx_image_gain_table = new float[(int)Band.LAST + 1];

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

            SetupForm.GetTxProfiles();
            UpdateTXProfile();

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

            CurrentAGCMode = AGCMode.MED;				// Initialize front panel controls
            vfob_dsp_mode = DSPMode.LSB;
            vfob_filter = Filter.F3;
            comboDisplayMode.Text = "Panafall";
            comboMeterRXMode.SelectedIndex = 0;
            ptbPWR.Value = 10;

            CurrentDSPMode = DSPMode.CWU;
            CurrentDSPModeSubRX = DSPMode.CWU;
            old_dsp_mode = DSPMode.CWU;
            old_dsp_mode_subRX = DSPMode.CWU;
            Splash.SetStatus("Restore Console state...");
            GetState();							// recall saved state

            if (current_dsp_mode == DSPMode.FIRST || current_dsp_mode == DSPMode.LAST)
                radModeLSB.Checked = true;
            if (current_dsp_mode_subRX == DSPMode.FIRST || current_dsp_mode == DSPMode.LAST)
                radSUBRxModeLSB.Checked = true;
            if (current_filter == Filter.FIRST || current_filter == Filter.LAST ||
                (current_filter == Filter.NONE && current_dsp_mode != DSPMode.DRM && current_dsp_mode != DSPMode.SPEC))
                radFilter3.Checked = true;
            if (current_filter_subRX == Filter.FIRST || current_filter_subRX == Filter.LAST ||
                (current_filter_subRX == Filter.NONE && current_dsp_mode_subRX != DSPMode.DRM &&
                current_dsp_mode_subRX != DSPMode.SPEC))
                radSubRXFilter3.Checked = true;

            booting = false;
            EQForm.Init();                  // set EQU parameter
            SetupForm.DSPBufferSize = 0;    // force refresh
            VFOAFreq = vfoAFreq;
            VFOBFreq = vfoBFreq;
            LOSCFreq = loscFreq;
            PWR_ValueChanged();
            udMIC_ValueChanged(this, EventArgs.Empty);
            tbRX0Gain_Scroll(this, EventArgs.Empty);
            tbRX1Gain_Scroll(this, EventArgs.Empty);
            tbPanMainRX_Scroll(this, EventArgs.Empty);
            tbPanSubRX_Scroll(this, EventArgs.Empty);
            ptbPanMainRX.Value = pan_main_rx;
            ptbPanSubRX.Value = pan_sub_rx;
            ptbDisplayZoom.Value = 4;
            CalcDisplayFreq();

            wheel_tune_index--;					// Setup wheel tuning
            wheel_tune_index_subRX--;
            ChangeWheelTuneLeft();
            ChangeWheelTuneLeftSubRX();

            SetupForm.initCATandPTTprops();   // wjt added -- get console props setup for cat and ptt 

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

            CheckSkins();

#if(DirectX)
            if (CurrentDisplayEngine == DisplayEngine.DIRECT_X)
            {
                CurrentDisplayEngine = current_display_engine;
            }
#endif

            // yt7pwr
            if (!skins_enabled)
            {
                radDisplayZoom1x.BackColor = button_selected_color;
                radDisplayZoom2x.BackColor = SystemColors.Control;
                radDisplayZoom4x.BackColor = SystemColors.Control;
                radDisplayZoom8x.BackColor = SystemColors.Control;
            }
            else
                radDisplayZoom1x.Checked = true;

            Splash.SetStatus("Initializing Genesis radio communication");	// Set progress point
            g59.booting = false;
            g11.booting = false;
            g6.booting = false;
            net_device.booting = false;
            g59.si570_i2c_address = (int)SetupForm.udSi570_address.Value;
            g59.si570_fxtal = (int)SetupForm.udSi570_xtal1.Value;
            g59.HSDiv = (int)SetupForm.udSi570_divisor.Value;
            g11.si570_i2c_address = (int)SetupForm.udSi570_address.Value;
            g11.si570_fxtal = (int)SetupForm.udSi570_xtal1.Value;
            g11.HSDiv = (int)SetupForm.udSi570_divisor.Value;
            g6.si570_i2c_address = (int)SetupForm.udSi570_address.Value;
            g6.si570_fxtal = (int)SetupForm.udSi570_xtal1.Value;
            g6.HSDiv = (int)SetupForm.udSi570_divisor.Value;
            net_device.si570_i2c_address = (int)SetupForm.udSi570_address.Value;
            net_device.si570_fxtal = (int)SetupForm.udSi570_xtal1.Value;
            net_device.si570_div = (int)SetupForm.udSi570_divisor.Value;

            if (CurrentModel == Model.GENESIS_G59USB)
            {
                bool conn = false;
                g59.USB_Serial = SetupForm.USB_serial_No;
                conn = g59.Connect();

                if (conn)
                {
                    G59Init();
                    btnUSB.BackColor = Color.Green;
                }
                else
                {
                    btnUSB.BackColor = Color.Red;
                }
            }
            else if (CurrentModel == Model.GENESIS_G11)
            {
                bool conn = false;
                g11.USB_Serial = SetupForm.USB_serial_No;
                conn = g11.Connect();

                if (conn)
                {
                    G11Init();
                    btnUSB.BackColor = Color.Green;
                }
                else
                {
                    btnUSB.BackColor = Color.Red;
                }
            }
            else if (CurrentModel == Model.GENESIS_G6)
            {
                bool conn = false;
                g6.USB_Serial = SetupForm.USB_serial_No;
                conn = g6.Connect();

                if (conn)
                {
                    G11Init();
                    btnUSB.BackColor = Color.Green;
                }
                else
                {
                    btnUSB.BackColor = Color.Red;
                }
            }
            else if (current_model == Model.QRP2000)
            {
                ReInit_USB();
            }
            else if (current_model == Model.RTL_SDR)
            {
                bool result = RTL_SDR.InitUSB();

                if (result)
                {
                    btnUSB.Visible = true;
                    btnUSB.BackColor = Color.Green;
                }
                else
                {
                    btnUSB.BackColor = Color.Red;
                }
            }
            else if (SetupForm.chkGeneralUSBPresent.Checked)
            {
                bool result = SI570.Init_USB();

                if (result)
                {
                    btnUSB.Visible = true;
                    btnUSB.BackColor = Color.Green;
                }
                else
                {
                    btnUSB.BackColor = Color.Red;
                }
            }

            txtMemory_fill();
            txtFMmemory_fill();

            SetTXOscFreqs(false, false);

            btnG3020_X1.Text = G3020Xtal1.ToString();
            btnG3020_X2.Text = G3020Xtal2.ToString();
            btnG3020_X3.Text = G3020Xtal3.ToString();
            btnG3020_X4.Text = G3020Xtal4.ToString();
            btnG160_X1.Text = G160Xtal1.ToString();
            btnG160_X2.Text = G160Xtal2.ToString();
            btnG80_X1.Text = G80Xtal1.ToString();
            btnG80_X2.Text = G80Xtal2.ToString();
            btnG80_X3.Text = G80Xtal3.ToString();
            btnG80_X4.Text = G80Xtal4.ToString();
            btnG40_X1.Text = G40Xtal1.ToString();
            btnG137_X1.Text = G137Xtal1.ToString();
            btnG500_X1.Text = G500Xtal1.ToString();

            txtVFOAMSD.Font = vfo_large_font;
            txtVFOBMSD.Font = vfo_large_font;
            txtLOSCMSD.Font = (vfo_large_font);
            txtVFOAFreq.Font = vfo_large_font;
            txtVFOBFreq.Font = vfo_large_font;
            txtLOSCFreq.Font = vfo_large_font;
            txtVFOALSD.Font = vfo_small_font;
            txtVFOBLSD.Font = vfo_small_font;
            txtLOSCLSD.Font = vfo_small_font;
            NewVFOLargeFont = new_vfo_large_font;     // refresh
            NewVFOSmallFont = new_vfo_small_font;
            VFOLargeFont = vfo_large_font;
            VFOSmallFont = vfo_small_font;
            network_event = new AutoResetEvent(false);
            sMeterDigital2.MeterForeColor = vfo_text_dark_color;
            sMeterDigital1.MeterForeColor = vfo_text_dark_color;

            try
            {
                eventWatcher = new ManagementEventWatcher("root\\wmi", "SELECT * FROM MSNdis_StatusMediaDisconnect");
                eventWatcher.EventArrived += new
                EventArrivedEventHandler(eventWatcher_EventArrived);
                eventWatcher.Start();
            }
            catch (Exception ex)
            {
                //MessageBox.Show("Error starting Network watcher!\nCheck you network settings!\n" +
                    //ex.ToString());
            }

            if (current_model == Model.GENESIS_G59NET)
                NetworkThreadRunning = true;

            SetupForm.StartEthernetCATServer();       // try ethernet CAT 
            SetupForm.StartEthernetCATClient();
            SetupForm.StartMultiPSKServer();

            InitSMeterModes();

            if (File.Exists(SetupForm.txtLoopDll.Text + "\\loop.dll") &&
                SetupForm.chkAudioEnableVAC.Checked &&
                SetupForm.comboAudioInputVAC.Text == "loop.dll" &&
                SetupForm.comboAudioOutputVAC.Text == "loop.dll")
            {
                loopDLL = new LoopDLL(this);
                Audio.loopDLL_enabled = true;
            }
            else
                Audio.loopDLL_enabled = false;

            chkVFOSplit.Enabled = false;

            switch (current_model)
            {
                case Model.GENESIS_G59NET:
                case Model.GENESIS_G59USB:
                    if (SetupForm.chkG59RX2.Checked)
                        lblRX2.BackColor = Color.Red;
                    else
                        lblRX2.BackColor = NewBackgroundVFOColor;
                    break;

                case Model.GENESIS_G11:
                    if (SetupForm.chkG11RX2.Checked)
                        lblRX2.BackColor = Color.Red;
                    else
                        lblRX2.BackColor = NewBackgroundVFOColor;
                    break;
            }

            EQForm.RestoreSettings();
            band_button_height = radMoreBands.Height;
            band_button_width = radMoreBands.Width;
            AF_ValueChanged();
            SetupForm.MultimeterCalOffset = multimeter_cal_offset;
            SetupForm.DisplayCalOffset = display_cal_offset;
            FilterUpdate();
            PWR_ValueChanged();

            if (radMoreBands.Checked)
            {
                radMoreBands_Click(this, EventArgs.Empty);
            }

            IR_Remote_enabled = ir_remote_enabled;      // try WinLIRC
            SetTXOscFreqs(true, true);
            SetTXOscFreqs(false, true);

            SetupForm.ForceAllEvents();
        }
コード例 #2
0
ファイル: console.cs プロジェクト: Dfinitski/genesisradio
        public void btnCWX6_Click(object sender, EventArgs e)
        {
            if (btnCWX6.Checked && !cwx_playing && !TUN)
            {
                CWX_Playing = true;
                btnCWX1.Checked = false;
                btnCWX2.Checked = false;
                btnCWX3.Checked = false;
                btnCWX4.Checked = false;
                btnCWX5.Checked = false;
                btnCWX1.BackColor = SystemColors.Control;
                btnCWX2.BackColor = SystemColors.Control;
                btnCWX3.BackColor = SystemColors.Control;
                btnCWX4.BackColor = SystemColors.Control;
                btnCWX5.BackColor = SystemColors.Control;

                btnCWX6.BackColor = button_selected_color;
                if (CWXForm == null || CWXForm.IsDisposed)
                {
                    CWXForm = new CWX(this);
                    CWXForm.StartPosition = FormStartPosition.Manual;
                    CWXForm.RestoreSettings();
                }
                else
                    CWXForm.setup_timer();   // kick timer!
                CWXForm.s6_Click(sender, e);
            }
            else
            {
                CWX_Playing = false;
                if (CWXForm != null || !CWXForm.IsDisposed)
                {
                    CWXForm.stopButton_Click(sender, e);
                }
                CWXForm.stopButton_Click(sender, e);
                btnCWX6.BackColor = SystemColors.Control;
            }
        }
コード例 #3
0
ファイル: console.cs プロジェクト: Dfinitski/genesisradio
        private void mnuCWX_Click(object sender, System.EventArgs e)
        {
            if (current_dsp_mode == DSPMode.LSB)
                CurrentDSPMode = DSPMode.CWL;
            else if (current_dsp_mode == DSPMode.USB)
                CurrentDSPMode = DSPMode.CWU;

            if (current_dsp_mode != DSPMode.CWL &&
                current_dsp_mode != DSPMode.CWU)
            {
                MessageBox.Show("The radio must be in CWL or CWU mode in order to open the " +
                    "CWX Control Form.",
                    "CWX Error: Wrong Mode",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
                return;
            }

            //	cw_key_mode = true;
            if (CWXForm == null || CWXForm.IsDisposed)
            {
                CWXForm = new CWX(this);
                CWXForm.StartPosition = FormStartPosition.Manual;
                CWXForm.RestoreSettings();

                Win32.SetWindowPos(CWXForm.Handle.ToInt32(),
                    -1, this.Left, this.Top, CWXForm.Width, CWXForm.Height, 0);
            }

            btnCWX1.Checked = false;
            btnCWX2.Checked = false;
            btnCWX3.Checked = false;
            btnCWX4.Checked = false;
            btnCWX5.Checked = false;
            btnCWX6.Checked = false;
            CWXForm.stopButton_Click(null, null);
            CWXForm.Show();
            CWXForm.Focus();
            CWXForm.setup_timer();      // kick timer!  yt7pwr
        }
コード例 #4
0
ファイル: console.cs プロジェクト: Dfinitski/genesisradio
        private void udCWSpeed_ValueChanged(object sender, System.EventArgs e)
        {
            DttSP.SetKeyerSpeed((float)udCWSpeed.Value);
            ptbCWSpeed.Value = (int)udCWSpeed.Value;

            if ((current_model == Model.GENESIS_G59USB || current_model == Model.GENESIS_G11 ||
                CurrentModel == Model.GENESIS_G59NET || current_model == Model.GENESIS_G6) && !booting)
                SetupForm.G59CWSpeed = (int)udCWSpeed.Value;

            if (CWXForm == null || CWXForm.IsDisposed)
            {
                CWXForm = new CWX(this);
                CWXForm.StartPosition = FormStartPosition.Manual;
                CWXForm.RestoreSettings();
            }
            CWXForm.CWXWPM = (int)udCWSpeed.Value;

            if (EthCATIsActive)
                CAT_client_socket.ClientServerSync("ZZCS;");        // sync with server

            if (udCWSpeed.Focused) btnHidden.Focus();
        }
コード例 #5
0
ファイル: console.cs プロジェクト: ae6jl-mdd/powersdr-iq
        private void mnuCWX_Click(object sender, System.EventArgs e)
        {
            if(rx1_dsp_mode == DSPMode.LSB)
                RX1DSPMode = DSPMode.CWL;
            else if(rx1_dsp_mode == DSPMode.USB)
                RX1DSPMode = DSPMode.CWU;

            if(rx1_dsp_mode != DSPMode.CWL &&
                rx1_dsp_mode != DSPMode.CWU)
            {
                MessageBox.Show("The radio must be in CWL or CWU mode in order to open the "+
                    "CWX Control Form.",
                    "CWX Error: Wrong Mode",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
                return;
            }

            //	cw_key_mode = true;
            if(CWXForm == null || CWXForm.IsDisposed)
            {
                CWXForm = new CWX(this);
            }

            CWXForm.Show();
            CWXForm.Focus();
        }
コード例 #6
0
        public void CATCallback(string type, int parm1, int[] parm2, string parm3)
        {
            switch (type)
            {
                case "Restore":
                    if (this.WindowState == FormWindowState.Minimized)
                    {
                        this.WindowState = FormWindowState.Normal;
                        this.BringToFront();
                        this.Show();
                    }
                    else
                        this.WindowState = FormWindowState.Minimized;
                    break;
                case "AF":
                    AF = parm1;
                    break;
                case "AF_mute":
                    chkMUT.Checked = !chkMUT.Checked;
                    break;
                case "AF+":
                    AF += 1;
                    break;
                case "AF-":
                    AF -= 1;
                    break;
                case "RF":
                    RF = parm1;
                    break;
                case "MIC":
                    CATMIC = parm1;
                    break;
                case "CW Monitor":
                    CATCWMonitor = parm1.ToString();
                    break;
                case "CW Speed":
                    CATCWSpeed = parm1;
                    break;
                case "CW Pitch":
                    SetupForm.CATCWPitch = parm1;
                    break;
                case "BreakIn Delay":
                    BreakInDelay = parm1;
                    break;
                case "BreakIn":
                    if (parm1 == 1)
                        BreakInEnabled = true;
                    else
                        BreakInEnabled = false;
                    break;
                case "Show CW TXfreq":
                    if (parm1 == 1)
                        ShowCWTXFreq = true;
                    else
                        ShowCWTXFreq = false;
                    break;
                case "Show TXfreq":
                    if (parm1 == 1)
                        ShowTXFilter = true;
                    else
                        ShowTXFilter = false;
                    break;
                case "CW Iambic":
                    if (parm1 == 1)
                        CWIambic = true;
                    else
                        CWIambic = false;
                    break;
                case "COMP":
                    if (parm1 == 1)
                        COMP = true;
                    else
                        COMP = false;
                    break;
                case "COMP Threshold":
                    SetupForm.CATCompThreshold = parm1;
                    break;
                case "COMP level":
                    parm1 = (int)Math.Min(udCOMP.Maximum, parm1);
                    parm1 = (int)Math.Max(udCOMP.Minimum, parm1);
                    udCOMP.Value = parm1;
                    break;
                case "CMPD":
                    CATCmpd = parm1;
                    break;
                case "CPDR":
                    CPDRVal = parm1;
                    break;
                case "VOX":
                    if (parm1 == 1)
                        VOXEnable = true;
                    else
                        VOXEnable = false;
                    break;
                case "VOX Gain":
                    VOXSens = parm1;
                    break;
                case "DSP Mode VFOA":
                    CurrentDSPMode = (DSPMode)parm1;
                    break;
                case "DSP Mode VFOB":
                    CurrentDSPModeSubRX = (DSPMode)parm1;
                    break;
                case "AGC mode":
                    CurrentAGCMode = (AGCMode)parm1;
                    break;
                case "Filter":
                    CurrentFilter = (Filter)parm1;
                    break;
                case "Filter Width":
                    CATFilterWidth = parm1;
                    break;
                case "Filter Shift":
                    CATFilterShift = parm1;
                    break;
                case "Filter Low":
                    FilterLowValue = parm1;
                    UpdateFilters(parm1, FilterHighValue);
                    break;
                case "Filter High":
                    FilterHighValue = parm1;
                    UpdateFilters(FilterLowValue, parm1);
                    break;
                case "Filter VFOB":
                    CurrentFilter = (Filter)parm1;
                    break;
                case "TXFilter High":
                    SetupForm.TXFilterHigh = parm1;
                    break;
                case "TXFilter Low":
                    SetupForm.TXFilterLow = parm1;
                    break;
                case "SQL VFOA":
                    SquelchMainRX = parm1;
                    break;
                case "SQL VFOA Enable":
                    CATSquelch = parm1;
                    break;
                case "SQL VFOB":
                    SquelchSubRX = parm1;
                    break;
                case "SQL VFOB Enable":
                    CATSquelchSubRX = parm1;
                    break;
                case "CWX Remote Msg":
                    byte[] msg = new byte[parm2.Length];

                    for (int i = 0; i < msg.Length; i++)
                        msg[i] = (byte)parm2[i];

                    CWXForm.RemoteMessage(msg);
                    break;
                case "CWX Stop":
                    CWX_Playing = false;
                    break;
                case "CWX Start":
                    if (CWXForm == null || CWXForm.IsDisposed)
                    {
                        try
                        {
                            CWXForm = new CWX(this);
                        }
                        catch (Exception ex)
                        {
                            Debug.Write(ex.ToString());
                        }
                    }
                    break;
                case "PWR":
                    PWR = parm1;
                    break;
                case "RIT Up":
                    break;
                case "RIT Down":
                    RITValue -= parm1;
                    break;
                case "RIT Clear":
                    RITValue = 0;
                    break;
                case "RIT Enable":
                    if (parm1 == 1)
                        RITOn = true;
                    else
                        RITOn = false;
                    break;
                case "RIT Value":
                    RITValue = parm1;
                    break;
                case "XIT Up":
                    break;
                case "XIT Down":
                    break;
                case "XIT Status":
                    if (parm1 == 1)
                        XITOn = true;
                    else
                        XITOn = false;
                    break;
                case "XIT Value":
                    XITValue = parm1;
                    break;
                case "StepSize VFOA":
                    StepSize = parm1;
                    break;
                case "StepSize VFOA up":
                    CATTuneStepUp = parm1.ToString();
                    break;
                case "StepSize VFOA down":
                    CATTuneStepDown = parm1.ToString();
                    break;
                case "StepSize VFOB":
                    StepSizeSubRX = parm1;
                    break;
                case "VFOA down":
                    VFOAFreq = vfoAFreq - Step2Freq(parm1);
                    break;
                case "VFOA step down":
                    VFOAFreq = vfoAFreq - wheel_tune_list[StepSize];
                    break;
                case "VFOA step up":
                    VFOAFreq = vfoAFreq + wheel_tune_list[StepSize];
                    break;
                case "VFOA up":
                    VFOAFreq = vfoAFreq + Step2Freq(parm1);
                    break;
                case "VFOA freq":
                    VFOAFreq = double.Parse(parm3) / 1e6;
                    break;
                case "VFOB freq":
                    VFOBFreq = double.Parse(parm3) / 1e6;
                    break;
                case "VFOB down":
                    VFOAFreq = vfoBFreq - Step2Freq(parm1);
                    break;
                case "VFOB up":
                    VFOAFreq = vfoBFreq + Step2Freq(parm1);
                    break;
                case "VFO Lock":
                    if (parm1 == 1)
                        chkVFOLock.Checked = true;
                    else
                        chkVFOLock.Checked = false;
                    break;
                case "VFO Swap":
                    CATVFOSwap(parm1.ToString());
                    break;
                case "VFO mode":
                    CATVFOMODE = parm1;
                    break;
                case "BandGrp":
                    CATBandGroup = parm1;
                    break;
                case "BIN":
                    CATBIN = parm1;
                    break;
                case "DisplayAVG":
                    CATDisplayAvg = parm1;
                    break;
                case "Display Mode":
                    //CurrentDisplayMode = (DisplayMode)parm1;
                    comboDisplayMode.Text = "Panafall";
                    break;
                case "Display Peak":
                    CATDispPeak = parm1.ToString();
                    break;
                case "Display Zoom":
                    CATDispZoom = parm1.ToString();
                    break;
                case "DX":
                    CATPhoneDX = parm1.ToString();
                    break;
                case "RX EQU":
                    EQForm.RXEQ = parm2;
                    break;
                case "RX EQU Enable":
                    if (parm1 == 1)
                        EQForm.RXEQEnabled = true;
                    else
                        EQForm.RXEQEnabled = false;
                    break;
                case "TX EQU":
                    EQForm.TXEQ = parm2;
                    break;
                case "TX EQU Enable":
                    if (parm1 == 1)
                        EQForm.TXEQEnabled = true;
                    else
                        EQForm.TXEQEnabled = false;
                    break;
                case "Power":
                    if (parm1 == 1)
                        chkPower.Checked = true;
                    else
                        chkPower.Checked = false;
                    break;
                case "Power toggle":
                    chkPower.Checked = !chkPower.Checked;
                    break;
                case "Memory Recall":
                    CATMemoryQR();
                    break;
                case "Memory Save":
                    CATMemoryQS();
                    break;
                case "RTTY OffsetHigh":
                    SetupForm.RttyOffsetHigh = parm1;
                    break;
                case "RTTY OffsetLow":
                    SetupForm.RttyOffsetLow = parm1;
                    break;
                case "SUB RX Enable":
                    if (parm1 == 1)
                        EnableSubRX = true;
                    else
                        EnableSubRX = false;
                    break;
                case "MOX":
                    if (parm1 == 1)
                        MOX = true;
                    else
                        MOX = false;
                    break;
                case "RXOnly":
                    if (parm1 == 1)
                        SetupForm.RXOnly = true;
                    else
                        SetupForm.RXOnly = false;
                    break;
                case "TUN Power":
                    SetupForm.TunePower = parm1;
                    break;
                case "TX Profile":
                    CATTXProfile = parm1;
                    break;
                case "TUN Enable":
                    if (parm1 == 1)
                        TUN = true;
                    else
                        TUN = false;
                    break;
                case "VAC":
                    if (parm1 == 1)
                        SetupForm.VACEnable = true;
                    else
                        SetupForm.VACEnable = false;
                    break;
                case "VAC RX gain":
                    VACRXGain = parm1;
                    break;
                case "VAC TX gain":
                    VACTXGain = parm1;
                    break;
                case "VAC SampleRate":
                    VACSampleRate = parm1.ToString();
                    break;
                case "CAT Serial Destroy":
                    Siolisten.SIO.run = false;
                    Siolisten.SIO.rx_event.Set();
                    Siolisten.SIO.Destroy();
                    break;
                case "Band set":
                    CurrentBand = (Band)parm1;
                    break;
                case "Band up":
                    int band = Math.Min((int)Band.LAST, (int)(current_band + 1));
                    CurrentBand = (Band)band;
                    break;
                case "Band down":
                    band = Math.Max((int)Band.FIRST, (int)(current_band - 1));
                    CurrentBand = (Band)band;
                    break;
                case "Meter RXMode":
                    CurrentMeterRXMode = (MeterRXMode)parm1;
                    break;
                case "Meter TXMode":
                    CurrentMeterTXMode = (MeterTXMode)parm1;
                    break;
                case "AF preamp":
                    if (parm1 == 1)
                        AF_button = true;
                    else
                        AF_button = false;
                    break;
                case "RF preamp":
                    CATRFPreampStatus = parm1;
                    break;
                case "ATT":
                    if (parm1 == 1)
                        ATT_button = true;
                    else
                        ATT_button = false;
                    break;
                case "Noise Gate":
                    if (parm1 == 1)
                        NoiseGateEnabled = true;
                    else
                        NoiseGateEnabled = false;
                    break;
                case "Noise Gate Level":
                    NoiseGate = parm1;
                    break;
                case "DSP Size":
                    SetupForm.DSPBufferSize = parm1;
                    break;
                case "MUT":
                    if (parm1 == 1)
                        MUT = true;
                    else
                        MUT = false;
                    break;
                case "MON":
                    if (parm1 == 1)
                        MON = true;
                    else
                        MON = false;
                    break;
                case "PAN Swap":
                    //CATPanSwap = parm1.ToString();
                    break;
                case "SUB Rx":
                    CATSubRX = parm1.ToString();
                    break;
                case "NB1":
                    CATNB1 = parm1;
                    break;
                case "NB1 Threshold":
                    SetupForm.CATNB1Threshold = parm1;
                    break;
                case "NB2":
                    CATNB2 = parm1;
                    break;
                case "NB2 Threshold":
                    SetupForm.CATNB2Threshold = parm1;
                    break;
                case "NR":
                    CATNR = parm1;
                    break;
                case "NR gain":
                    CATNRgain = parm1;
                    break;
                case "ANF":
                    CATANF = parm1;
                    break;
                case "ANF gain":
                    CATNOTCHgain = parm1;
                    break;
                case "NOTCH manual":
                    CATNOTCHManual = parm1;
                    break;
                case "NOTCH manual enable":
                    CATNOTCHenable = parm1;
                    break;
                case "RPT tone":
                    if (parm1 == 1)
                        CTCSS = true;
                    else
                        CTCSS = false;
                    break;
                case "SPLIT":
                    switch (parm1)
                    {
                        case 0:             // SPLIT disable
                            SplitAB_TX = false;
                            break;

                        case 1:             // SPLIT enable
                            SplitAB_TX = true;
                            break;

                        case 0x10:          // cancel DUPLEX
                            RPTRmode = RPTRmode.simplex;
                            break;

                        case 0x11:          // DUP-
                            RPTRmode = RPTRmode.low;
                            break;

                        case 0x12:          // DUP+
                            RPTRmode = RPTRmode.high;
                            break;
                    }
                    break;
                case "Memory up":
                    if (MemoryNumber < 99)
                        MemoryNumber++;
                    else if (MemoryNumber == 99)
                        MemoryNumber = 1;

                    txtMemory_fill();
                    break;
                case "Memory down":
                    if (MemoryNumber > 1)
                        MemoryNumber--;
                    else if (MemoryNumber == 1)
                        MemoryNumber = 99;

                    txtMemory_fill();
                    break;
                case "Memory recall":
                    btnMemoryQuickRestore_Click(this, EventArgs.Empty);
                    break;
                case "Memory store":
                    btnMemoryQuickSave_Click(this, EventArgs.Empty);
                    break;
                case "Memory clear":
                    btnEraseMemory_Click(this, EventArgs.Empty);
                    break;
                case "Restore VFOA":
                    btnVFOA_Click(this, EventArgs.Empty);
                    break;
                case "USB":
                    if (parm1 == 1)
                        btnUSB.BackColor = Color.Green;
                    else
                        btnUSB.BackColor = Color.Red;
                    break;
                case "CLOSE":
                    this.Close();
                    break;
            }
        }