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(); }
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); } }
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; } }
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; }
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")); }