コード例 #1
0
ファイル: console.cs プロジェクト: Dfinitski/genesisradio
        private void chkMOX_CheckedChanged(object sender, System.EventArgs e)  // changes yt7pwr
        {
            double freq = 0.0;
            bool tx = chkMOX.Checked;

            if (rx_only || current_dsp_mode == DSPMode.WFM)
            {
                chkMOX.Checked = false;
                return;
            }

            if (chkVFOSplit.Checked)
                freq = Math.Round(vfoBFreq, 6);
            else
                freq = Math.Round(vfoAFreq, 6);

            if (chkXIT.Checked)
                freq += (int)udXIT.Value * 0.000001;

            if (tx && !IsHamBand(current_band_plan, freq))	// out of band?
            {
                if (CWX_Playing)
                {
                    CWX_Playing = false;
                    btnCWX1.Checked = false;        // stop CWX!
                    btnCWX2.Checked = false;
                    btnCWX3.Checked = false;
                    btnCWX4.Checked = false;
                    btnCWX5.Checked = false;
                    btnCWX6.Checked = false;
                    btnCWX1_Click(null, null);
                    btnCWX2_Click(null, null);
                    btnCWX3_Click(null, null);
                    btnCWX4_Click(null, null);
                    btnCWX5_Click(null, null);
                    btnCWX6_Click(null, null);
                }

                if (VoiceMsgPlayback)
                {
                    if (grpModeSpecificFM.Visible)
                    {
                        chkFMMsg1.Checked = false;
                        chkFMMsg2.Checked = false;
                        chkFMMsg3.Checked = false;
                        chkFMMsg4.Checked = false;
                        chkFMMsg5.Checked = false;
                        chkFMMsg6.Checked = false;
                        chkFMMsg1_CheckedChanged(this, EventArgs.Empty);
                        chkFMMsg2_CheckedChanged(this, EventArgs.Empty);
                        chkFMMsg3_CheckedChanged(this, EventArgs.Empty);
                        chkFMMsg4_CheckedChanged(this, EventArgs.Empty);
                        chkFMMsg5_CheckedChanged(this, EventArgs.Empty);
                        chkFMMsg6_CheckedChanged(this, EventArgs.Empty);
                    }
                    else
                    {
                        btnMsg1.Checked = false;            // stop VoiceMsg!
                        btnMsg2.Checked = false;
                        btnMsg3.Checked = false;
                        btnMsg4.Checked = false;
                        btnMsg5.Checked = false;
                        btnMsg6.Checked = false;
                        btnMsg1_Click(null, null);
                        btnMsg2_Click(null, null);
                        btnMsg3_Click(null, null);
                        btnMsg4_Click(null, null);
                        btnMsg5_Click(null, null);
                        btnMsg6_Click(null, null);
                    }
                }

                MessageBox.Show("The frequency " + freq.ToString("f6") + "MHz is not within the " +
                    "IARU Band specifications.",
                    "Transmit Error: Out Of Band",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
                chkMOX.Checked = false;
                return;
            }

            ////////////////////////  TX  /////////////////////////////////////////////////

            if (tx)
            {
                if (Audio.voice_message_record && VoiceMsgForm != null)
                {
                    VoiceMsgForm.RecordingEnd = true;
                    Thread.Sleep(100);
                }

                MOX = true;
                SetTXOscFreqs(tx, true);

                saved_spectrum_grid_max = Display_GDI.SpectrumGridMax;

                if (chkVFOSplit.Checked)
                {
                    if (current_dsp_mode_subRX != DSPMode.CWU && current_dsp_mode_subRX != DSPMode.CWL)
                    {
                        Display_GDI.SpectrumGridMax = 0;

#if(DirectX)
                        Display_DirectX.SpectrumGridMax = 0;
#endif
                    }

                    int i = 0;
                    previous_filter = current_filter;

                    if (SetupForm.DSP_BufferSize(current_dsp_mode) == SetupForm.DSP_BufferSize(current_dsp_mode_subRX))
                    {
                        Audio.CurDSPMode = current_dsp_mode_subRX;
                        i = DttSP.SetTXMode(thread_no, current_dsp_mode_subRX);
                        if (i != 0)
                            MessageBox.Show("Error in DttSP.SetTXMode: " + i);
                    }
                    else
                    {
                        MessageBox.Show("DSP buffer size must be equal!");
                    }

                    Display_GDI.CurrentDSPModeSubRX = current_dsp_mode_subRX;
#if(DirectX)
                    Display_DirectX.CurrentDSPModeSubRX = current_dsp_mode_subRX;
#endif
                    switch (current_dsp_mode_subRX)
                    {
                        case (DSPMode.CWL):
                        case (DSPMode.CWU):
                            {
                                if (current_display_mode != DisplayMode.PANASCOPE || 
                                    current_display_mode != DisplayMode.SCOPE)
                                    pause_DisplayThread = true;

                                cw_key_mode = true;
                                DttSP.CWRingRestart();
                            }
                            break;
                        case DSPMode.DRM:
                            chkMOX.Checked = false;
                            return;
                            break;
                        default:  // for Phone modes save Zoom and Pan
                            {
                                cw_key_mode = false;
                                saved_tbDisplayZoom = ptbDisplayZoom.Value;
                                saved_tbDisplayPan = ptbDisplayPan.Value;
                                ptbDisplayPan.Value = 0;
                                ptbDisplayZoom.Value = 4;
                                CalcDisplayFreq();
                            }
                            break;
                    }
                }
                else
                {
                    if (current_dsp_mode != DSPMode.CWU && current_dsp_mode != DSPMode.CWL)
                    {
                        Display_GDI.SpectrumGridMax = 0;

#if(DirectX)
                        Display_DirectX.SpectrumGridMax = 0;
#endif
                    }

                    int i = 0;
                    Audio.CurDSPMode = current_dsp_mode;
                    i = DttSP.SetTXMode(thread_no, current_dsp_mode);
                    if (i != 0)
                        MessageBox.Show("Error in DttSP.SetTXMode: " + i);

                    Display_GDI.CurrentDSPMode = current_dsp_mode;
#if(DirectX)
                    Display_DirectX.CurrentDSPModeSubRX = current_dsp_mode_subRX;
#endif
                    switch (current_dsp_mode)
                    {
                        case (DSPMode.CWL):
                        case (DSPMode.CWU):
                            {
                                if (current_display_mode != DisplayMode.PANASCOPE &&
                                    current_display_mode != DisplayMode.SCOPE)
                                    pause_DisplayThread = true;

                                cw_key_mode = true;
                                DttSP.CWRingRestart();
                            }
                            break;
                        default:  // for Phone modes save Zoom and Pan
                            {
                                cw_key_mode = false;
                                saved_tbDisplayZoom = ptbDisplayZoom.Value;
                                saved_tbDisplayPan = ptbDisplayPan.Value;
                                CalcDisplayFreq();
                            }
                            break;
                    }
                }

                comboMeterTXMode_SelectedIndexChanged(sender, e);

                if (radBand60.BackColor == button_selected_color &&
                    current_dsp_mode != DSPMode.USB && !extended)
                {
                    if (CWX_Playing)
                    {
                        btnCWX1.Checked = false;    // stop CWX!
                        btnCWX2.Checked = false;
                        btnCWX3.Checked = false;
                        btnCWX4.Checked = false;
                        btnCWX5.Checked = false;
                        btnCWX6.Checked = false;
                        btnCWX1_Click(null, null);
                        btnCWX2_Click(null, null);
                        btnCWX3_Click(null, null);
                        btnCWX4_Click(null, null);
                        btnCWX5_Click(null, null);
                        btnCWX6_Click(null, null);
                    }

                    if (VoiceMsgPlayback)
                    {
                        if (grpModeSpecificFM.Visible)
                        {
                            chkFMMsg1.Checked = false;
                            chkFMMsg2.Checked = false;
                            chkFMMsg3.Checked = false;
                            chkFMMsg4.Checked = false;
                            chkFMMsg5.Checked = false;
                            chkFMMsg6.Checked = false;
                            chkFMMsg1_CheckedChanged(this, EventArgs.Empty);
                            chkFMMsg2_CheckedChanged(this, EventArgs.Empty);
                            chkFMMsg3_CheckedChanged(this, EventArgs.Empty);
                            chkFMMsg4_CheckedChanged(this, EventArgs.Empty);
                            chkFMMsg5_CheckedChanged(this, EventArgs.Empty);
                            chkFMMsg6_CheckedChanged(this, EventArgs.Empty);
                        }
                        else
                        {
                            btnMsg1.Checked = false;    // stop VoiceMsg!
                            btnMsg2.Checked = false;
                            btnMsg3.Checked = false;
                            btnMsg4.Checked = false;
                            btnMsg5.Checked = false;
                            btnMsg6.Checked = false;
                            btnMsg1_Click(null, null);
                            btnMsg2_Click(null, null);
                            btnMsg3_Click(null, null);
                            btnMsg4_Click(null, null);
                            btnMsg5_Click(null, null);
                            btnMsg6_Click(null, null);
                        }
                    }

                    MessageBox.Show(DttSP.CurrentMode.ToString() + " mode is not allowed on 60M band.",
                        "Transmit Error: Mode/Band",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Error);
                    chkMOX.Checked = false;
                    return;
                }

                AudioMOXChanged(tx);

                if (genesis_ext_PA_present)
                {
                    Thread.Sleep(ExtPA_PTT_Delay_ON);

                    if (current_model == Model.GENESIS_G59USB)
                        g59.WriteToDevice(30, 1);
                    else if (current_model == Model.GENESIS_G6)
                        g6.WriteToDevice(30, 1);
                    else if (current_model == Model.GENESIS_G11)
                        g11.WriteToDevice(30, 1);
                    else if (current_model == Model.GENESIS_G59NET)
                        net_device.WriteToDevice(30, 1);
                }

                switch (current_model)
                {
                    case Model.GENESIS_G6:
                        {
                            //Thread.Sleep(1);

                            if (chkVFOSplit.Checked)
                            {
                                if (line_mic_shared && current_dsp_mode_subRX != DSPMode.CWU &&
                                    current_dsp_mode_subRX != DSPMode.CWL)
                                    g6.WriteToDevice(26, 1);
                                else
                                    g6.WriteToDevice(26, 0);
                            }
                            else
                            {
                                if (line_mic_shared && current_dsp_mode != DSPMode.CWU &&
                                    current_dsp_mode != DSPMode.CWL)
                                    g6.WriteToDevice(26, 1);
                                else
                                    g6.WriteToDevice(26, 0);
                            }

                            g6.WriteToDevice(13, TXSwitchTime / 3);
                            g6.MUTE = true;
                        }
                        break;
                    case Model.GENESIS_G59USB:
                        {
                            Thread.Sleep(1);

                            if (chkVFOSplit.Checked)
                            {
                                if (line_mic_shared && current_dsp_mode_subRX != DSPMode.CWU &&
                                    current_dsp_mode_subRX != DSPMode.CWL)
                                    g59.WriteToDevice(26, 1);
                                else
                                    g59.WriteToDevice(26, 0);
                            }
                            else
                            {
                                if (line_mic_shared && current_dsp_mode != DSPMode.CWU &&
                                    current_dsp_mode != DSPMode.CWL)
                                    g59.WriteToDevice(26, 1);
                                else
                                    g59.WriteToDevice(26, 0);
                            }

                            g59.WriteToDevice(13, TXSwitchTime / 3);
                        }
                        break;
                    case Model.GENESIS_G59NET:
                        {
                            if (chkVFOSplit.Checked)
                            {
                                if (line_mic_shared && current_dsp_mode_subRX != DSPMode.CWU &&
                                    current_dsp_mode_subRX != DSPMode.CWL)
                                    net_device.WriteToDevice(26, 1);
                                else
                                    net_device.WriteToDevice(26, 0);
                            }
                            else
                            {
                                if (line_mic_shared && current_dsp_mode != DSPMode.CWU &&
                                    current_dsp_mode != DSPMode.CWL)
                                    net_device.WriteToDevice(26, 1);
                                else
                                    net_device.WriteToDevice(26, 0);
                            }

                            net_device.WriteToDevice(13, TXSwitchTime / 3);                // delayed transmiter ON for G59NET
                        }
                        break;
                    case Model.GENESIS_G11:
                        {
                            if (chkVFOSplit.Checked)
                            {
                                if (line_mic_shared && current_dsp_mode_subRX != DSPMode.CWU &&
                                    current_dsp_mode_subRX != DSPMode.CWL)
                                    g11.WriteToDevice(26, 1);
                                else
                                    g11.WriteToDevice(26, 0);
                            }
                            else
                            {
                                if (line_mic_shared && current_dsp_mode != DSPMode.CWU &&
                                    current_dsp_mode != DSPMode.CWL)
                                    g11.WriteToDevice(26, 1);
                                else
                                    g11.WriteToDevice(26, 0);
                            }

                            g11.WriteToDevice(13, TXSwitchTime / 3);
                        }
                        break;
                    case Model.QRP2000:
                        {
                            int[] tmp = new int[1];
                            Thread.Sleep(TXSwitchTime);
                            qrp2000.SetPTTGetCWInput(1, tmp);
                        }
                        break;
                    default:
                        {
                            if (Keyer.sp.IsOpen)                                 // connection to Genesis G**
                                Keyer.enable_tx(true);
                        }
                        break;
                }

                if (usb_si570_enable)
                    SI570.SetTX(true);

#if(DirectX)
                Display_DirectX.RefreshPanadapterGrid = true;
#endif
            }

/////////////////////////////// RX  ///////////////////////////////////////////////////////

            else
            {
                MOX = false;
                manual_mox = false;
                CWX_Playing = false;

                switch (current_model)
                {
                    case Model.GENESIS_G6:
                        {
                            g6.MUTE = false;
                            g6.KeyerNewData = false;
                            g6.WriteToDevice(26, 0);                               // Line input
                            g6.KEYER = 0xff;
                            g6.WriteToDevice(24, 0);                               //  CW monitor off
                            g6.WriteToDevice(14, 0);                               // transmiter OFF
                        }
                        break;
                    case Model.GENESIS_G59USB:
                        {
                            g59.KeyerNewData = false;
                            g59.WriteToDevice(26, 0);                               // Line input
                            g59.KEYER = 0xff;
                            Thread.Sleep(1);
                            g59.WriteToDevice(24, 0);                               //  CW monitor off
                            Thread.Sleep(1);
                            g59.WriteToDevice(14, 0);                               // transmiter OFF
                        }
                        break;
                    case Model.GENESIS_G59NET:
                        {
                            net_device.KeyerNewData = false;
                            net_device.WriteToDevice(26, 0);
                            net_device.WriteToDevice(24, 0);                        //  CW monitor off
                            net_device.WriteToDevice(14, 0);                        // transmiter OFF
                        }
                        break;
                    case Model.GENESIS_G11:
                        {
                            g11.KeyerNewData = false;
                            g11.WriteToDevice(26, 0);                               // Line input
                            g11.KEYER = 0xff;
                            Thread.Sleep(1);
                            g11.WriteToDevice(24, 0);                               //  CW monitor off
                            Thread.Sleep(1);
                            g11.WriteToDevice(14, 0);                               // transmiter OFF
                        }
                        break;
                    case Model.QRP2000:
                        {
                            int[] tmp = new int[1];
                            qrp2000.SetPTTGetCWInput(0, tmp);                       // transmiter off
                        }
                        break;
                    default:
                        {
                            if (Keyer.sp.IsOpen)
                                Keyer.enable_tx(false);
                        }
                        break;
                }

                if (genesis_ext_PA_present)
                {
                    Thread.Sleep(ExtPA_PTT_Delay_OFF);

                    if (current_model == Model.GENESIS_G59USB)
                        g59.WriteToDevice(30, 0);
                    else if (current_model == Model.GENESIS_G6)
                        g6.WriteToDevice(30, 0);
                    else if (current_model == Model.GENESIS_G11)
                        g11.WriteToDevice(30, 0);
                    else if (current_model == Model.GENESIS_G59NET)
                        net_device.WriteToDevice(30, 0);
                }

                if (!QSK)
                    FilterUpdate();

                avg_num = 0.0;                   // reset display average

                if (!chkVFOSplit.Checked && current_dsp_mode != DSPMode.CWL && current_dsp_mode != DSPMode.CWU)
                {
                    Display_GDI.SpectrumGridMax = saved_spectrum_grid_max;

#if(DirectX)
                    Display_DirectX.SpectrumGridMax = saved_spectrum_grid_max;
#endif
                }

                if (CWX_Playing)
                {
                    if (CWXForm.quit)
                    {
                        btnCWX1.Checked = false;    // stop CWX!
                        btnCWX2.Checked = false;
                        btnCWX3.Checked = false;
                        btnCWX4.Checked = false;
                        btnCWX5.Checked = false;
                        btnCWX6.Checked = false;
                        btnCWX1_Click(null, null);
                        btnCWX2_Click(null, null);
                        btnCWX3_Click(null, null);
                        btnCWX4_Click(null, null);
                        btnCWX5_Click(null, null);
                        btnCWX6_Click(null, null);
                    }
                }
                else if (VoiceMsgPlayback)
                {
                    VoiceMsgPlayback = false;
                    VoiceMsgForm.PlayStop = true;
                    Audio.voice_message_playback = false;

                    if (grpModeSpecificFM.Visible)
                    {
                        chkFMMsg1.Checked = false;
                        chkFMMsg2.Checked = false;
                        chkFMMsg3.Checked = false;
                        chkFMMsg4.Checked = false;
                        chkFMMsg5.Checked = false;
                        chkFMMsg6.Checked = false;
                        chkFMMsg1_CheckedChanged(this, EventArgs.Empty);
                        chkFMMsg2_CheckedChanged(this, EventArgs.Empty);
                        chkFMMsg3_CheckedChanged(this, EventArgs.Empty);
                        chkFMMsg4_CheckedChanged(this, EventArgs.Empty);
                        chkFMMsg5_CheckedChanged(this, EventArgs.Empty);
                        chkFMMsg6_CheckedChanged(this, EventArgs.Empty);
                    }
                    else
                    {
                        btnMsg1.Checked = false;    // stop VoiceMsg!
                        btnMsg2.Checked = false;
                        btnMsg3.Checked = false;
                        btnMsg4.Checked = false;
                        btnMsg5.Checked = false;
                        btnMsg6.Checked = false;
                        btnMsg1_Click(null, null);
                        btnMsg2_Click(null, null);
                        btnMsg3_Click(null, null);
                        btnMsg4_Click(null, null);
                        btnMsg5_Click(null, null);
                        btnMsg6_Click(null, null);
                    }
                }

                if (chkTUN.Checked)
                    chkTUN.Checked = false;

                if (vfo_new_look)
                    NewVFOSignalGauge.Value = 0.0f;
                else
                    AnalogSignalGauge.Value = 0.0f;

                if (chkVFOSplit.Checked)
                {
                    if (current_dsp_mode_subRX != DSPMode.CWL && current_dsp_mode_subRX != DSPMode.CWU)
                    {
                        Display_GDI.SpectrumGridMax = saved_spectrum_grid_max;

#if(DirectX)
                        Display_DirectX.SpectrumGridMax = saved_spectrum_grid_max;
#endif
                    }

                    switch (current_dsp_mode_subRX)
                    {
                        case (DSPMode.CWL):
                        case (DSPMode.CWU):
                            {
                                // do nothing
                            }
                            break;
                        default:  // for Phone modes restore Zoom and Pan
                            {
                                ptbDisplayZoom.Value = saved_tbDisplayZoom;
                                ptbDisplayPan.Value = saved_tbDisplayPan;
                                CalcDisplayFreq();
                            }
                            break;
                    }
                }
                else
                {
                    switch (current_dsp_mode)
                    {
                        case (DSPMode.CWL):
                        case (DSPMode.CWU):
                            {
                                // do nothing
                            }
                            break;
                        default:  // for Phone modes restore Zoom and Pan
                            {
                                ptbDisplayZoom.Value = saved_tbDisplayZoom;
                                ptbDisplayPan.Value = saved_tbDisplayPan;
                                CalcDisplayFreq();
                            }
                            break;
                    }
                }

                Audio.MonitorVolumeLeft = 0.0;
                Audio.MonitorVolumeRight = 0.0;
                AudioMOXChanged(tx);
                Audio.voice_message_playback = false;
                comboMeterRXMode_SelectedIndexChanged(sender, e);
                pause_DisplayThread = false;

                if (usb_si570_enable)
                    SI570.SetTX(false);

                AF_ValueChanged();
                SetTXOscFreqs(tx, true);
                current_ptt_mode = PTTMode.NONE;

                if (MultiPSKServer != null)
                    MultiPSKServer.IsPTT = false;

                Keyer.PrimaryKeyerMox = false;
                Keyer.SecondaryKeyerMox = false;
            }

            if (!QSK)
            {
                if (tx) mox_update_thread = new Thread(new ThreadStart(UIMOXChangedTrue));
                else mox_update_thread = new Thread(new ThreadStart(UIMOXChangedFalse));
                mox_update_thread.Name = "UIMOXChanged";
                mox_update_thread.IsBackground = true;
                mox_update_thread.Priority = ThreadPriority.Normal;
                mox_update_thread.Start();
            }

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

#if DirectX
            Display_DirectX.RefreshPanadapterGrid = true;
#endif

            btnHidden.Focus();
        }
コード例 #2
0
ファイル: console.cs プロジェクト: Dfinitski/genesisradio
        private void PollPTT()  // changes yt7pwr
        {
            bool mic_ptt = false;
            bool keyer_ptt = false;
            bool tune_ptt = false;
            bool local_cat_ptt = false;
            byte loop_dll_ptt = 0;
            bool MultiPSK_ptt = false;
            int[] ptt_tmp = new int[1];

            while (PowerOn)
            {
                if (!manual_mox && !disable_ptt && !ConsoleClosing)
                {
                    switch (current_model)
                    {
                        case (Model.GENESIS_G6):
                            {
                                mic_ptt = g6.MOX;
                            }
                            break;
                        case (Model.GENESIS_G59USB):
                            {
                                mic_ptt = g59.MOX;
                            }
                            break;
                        case (Model.GENESIS_G59NET):
                            {
                                mic_ptt = net_device.MOX;
                            }
                            break;
                        case (Model.GENESIS_G11):
                            {
                                mic_ptt = g11.MOX;
                            }
                            break;
                        case (Model.QRP2000):
                            {
                                if (qrp2000.connected)
                                {
                                    if (MOX)
                                        qrp2000.SetPTTGetCWInput(1, ptt_tmp);
                                    else
                                        qrp2000.SetPTTGetCWInput(0, ptt_tmp);

                                    if (Keyer.QRP2000CW1)
                                    {
                                        ptt_tmp[0] &= 0x20;
                                    }
                                    else if (Keyer.QRP2000CW2)
                                    {
                                        ptt_tmp[0] &= 0x02;
                                    }

                                    if (ptt_tmp[0] == 0x00)
                                        mic_ptt = true;
                                    else
                                        mic_ptt = false;
                                }
                            }
                            break;
                        default:
                            {
                                mic_ptt = Keyer.KeyerPTT;
                            }
                            break;
                    }

                    if (current_model == Model.GENESIS_G6)
                    {
                        keyer_ptt = (DttSP.KeyerPlaying() || g6.MOX);
                    }
                    else if (current_model == Model.GENESIS_G59USB)
                    {
                        keyer_ptt = (DttSP.KeyerPlaying() || g59.MOX);

                        if (ExtATU_present)
                            tune_ptt = g59.TUNE;
                    }
                    else if (current_model == Model.GENESIS_G59NET)
                    {
                        keyer_ptt = (DttSP.KeyerPlaying() || net_device.MOX);

                        if (ExtATU_present)
                            tune_ptt = net_device.TUNE;
                    }
                    else if (current_model == Model.GENESIS_G11)
                    {
                        keyer_ptt = (DttSP.KeyerPlaying() || g11.MOX);

                        if (ExtATU_present)
                            tune_ptt = g11.TUNE;
                    }
                    else
                        keyer_ptt = DttSP.KeyerPlaying();

                    bool cw_ptt = (CWSemiBreakInEnabled && keyer_ptt) | Keyer.KeyerPTT | Keyer.MemoryPTT;
                    bool vox_ptt = Audio.VOXActive;

                    if (Audio.loopDLL_enabled && loopDLL != null)
                        loop_dll_ptt = loopDLL.IsPTT();

                    if (MultiPSKServer.ClientConnected)
                        MultiPSK_ptt = MultiPSKServer.IsPTT;

                    if (PTTBitBangEnabled && serialPTT != null)
                        local_cat_ptt = serialPTT.isPTT();

                    if (cw_ptt) break_in_timer.Start();

                    if (!chkMOX.Checked)
                    {
                        if (tune_ptt && !chkTUN.Checked)
                        {
                            current_ptt_mode = PTTMode.ATU_TUNE;
                            chkTUN.Checked = true;
                        }
                        else if (local_cat_ptt || cat_ptt)
                        {
                            current_ptt_mode = PTTMode.CAT;
                            Keyer.PTTBitBangEnabled = true;
                            if (chkVFOSplit.Checked)
                            {
                                if (current_dsp_mode_subRX == DSPMode.CWL ||
                                    current_dsp_mode_subRX == DSPMode.CWU)
                                {
                                    chkMOX.Checked = true;

                                    if (!chkMOX.Checked)
                                    {
                                        chkPower.Checked = false;
                                        return;
                                    }
                                }
                                else
                                {
                                    chkMOX.Checked = true;

                                    if (!chkMOX.Checked)
                                    {
                                        chkPower.Checked = false;
                                        return;
                                    }
                                }
                            }
                            else
                            {
                                if (current_dsp_mode == DSPMode.CWL ||
                                    current_dsp_mode == DSPMode.CWU)
                                {
                                    chkMOX.Checked = true;
                                    if (!chkMOX.Checked)
                                    {
                                        chkPower.Checked = false;
                                        return;
                                    }
                                }
                                else
                                {
                                    chkMOX.Checked = true;
                                    if (!chkMOX.Checked)
                                    {
                                        chkPower.Checked = false;
                                        return;
                                    }
                                }
                            }
                        }
                        if (chkVFOSplit.Checked)
                        {
                            if ((current_dsp_mode_subRX == DSPMode.CWL ||
                                current_dsp_mode_subRX == DSPMode.CWU) && cw_ptt)
                            {
                                if ((Keyer.PrimaryConnPort == "USB" ||
                                    Keyer.PrimaryConnPort == "NET") &&
                                    Keyer.SecondaryConnPort == "None" &&
                                    !cw_semi_break_in_enabled)
                                {
                                    // do nothing
                                }
                                else
                                {
                                    current_ptt_mode = PTTMode.CW;
                                    chkMOX.Checked = true;
                                    if (!chkMOX.Checked)
                                    {
                                        chkPower.Checked = false;
                                        return;
                                    }
                                }
                            }
                        }
                        else
                        {
                            if ((current_dsp_mode == DSPMode.CWL ||
                                current_dsp_mode == DSPMode.CWU) && cw_ptt)
                            {
                                if ((Keyer.PrimaryConnPort == "USB" ||
                                    Keyer.PrimaryConnPort == "NET") &&
                                    Keyer.SecondaryConnPort == "None" &&
                                    !cw_semi_break_in_enabled)
                                {
                                    // do nothing
                                }
                                else
                                {
                                    if (cw_ptt)
                                        current_ptt_mode = PTTMode.CW;
                                    else if (mic_ptt)
                                        current_ptt_mode = PTTMode.MIC;
                                    chkMOX.Checked = true;
                                    if (!chkMOX.Checked)
                                    {
                                        chkPower.Checked = false;
                                        return;
                                    }
                                }
                            }
                        }

                        if (chkVFOSplit.Checked)
                        {
                            if ((current_dsp_mode_subRX == DSPMode.LSB ||
                            current_dsp_mode_subRX == DSPMode.USB ||
                            current_dsp_mode_subRX == DSPMode.DSB ||
                            current_dsp_mode_subRX == DSPMode.AM ||
                            current_dsp_mode_subRX == DSPMode.SAM ||
                            current_dsp_mode_subRX == DSPMode.DIGU ||
                            current_dsp_mode_subRX == DSPMode.DIGL ||
                            current_dsp_mode_subRX == DSPMode.FMN) && mic_ptt)
                            {
                                current_ptt_mode = PTTMode.MIC;
                                chkMOX.Checked = true;
                                if (!chkMOX.Checked)
                                {
                                    chkPower.Checked = false;
                                    return;
                                }
                            }
                        }
                        else
                        {
                            if ((current_dsp_mode == DSPMode.LSB ||
                                current_dsp_mode == DSPMode.USB ||
                                current_dsp_mode == DSPMode.DSB ||
                                current_dsp_mode == DSPMode.AM ||
                                current_dsp_mode == DSPMode.SAM ||
                                current_dsp_mode == DSPMode.DIGU ||
                                current_dsp_mode == DSPMode.DIGL ||
                                current_dsp_mode == DSPMode.FMN) && mic_ptt)
                            {
                                current_ptt_mode = PTTMode.MIC;
                                chkMOX.Checked = true;
                                if (!chkMOX.Checked)
                                {
                                    chkPower.Checked = false;
                                    return;
                                }
                            }
                        }

                        if (chkVFOSplit.Checked)
                        {
                            if ((current_dsp_mode_subRX == DSPMode.LSB ||
                                current_dsp_mode_subRX == DSPMode.USB ||
                                current_dsp_mode_subRX == DSPMode.DSB ||
                                current_dsp_mode_subRX == DSPMode.AM ||
                                current_dsp_mode_subRX == DSPMode.SAM ||
                                current_dsp_mode_subRX == DSPMode.DIGU ||
                                current_dsp_mode_subRX == DSPMode.DIGL ||
                                current_dsp_mode_subRX == DSPMode.FMN) &&
                                vox_ptt)
                            {
                                current_ptt_mode = PTTMode.VOX;
                                vox_timer.Start();
                                chkMOX.Checked = true;
                                if (!chkMOX.Checked)
                                {
                                    chkPower.Checked = false;
                                    return;
                                }
                            }
                        }
                        else
                        {
                            if ((current_dsp_mode == DSPMode.LSB ||
                                current_dsp_mode == DSPMode.USB ||
                                current_dsp_mode == DSPMode.DSB ||
                                current_dsp_mode == DSPMode.AM ||
                                current_dsp_mode == DSPMode.SAM ||
                                current_dsp_mode == DSPMode.DIGU ||
                                current_dsp_mode == DSPMode.DIGL ||
                                current_dsp_mode == DSPMode.FMN) &&
                                vox_ptt)
                            {
                                current_ptt_mode = PTTMode.VOX;
                                vox_timer.Start();
                                chkMOX.Checked = true;
                                if (!chkMOX.Checked)
                                {
                                    chkPower.Checked = false;
                                    return;
                                }
                            }
                        }

                        if (MultiPSK_ptt)
                        {
                            if (current_dsp_mode == DSPMode.USB ||
                                current_dsp_mode == DSPMode.DIGU
                                )
                            {
                                current_ptt_mode = PTTMode.MULTI_PSK;
                                chkMOX.Checked = true;
                                if (!chkMOX.Checked)
                                {
                                    chkPower.Checked = false;
                                    return;
                                }
                            }
                        }

                        if (loop_dll_ptt == 1)
                        {
                            if (current_dsp_mode == DSPMode.USB ||
                                current_dsp_mode == DSPMode.DIGU
                                )
                            {
                                current_ptt_mode = PTTMode.LOOP_DLL;
                                chkMOX.Checked = true;
                                if (!chkMOX.Checked)
                                {
                                    chkPower.Checked = false;
                                    return;
                                }
                            }
                        }
                    }
                    else
                    {
                        switch (current_ptt_mode)
                        {
                            case PTTMode.ATU_TUNE:
                                if (!tune_ptt)
                                    chkTUN.Checked = false;
                                break;
                            case PTTMode.LOOP_DLL:
                                if (loop_dll_ptt != 1)
                                    chkMOX.Checked = false;
                                break;
                            case PTTMode.MULTI_PSK:
                                if (!MultiPSKServer.IsPTT)
                                    chkMOX.Checked = false;
                                break;
                            case PTTMode.CAT:
                                if (!local_cat_ptt && !cat_ptt)
                                {
                                    Keyer.PTTBitBangEnabled = false;
                                    chkMOX.Checked = false;
                                }
                                break;
                            case PTTMode.MIC:
                                if (!mic_ptt)
                                    chkMOX.Checked = false;
                                break;
                            case PTTMode.CW:
                                if (!cw_ptt)
                                {
                                    if (cw_semi_break_in_enabled)
                                    {
                                        break_in_timer.Stop();
                                        if (break_in_timer.DurationMsec > break_in_delay)
                                        {
                                            chkMOX.Checked = false;
                                            if (!CWXForm.running)
                                            {
                                                btnCWX1.Checked = false;
                                                btnCWX2.Checked = false;
                                                btnCWX3.Checked = false;
                                                btnCWX4.Checked = false;
                                                btnCWX5.Checked = false;
                                                btnCWX6.Checked = false;
                                                btnCWX1.BackColor = SystemColors.Control;
                                                btnCWX2.BackColor = SystemColors.Control;
                                                btnCWX3.BackColor = SystemColors.Control;
                                                btnCWX4.BackColor = SystemColors.Control;
                                                btnCWX5.BackColor = SystemColors.Control;
                                                btnCWX6.BackColor = SystemColors.Control;
                                            }
                                        }
                                    }
                                    else
                                    {
                                        break_in_timer.Stop();
                                        if (break_in_timer.DurationMsec > 43)
                                        {
                                            chkMOX.Checked = false;
                                            if (!CWXForm.running)
                                            {
                                                btnCWX1.Checked = false;
                                                btnCWX2.Checked = false;
                                                btnCWX3.Checked = false;
                                                btnCWX4.Checked = false;
                                                btnCWX5.Checked = false;
                                                btnCWX6.Checked = false;
                                                btnCWX1.BackColor = SystemColors.Control;
                                                btnCWX2.BackColor = SystemColors.Control;
                                                btnCWX3.BackColor = SystemColors.Control;
                                                btnCWX4.BackColor = SystemColors.Control;
                                                btnCWX5.BackColor = SystemColors.Control;
                                                btnCWX6.BackColor = SystemColors.Control;
                                            }
                                        }
                                    }
                                }
                                break;
                            case PTTMode.VOX:
                                if (!vox_ptt)
                                {
                                    vox_timer.Stop();
                                    if (vox_timer.DurationMsec > vox_hang_time)
                                        chkMOX.Checked = false;
                                }
                                else vox_timer.Start();
                                break;
                        }
                    }
                }

                Thread.Sleep(1);
            }
        }
コード例 #3
0
ファイル: console.cs プロジェクト: ae6jl-mdd/powersdr-iq
        private void chkTUN_CheckedChanged(object sender, System.EventArgs e)
        {
            if(chkTUN.Checked)
            //			if(!tuning && chkPower.Checked)
            {
                if(!chkPower.Checked)
                {
                    MessageBox.Show("Power must be on to turn on the Tune function.",
                        "Power is off",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Hand);
                    chkTUN.Checked = false;
                    return;
                }

                tuning = true;

                chkTUN.BackColor = button_selected_color;

                if(current_meter_tx_mode != tune_meter_tx_mode)
                {
                    old_tune_meter_tx_mode = current_meter_tx_mode;
                    CurrentMeterTXMode = tune_meter_tx_mode;
                    comboMeterTXMode_SelectedIndexChanged(this, EventArgs.Empty);
                }

                switch(rx1_dsp_mode)
                {
                    case DSPMode.USB:
                    case DSPMode.CWU:
                    case DSPMode.DIGU:
                        Audio.SineFreq1 = cw_pitch;
                        DttSP.SetTXFilter(1, cw_pitch-100, cw_pitch+100);
                        Audio.TXInputSignal = Audio.SignalSource.SINE;
                        Audio.SourceScale = 1.0;
                        break;
                    case DSPMode.LSB:
                    case DSPMode.CWL:
                    case DSPMode.DIGL:
                        Audio.SineFreq1 = cw_pitch;
                        DttSP.SetTXFilter(1, -cw_pitch-100, -cw_pitch+100);
                        Audio.TXInputSignal = Audio.SignalSource.SINE;
                        Audio.SourceScale = 1.0;
                        break;
                    case DSPMode.DSB:
                        Audio.SineFreq1 = cw_pitch;
                        DttSP.SetTXFilter(1, cw_pitch-100, cw_pitch+100);
                        Audio.TXInputSignal = Audio.SignalSource.SINE;
                        Audio.SourceScale = 1.0;
                        break;
                    case DSPMode.AM:
                    case DSPMode.SAM:
                    case DSPMode.FMN:
                        Audio.SineFreq1 = cw_pitch;
                        DttSP.SetTXFilter(1, cw_pitch-100, cw_pitch+100);
                        Audio.TXInputSignal = Audio.SignalSource.SINE;
                        Audio.SourceScale = 1.0;
                        break;
                }

                DttSP.SetMode(1, 0, DSPMode.DIGU);

                PreviousPWR = (int)udPWR.Value;
                if(!xvtr_tune_power || current_xvtr_index < 0)
                {
                    if(rx1_dsp_mode == DSPMode.FMN)
                        udPWR.Value = (int)(tune_power*0.4);
                    else udPWR.Value = tune_power;
                }

                if(!chkVFOSplit.Checked)
                {
                    txtVFOAFreq_LostFocus(this, EventArgs.Empty);
                }
                else
                {
                    if(!chkRX2.Checked)
                        txtVFOBFreq_LostFocus(this, EventArgs.Empty);
                    else
                        txtVFOABand_LostFocus(this, EventArgs.Empty);
                }

                chkMOX.Checked = true;
                if(!mox)
                {
                    chkTUN.Checked = false;
                    return;
                }
                current_ptt_mode = PTTMode.MANUAL;

                switch(rx1_dsp_mode)
                {
                    case DSPMode.CWL:
                    case DSPMode.CWU:
                        Audio.CurrentAudioState1 = Audio.AudioState.DTTSP;
                        Audio.RX1DSPMode = DSPMode.DIGU;
                        break;
                }

                if(atu_present && tx_band != Band.B2M &&
                    (ATUTuneMode)comboTuneMode.SelectedIndex != ATUTuneMode.BYPASS)
                {
                    chkTUN.Enabled = false;
                    comboTuneMode.Enabled = false;

                    Thread t = new Thread(new ThreadStart(Tune));
                    t.IsBackground = true;
                    t.Priority = ThreadPriority.Normal;
                    t.Name = "TUN Thread";
                    t.Start();
                }
                return;
            }
            else
            {
                Audio.TXInputSignal = Audio.SignalSource.RADIO;

                chkMOX.Checked = false;
                chkTUN.BackColor = SystemColors.Control;
                tuning = false;

                if(!chkVFOSplit.Checked)
                {
                    txtVFOAFreq_LostFocus(this, EventArgs.Empty);
                }
                else
                {
                    if(!chkRX2.Checked)
                        txtVFOBFreq_LostFocus(this, EventArgs.Empty);
                    else
                        txtVFOABand_LostFocus(this, EventArgs.Empty);
                }

                if(!(atu_present && tx_band != Band.B2M &&
                    (ATUTuneMode)comboTuneMode.SelectedIndex != ATUTuneMode.BYPASS))
                {
                    if(current_xvtr_index >= 0 && xvtr_tune_power)
                    {
                        // do not do anything
                    }
                    else
                    {
                        if(rx1_dsp_mode == DSPMode.FMN)
                            TunePower = (int)((int)udPWR.Value*2.5);
                        else TunePower = (int)udPWR.Value;
                    }
                }
                udPWR.Value = PreviousPWR;
                DttSP.SetMode(1, 0, rx1_dsp_mode);
                switch(rx1_dsp_mode)
                {
                    case DSPMode.AM:
                    case DSPMode.SAM:
                    case DSPMode.FMN:
                        Audio.SineFreq1 = cw_pitch;
                        break;
                    case DSPMode.CWL:
                    case DSPMode.CWU:
                        Audio.RX1DSPMode = rx1_dsp_mode;
                        break;
                }
                DttSP.SetTXFilter(1, radio.GetDSPTX(0).TXFilterLow, radio.GetDSPTX(0).TXFilterHigh);

                if(tune_meter_tx_mode != old_tune_meter_tx_mode)
                    CurrentMeterTXMode = old_tune_meter_tx_mode;
            }
        }
コード例 #4
0
ファイル: console.cs プロジェクト: ae6jl-mdd/powersdr-iq
        private void PollPTT()
        {
            HiPerfTimer cwpolltimer = new HiPerfTimer();
            cwpolltimer.Start();

            while(chkPower.Checked)
            {
                // reset the CW ring buffers every 1000ms when not in use
                if(current_ptt_mode != PTTMode.NONE)
                {
                    switch(rx1_dsp_mode)
                    {
                        case DSPMode.CWL:
                        case DSPMode.CWU:
                            cwpolltimer.Start(); // start over since key is in use
                            break;
                    }
                }
                else
                {
                    switch(rx1_dsp_mode)
                    {
                        case DSPMode.CWL:
                        case DSPMode.CWU:
                            cwpolltimer.Stop(); // check how long since last reset
                            if(cwpolltimer.DurationMsec > 5000 + break_in_delay && !mox)
                            {
                                // if more than 5 sec + break in delay, reset timer and ring buffer
                                cwpolltimer.Start();
                                DttSP.CWRingRestart();
                                if(fwc_init && current_model == Model.FLEX5000)
                                    FWC.SetPABias(false);
                            }
                            break;
                    }
                }

                if(!manual_mox && !disable_ptt && !rx_only)
                {
                    bool mic_ptt = false, x2_ptt = false, cw_ptt = false, cat_ptt_local = false, vox_ptt = false;
                    bool keyer_playing = DttSP.KeyerPlaying();
                    if(fwc_init && current_model == Model.FLEX5000)
                    {
                        cw_ptt = (cw_semi_break_in_enabled && keyer_playing) || Keyer.KeyerPTT || Keyer.MemoryPTT;
                        mic_ptt = fwc_mic_ptt;
                        x2_ptt = fwc_rca_ptt;
                        vox_ptt = Audio.VOXActive;
                        cat_ptt_local = (ptt_bit_bang_enabled && serialPTT != null && serialPTT.isPTT()) | cat_ptt;
                    }
                    else
                    {
                        byte b = Hdw.StatusPort();
                        cw_ptt = (cw_semi_break_in_enabled && keyer_playing) || Keyer.KeyerPTT || Keyer.MemoryPTT;
                        mic_ptt = (b & (byte)StatusPin.Dot) != 0;

                        bool loop_ptt = (DttSP.GetLoopPTT() != 0);
                        mic_ptt = loop_ptt | mic_ptt;

                        if ( !mic_ptt )  // check aux sources for ptt if not already set
                        {
                            if ( (JanusAudio.GetDotDash() & 0x1) != 0 )
                            {
                                mic_ptt = true;
                            }
                            if ( !mic_ptt )  // if we're not in cw mode take either of the serial port keyer lines as ptt - mostly for soft rock support.
                            {
                                if ( rx1_dsp_mode != DSPMode.CWL && rx1_dsp_mode != DSPMode.CWU )
                                {
                                    if ( Keyer.PrimaryConnPort != "SDR" && Keyer.PrimaryConnPort != "Ozy" )
                                    {
                                        if ( Keyer.sp.CtsHolding ) mic_ptt = true;
                                        else if ( Keyer.sp.DsrHolding ) mic_ptt = true;
                                    }
                                }
                            }
                        }

            //						x2_ptt = (b & (byte)StatusPin.PIN_11) != 0;
                        if(usb_present) x2_ptt = !((b & (byte)StatusPin.PIN_11) != 0);
                        vox_ptt = Audio.VOXActive;
                        cat_ptt_local = (ptt_bit_bang_enabled && serialPTT != null && serialPTT.isPTT()) | cat_ptt;

                        if(auto_mute)
                        {
                            bool mute = !((b & (byte)StatusPin.PIN_12) != 0);
                            if(chkMUT.Checked != mute) chkMUT.Checked = mute;
                        }
                    }

                    /*Debug.WriteLine(cw_ptt.ToString().PadRight(6, ' ')+
                        mic_ptt.ToString().PadRight(6, ' ')+
                        x2_ptt.ToString().PadRight(6, ' ')+
                        vox_ptt.ToString().PadRight(6, ' ')+
                        cat_ptt_local.ToString().PadRight(6, ' ')+
                        current_ptt_mode.ToString());*/

                    if (cw_ptt) break_in_timer.Start();

                    if(!mox)
                    {
                        if(x2_ptt)
                        {
                            current_ptt_mode = PTTMode.X2;
                            switch(rx1_dsp_mode)
                            {
                                case DSPMode.CWL:
                                case DSPMode.CWU:
                                    if(!cw_disable_monitor)
                                    {
                                        mon_recall = chkMON.Checked;
                                        chkMON.Checked = true;
                                    }
                                    break;
                                case DSPMode.LSB:
                                case DSPMode.USB:
                                case DSPMode.DSB:
                                case DSPMode.AM:
                                case DSPMode.SAM:
                                case DSPMode.FMN:
                                case DSPMode.DIGL:
                                case DSPMode.DIGU:
                                    if(chkPhoneVAC.Checked && allow_vac_bypass)
                                        Audio.VACBypass = true;
                                    break;
                            }

                            chkMOX.Checked = true;
                            if(!mox)
                            {
                                chkPower.Checked = false;
                                return;
                            }
                        }

                        if(cat_ptt_local)
                        {
                            current_ptt_mode = PTTMode.CAT;
                            if(rx1_dsp_mode == DSPMode.CWL ||
                                rx1_dsp_mode == DSPMode.CWU)
                            {
                                if(!cw_disable_monitor)
                                {
                                    mon_recall = chkMON.Checked;
                                    chkMON.Checked = true;
                                }
                            }

                            chkMOX.Checked = true;
                            if(!mox)
                            {
                                chkPower.Checked = false;
                                return;
                            }
                        }

                        if((rx1_dsp_mode == DSPMode.CWL ||
                            rx1_dsp_mode == DSPMode.CWU) &&
                            cw_ptt)
                        {
                            current_ptt_mode = PTTMode.CW;
                            cwpolltimer.Start();
                            if(!cw_disable_monitor)
                            {
                                mon_recall = chkMON.Checked;
                                chkMON.Checked = true;
                            }
                            chkMOX.Checked = true;
                            if(!mox)
                            {
                                chkPower.Checked = false;
                                return;
                            }
                        }

                        if((rx1_dsp_mode == DSPMode.LSB ||
                            rx1_dsp_mode == DSPMode.USB ||
                            rx1_dsp_mode == DSPMode.DSB ||
                            rx1_dsp_mode == DSPMode.AM  ||
                            rx1_dsp_mode == DSPMode.SAM ||
                            rx1_dsp_mode == DSPMode.DIGU ||
                            rx1_dsp_mode == DSPMode.DIGL ||
                            rx1_dsp_mode == DSPMode.FMN ||
                            all_mode_mic_ptt) &&
                            mic_ptt)
                        {
                            current_ptt_mode = PTTMode.MIC;

                            if(chkPhoneVAC.Checked && allow_vac_bypass)
                                Audio.VACBypass = true;

                            chkMOX.Checked = true;
                            if(!mox)
                            {
                                chkPower.Checked = false;
                                return;
                            }
                        }

                        if((rx1_dsp_mode == DSPMode.LSB ||
                            rx1_dsp_mode == DSPMode.USB ||
                            rx1_dsp_mode == DSPMode.DSB ||
                            rx1_dsp_mode == DSPMode.AM  ||
                            rx1_dsp_mode == DSPMode.SAM ||
                            rx1_dsp_mode == DSPMode.DIGU ||
                            rx1_dsp_mode == DSPMode.DIGL ||
                            rx1_dsp_mode == DSPMode.FMN) &&
                            vox_ptt)
                        {
                            current_ptt_mode = PTTMode.VOX;
                            vox_timer.Start();
                            chkMOX.Checked = true;
                            if(!mox)
                            {
                                chkPower.Checked = false;
                                return;
                            }
                        }
                    }
                    else // else if(mox)
                    {
                        switch(current_ptt_mode)
                        {
                            case PTTMode.X2:
                                if(!x2_ptt)
                                {
                                    chkMOX.Checked = false;
                                    switch(rx1_dsp_mode)
                                    {
                                        case DSPMode.CWL:
                                        case DSPMode.CWU:
                                            if(!cw_disable_monitor)
                                                chkMON.Checked = mon_recall;
                                            break;
                                        case DSPMode.LSB:
                                        case DSPMode.USB:
                                        case DSPMode.DSB:
                                        case DSPMode.AM:
                                        case DSPMode.SAM:
                                        case DSPMode.FMN:
                                        case DSPMode.DIGL:
                                        case DSPMode.DIGU:
                                            if(chkPhoneVAC.Checked && Audio.VACBypass)
                                                Audio.VACBypass = false;
                                            break;
                                    }
                                }
                                break;
                            case PTTMode.CAT:
                                if(!cat_ptt_local)
                                {
                                    chkMOX.Checked = false;
                                    if((rx1_dsp_mode == DSPMode.CWL ||
                                        rx1_dsp_mode == DSPMode.CWU) &&
                                        !cw_disable_monitor)
                                        chkMON.Checked = mon_recall;
                                }
                                break;
                            case PTTMode.MIC:
                                if(!mic_ptt)
                                {
                                    chkMOX.Checked = false;
                                    if(chkPhoneVAC.Checked && Audio.VACBypass)
                                        Audio.VACBypass = false;
                                }
                                break;
                            case PTTMode.CW:
                                if(!cw_ptt)
                                {
                                    if (cw_semi_break_in_enabled)
                                    {
                                        break_in_timer.Stop();
                                        if (break_in_timer.DurationMsec > break_in_delay)
                                        {
                                            chkMOX.Checked = false;
                                            if((rx1_dsp_mode == DSPMode.CWL ||
                                                rx1_dsp_mode == DSPMode.CWU) &&
                                                !cw_disable_monitor)
                                                chkMON.Checked = mon_recall;
                                            //DttSP.CWRingRestart(); // removed to stop glitches found by EHR -- added to bias switch off
                                        }
                                    }
                                    else
                                    {
                                        break_in_timer.Stop();
                                        if (break_in_timer.DurationMsec > 43)
                                        {
                                            chkMOX.Checked = false;
                                            if((rx1_dsp_mode == DSPMode.CWL ||
                                                rx1_dsp_mode == DSPMode.CWU) &&
                                                !cw_disable_monitor)
                                                chkMON.Checked = mon_recall;
                                        }
                                    }
                                }
                                break;
                            case PTTMode.VOX:
                                if(!vox_ptt)
                                {
                                    vox_timer.Stop();
                                    if(vox_timer.DurationMsec > vox_hang_time)
                                        chkMOX.Checked = false;
                                }
                                else vox_timer.Start();
                                break;
                        }
                    }
                }
                Thread.Sleep(2);
                /*				polltimer.Stop();
                                msecs += polltimer.DurationMsec;
                                if (++pollcount == 1000)
                                {
                                    msecs *= 0.001;
                                    Debug.WriteLine("timer average = " +msecs.ToString());
                                    pollcount = 0;
                                }*/
            }
            //			poll_ptt_running = false;
        }
コード例 #5
0
ファイル: console.cs プロジェクト: ae6jl-mdd/powersdr-iq
        private void chkMOX_CheckedChanged2(object sender, System.EventArgs e)
        {
            //Debug.WriteLine("MOX: "+chkMOX.Checked);
            t1.Start();
            if(rx_only && chkMOX.Checked)
            {
                chkMOX.Checked = false;
                return;
            }
            if (chkMOX.Checked)
            {
                DttSP.SetThreadProcessingMode(0,1);
                DttSP.SetThreadProcessingMode(1,2);
            }
            else
            {
                DttSP.SetThreadProcessingMode(0,2);
                DttSP.SetThreadProcessingMode(1,1);
            }

            // only allow softrock style xmit  for cw and ssb for now
            if ( rx1_dsp_mode != DSPMode.CWL && rx1_dsp_mode != DSPMode.CWU  &&
                rx1_dsp_mode != DSPMode.USB && rx1_dsp_mode != DSPMode.LSB &&
                ( /* current_model == Model.SDR1000_DDSLOCKED || */ current_model == Model.SOFTROCK40 )
                )
            {
                chkMOX.Checked = false;
                return;
            }

            bool tx = mox = chkMOX.Checked;
            double freq = 0.0;

            if(tx)
            {
                t1.Stop();
                timer1 += t1.DurationMsec;
                count1++;

                if(chkVFOSplit.Checked)
                    freq = double.Parse(txtVFOBFreq.Text);
                else
                    freq = double.Parse(txtVFOAFreq.Text);

                if(current_xvtr_index >= 0)
                    freq = XVTRForm.TranslateFreq(freq);

                if(chkXIT.Checked)
                    freq += (int)udXIT.Value * 0.000001;

                t1.Stop();
                timer2 += t1.DurationMsec;
                count2++;

                if(!calibrating)
                {
                    if(!IsHamBand(current_band_plan, freq))	// out of band
                    {
                        MessageBox.Show("The frequency "+freq.ToString("f6")+"MHz is not within the "+
                            "IARU Band specifications.",
                            "Transmit Error: Out Of Band",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Error);
                        chkMOX.Checked = false;
                        return;
                    }

                    if(btnBand60.BackColor == button_selected_color &&
                        rx1_dsp_mode != DSPMode.USB && !extended)
                    {
                        MessageBox.Show(rx1_dsp_mode.ToString()+" mode is not allowed on 60M band.",
                            "Transmit Error: Mode/Band",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Error);
                        chkMOX.Checked = false;
                        return;
                    }
                }

                t1.Stop();
                timer3 += t1.DurationMsec;
                count3++;

                switch(rx1_dsp_mode)
                {
                    case DSPMode.CWL:
                        freq += (double)cw_pitch * 0.0000010;
                        break;
                    case DSPMode.CWU:
                        freq -= (double)cw_pitch * 0.0000010;
                        break;
                }
            }
            else
            {
                current_ptt_mode = PTTMode.NONE;
                if(pa_present)
                {
                    if(poll_pa_pwr_thread !=null && poll_pa_pwr_thread.IsAlive)
                        poll_pa_pwr_thread.Abort();
                }
            }

            if(tx)
            {
                t1.Stop();
                timer4 += t1.DurationMsec;
                count4++;
            }

            // !!! ----------------------------------------------------------------- fix needed sr xmit
            #if false

                                // kd5tfd soft rock xmit hack
                                if ( current_model != Model.SOFTROCK40 && current_model != Model.SDR1000_DDSLOCKED )
                                {
                                        DDSFreq = freq;
                                }
                                else  // soft rock style tuning
                                {

                                        // need to add checking in here to make sure we're in tuning range
                                        System.Console.WriteLine("Freq: " + freq);
                                        System.Console.WriteLine("SR Center: " + soft_rock_center_freq);
            #if false
                                        double osc_freq = soft_rock_center_freq*1e6 - freq*1e6;
                                        osc_freq = -osc_freq;
                                        DttSP.SetOsc(osc_freq);
                                        DttSP.SetTXOsc(osc_freq);

                                        if ( current_dsp_mode == DSPMode.CWU || current_dsp_mode == DSPMode.CWL )
                                        {
                                                float keyer_freq = (float)(-osc_freq);
                                                switch(current_dsp_mode)
                                                {
                                                        case DSPMode.CWU:
                                                                keyer_freq -= CWPitch;
                                                                break;

                                                        case DSPMode.CWL:
                                                                keyer_freq += CWPitch;
                                                                break;
                                                }
                                                DttSP.SetKeyerFreq(keyer_freq);
                                        }
                                        System.Console.WriteLine("osc_freq: " + osc_freq);
            #endif
                                        tuned_freq = freq;

                                }
            #endif
            //-----------------------------------------------------------------

            AudioMOXChanged(tx);

            if(tx)
            {
                t1.Stop();
                timer5 += t1.DurationMsec;
                count5++;
            }

            HdwMOXChanged(tx, freq);

            // [patch_16
            // If a USB-connected AVR processor with DG8SAQ firmware is connected, then
            // also indicate MOX status through that device
            if (DG8SAQ_usbVFO != IntPtr.Zero)
            {
                byte[] buf = {0, 0, 0};
                // I2C commands and data are sent to the control endpoint
                int len = libusb.usb_control_msg(DG8SAQ_usbVFO, USB_CTRL_IN, CMD_SET_RXTX, tx ? 1 : 0, 0, buf, 3, 1000);
            } // patch_16]

            if (USB995xport.IsOpen && chkPower.Checked)
            {
                if (tx)
                {
                    byte[] outData = {0xAA, 0x55, 0x00, 0x00, 0x7C};		// PTT in Tx
                    USB995xport.Write(outData, 0, outData.Length);
                }
                else
                {
                    byte[] outData = {0x00, 0x00, 0x00, 0x00, 0x7C};		// PTT in Rx
                    USB995xport.Write(outData, 0, outData.Length);
                }
            }

            if(tx)
            {
                t1.Stop();
                timer6 += t1.DurationMsec;
                count6++;

                switch(current_model)
                {
                    case Model.FLEX5000:
                        if(poll_pa_pwr_thread == null || !poll_pa_pwr_thread.IsAlive)
                        {
                            poll_pa_pwr_thread = new Thread(new ThreadStart(PollFWCPAPWR));
                            poll_pa_pwr_thread.Name = "Poll FWC PA PWR Thread";
                            poll_pa_pwr_thread.Priority = ThreadPriority.BelowNormal;
                            poll_pa_pwr_thread.IsBackground = true;
                            poll_pa_pwr_thread.Start();
                        }
                        break;
                    default:
                        if(pa_present)
                        {
                            if(poll_pa_pwr_thread == null || !poll_pa_pwr_thread.IsAlive)
                            {
                                poll_pa_pwr_thread = new Thread(new ThreadStart(PollPAPWR));
                                poll_pa_pwr_thread.Name = "Poll PA PWR Thread";
                                poll_pa_pwr_thread.Priority = ThreadPriority.BelowNormal;
                                poll_pa_pwr_thread.IsBackground = true;
                                poll_pa_pwr_thread.Start();
                            }
                        }
                        break;
                }
            }

            if(tx) mox_update_thread = new Thread(new ThreadStart(UIMOXChangedTrue));
            else mox_update_thread = new Thread(new ThreadStart(UIMOXChangedFalse));
            mox_update_thread.Name = "UIMOXChanged";
            mox_update_thread.IsBackground = true;
            mox_update_thread.Priority = ThreadPriority.Normal;
            mox_update_thread.Start();

            if(tx)
            {
                t1.Stop();
                timer7 += t1.DurationMsec;
                count7++;
            }

            Debug.WriteLine("1:"+(timer1/count1).ToString("f3")+
                " 2:"+(timer2/count2).ToString("f3")+
                " 3:"+(timer3/count3).ToString("f3")+
                " 4:"+(timer4/count4).ToString("f3")+
                " 5:"+(timer5/count5).ToString("f3")+
                " 6:"+(timer6/count6).ToString("f3")+
                " 7:"+(timer7/count7).ToString("f3")+
                " 8:"+(timer8/count8).ToString("f3")+
                " 9:"+(timer9/count9).ToString("f3")+
                " 10:"+(timer10/count10).ToString("f3")+
                " 11:"+(timer11/count11).ToString("f3")+
                " 12:"+(timer12/count12).ToString("f3"));
        }