unsafe private void KeyThread() // changes yt7pwr { try { int[] tmp = new int[1]; bool tune_CW = false; //do { DttSP.KeyerStartedWait(); while (runKeyer) { timer.Start(); DttSP.PollTimerWait(); CWMonitorState = DttSP.KeyerPlaying(); if (tuneCW && !tune_CW) { tune_CW = true; secondary_keyer_dash = false; secondary_keyer_dot = true; } else if (!tuneCW && tune_CW) { tune_CW = false; secondary_keyer_dash = false; secondary_keyer_dot = false; } else if (memoryptt) { //console ptt on keyprog = true; secondary_keyer_dot = secondary_keyer_dash = memorykey; if (console.CWMonitorEnabled) { if (console.CurrentModel == Model.GENESIS_G6) { if (memorykey) { if (!CW_monitor_on && cw_monitor_enabled) { console.g6.WriteToDevice(24, 1); // CW monitor on CW_monitor_off = false; CW_monitor_on = true; } } else { if (!CW_monitor_off && cw_monitor_enabled) { console.g6.WriteToDevice(24, 0); // CW monitor off CW_monitor_on = false; CW_monitor_off = true; } } } else if (console.CurrentModel == Model.GENESIS_G59USB) { if (memorykey) { if (!CW_monitor_on && cw_monitor_enabled) { console.g59.WriteToDevice(24, 1); // CW monitor on CW_monitor_off = false; CW_monitor_on = true; } } else { if (!CW_monitor_off && cw_monitor_enabled) { console.g59.WriteToDevice(24, 0); // CW monitor off CW_monitor_on = false; CW_monitor_off = true; } } } else if (console.CurrentModel == Model.GENESIS_G59NET) { if (memorykey) { if (!CW_monitor_on && cw_monitor_enabled) { console.net_device.WriteToDevice(24, 1); // CW monitor on CW_monitor_off = false; CW_monitor_on = true; } } else { if (!CW_monitor_off && cw_monitor_enabled) { console.net_device.WriteToDevice(24, 0); // CW monitor off CW_monitor_on = false; CW_monitor_off = true; } } } else if (console.CurrentModel == Model.GENESIS_G11) { if (memorykey) { if (!CW_monitor_on && cw_monitor_enabled) { console.g11.WriteToDevice(24, 1); // CW monitor on CW_monitor_off = false; CW_monitor_on = true; } } else { if (!CW_monitor_off && cw_monitor_enabled) { console.g11.WriteToDevice(24, 0); // CW monitor off CW_monitor_on = false; CW_monitor_off = true; } } } else if (console.CurrentModel == Model.GENESIS_G160 || console.CurrentModel == Model.GENESIS_G3020 || console.CurrentModel == Model.GENESIS_G40 || console.CurrentModel == Model.GENESIS_G80) { if (memorykey) { if (!CW_monitor_on && cw_monitor_enabled) { CW_monitor(true); CW_monitor_off = false; CW_monitor_on = true; } } else { if (!CW_monitor_off && cw_monitor_enabled) { CW_monitor(false); CW_monitor_on = false; CW_monitor_off = true; } } } } } else if (!tune_CW) { secondary_keyer_dash = false; secondary_keyer_dot = false; keyprog = false; } if (enabled_secondary_keyer && (secondary_keyer_mox || ptt_bit_bang_enabled)) { keyprog = false; switch (secondary_conn_port) { case "None": break; default: // comm port if (sp2.IsOpen) { switch (secondary_dot_line) { case KeyerLine.DSR: secondary_keyer_dot = sp2.DsrHolding; break; case KeyerLine.CTS: secondary_keyer_dot = sp2.CtsHolding; break; case KeyerLine.DCD: secondary_keyer_dot = sp2.CDHolding; break; case KeyerLine.NONE: secondary_keyer_dot = false; break; } switch (secondary_dash_line) { case KeyerLine.DSR: secondary_keyer_dash = sp2.DsrHolding; break; case KeyerLine.CTS: secondary_keyer_dash = sp2.CtsHolding; break; case KeyerLine.DCD: secondary_keyer_dash = sp2.CDHolding; break; case KeyerLine.NONE: secondary_keyer_dash = false; break; } if (console.CWMonitorEnabled) { if (console.CurrentModel == Model.GENESIS_G59USB) { if (CWMonitorState) { if (!CW_monitor_on && cw_monitor_enabled) { console.g59.WriteToDevice(24, 1); // CW monitor on CW_monitor_off = false; CW_monitor_on = true; } } else { if (!CW_monitor_off && cw_monitor_enabled) { console.g59.WriteToDevice(24, 0); // CW monitor off CW_monitor_on = false; CW_monitor_off = true; } } } else if (console.CurrentModel == Model.GENESIS_G59NET) { if (CWMonitorState) { if (!CW_monitor_on && cw_monitor_enabled) { console.net_device.WriteToDevice(24, 1); // CW monitor on CW_monitor_off = false; CW_monitor_on = true; } } else { if (!CW_monitor_off && cw_monitor_enabled) { console.net_device.WriteToDevice(24, 0); // CW monitor off CW_monitor_on = false; CW_monitor_off = true; } } } else if (console.CurrentModel == Model.GENESIS_G11) { if (CWMonitorState) { if (!CW_monitor_on && cw_monitor_enabled) { console.g11.WriteToDevice(24, 1); // CW monitor on CW_monitor_off = false; CW_monitor_on = true; } } else { if (!CW_monitor_off && cw_monitor_enabled) { console.g11.WriteToDevice(24, 0); // CW monitor off CW_monitor_on = false; CW_monitor_off = true; } } } else if (console.CurrentModel == Model.GENESIS_G160 || console.CurrentModel == Model.GENESIS_G3020 || console.CurrentModel == Model.GENESIS_G40 || console.CurrentModel == Model.GENESIS_G80) { if (dtr_cw_monitor && cw_monitor_enabled) { if (CWMonitorState) { CW_monitor(true); } else { CW_monitor(false); } } } } } break; } } if (enabled_primary_keyer && !secondary_keyer_mox && !memoryptt) { switch (primary_conn_port) { case "USB": { switch (console.CurrentModel) { case Model.GENESIS_G6: { if (console.g6.Connected && console.g6.KeyerNewData) { keyprog = false; primary_keyer_mox = true; switch (console.g6.KEYER) { case 0: // DASH ON command from USB primary_keyer_dash = true; break; case 1: // DOT ON command from USB primary_keyer_dot = true; break; case 2: // DASH OFF command from USB primary_keyer_dash = false; break; case 3: // DOT OFF command from USB primary_keyer_dot = false; break; case 0xaa: console.g6.KEYER = 0xff; primary_keyer_dot = false; primary_keyer_dash = false; break; case 0xcc: // TUN off console.g11.KEYER = 0xff; primary_keyer_dot = false; primary_keyer_dash = false; tuneCW = false; break; default: primary_keyer_dash = false; primary_keyer_dot = false; break; } } } break; case Model.GENESIS_G59USB: { if (console.g59.Connected && console.g59.KeyerNewData) { keyprog = false; primary_keyer_mox = true; switch (console.g59.KEYER) { case 0: // DASH ON command from USB primary_keyer_dash = true; break; case 1: // DOT ON command from USB primary_keyer_dot = true; break; case 2: // DASH OFF command from USB primary_keyer_dash = false; break; case 3: // DOT OFF command from USB primary_keyer_dot = false; break; case 0xaa: console.g59.KEYER = 0xff; primary_keyer_dot = false; primary_keyer_dash = false; break; case 0xcc: // TUN off console.g11.KEYER = 0xff; primary_keyer_dot = false; primary_keyer_dash = false; tuneCW = false; break; default: primary_keyer_dash = false; primary_keyer_dot = false; break; } } } break; case Model.GENESIS_G11: { if (console.g11.Connected && console.g11.KeyerNewData) { keyprog = false; primary_keyer_mox = true; switch (console.g11.KEYER) { case 0: // DASH ON command from USB primary_keyer_dash = true; break; case 1: // DOT ON command from USB primary_keyer_dot = true; break; case 2: // DASH OFF command from USB primary_keyer_dash = false; break; case 3: // DOT OFF command from USB primary_keyer_dot = false; break; case 0xaa: console.g11.KEYER = 0xff; primary_keyer_dot = false; primary_keyer_dash = false; break; case 0xcc: // TUN off console.g11.KEYER = 0xff; primary_keyer_dot = false; primary_keyer_dash = false; tuneCW = false; break; default: primary_keyer_dash = false; primary_keyer_dot = false; break; } } } break; } } break; case "NET": { if (console.net_device.Connected && console.net_device.KeyerNewData) { keyprog = false; primary_keyer_mox = true; switch (console.net_device.KEYER) { case 0: // DASH ON command from Network primary_keyer_dash = true; primary_keyer_dot = false; break; case 1: // DOT ON command from Network primary_keyer_dot = true; primary_keyer_dash = false; break; case 2: // DASH OFF command from Network primary_keyer_dash = false; break; case 3: // DOT OFF command from Network primary_keyer_dot = false; break; case 0xaa: console.net_device.KEYER = 0xff; primary_keyer_dot = false; primary_keyer_dash = false; break; default: primary_keyer_dash = false; primary_keyer_dot = false; break; } } } break; case "QRP2000": { if (console.qrp2000.QRP2000Status()) { keyprog = false; if (console.MOX) { console.qrp2000.SetPTTGetCWInput(1, tmp); } else { console.qrp2000.SetPTTGetCWInput(0, tmp); } if (QRP2000CW1) { tmp[0] &= 0x20; } else if (QRP2000CW2) { tmp[0] &= 0x02; } if (tmp[0] == 0x00) { primary_keyer_dash = primary_keyer_dot = true; } else { primary_keyer_dash = primary_keyer_dot = false; } } } break; default: if (sp.IsOpen) { keyprog = false; keyprog = false; primary_keyer_dash = sp.CtsHolding; primary_keyer_dot = sp.DsrHolding; if (dtr_cw_monitor && console.CWMonitorEnabled) { if (CWMonitorState) { CW_monitor(true); } else { CW_monitor(false); } } } break; } } timer.Stop(); msdel = (float)timer.DurationMsec; //msdel = (float)DttSP.TimerRead(); //Debug.Write(msdel.ToString() + "\n"); if (keyprog || secondary_keyer_mox || tune_CW || ptt_bit_bang_enabled) { //keyprog = false; DttSP.KeyValue(msdel, secondary_keyer_dash, secondary_keyer_dot, keyprog); keyprog = false; } else if (primary_keyer_mox) { DttSP.KeyValue(msdel, primary_keyer_dash, primary_keyer_dot, keyprog); } else if (enabled_primary_keyer && !secondary_keyer_mox && !memoryptt) { DttSP.KeyValue(msdel, primary_keyer_dash, primary_keyer_dot, keyprog); } else { DttSP.KeyValue(msdel, false, false, false); primary_keyer_mox = false; secondary_keyer_mox = false; keyprog = false; } } }// while (true); } catch (Exception ex) { MessageBox.Show("Error in KeyThread!\n" + ex.ToString()); } }
public void KeyThread() { //SetThreadAffinity(1); bool extkey_dash, extkey_dot, keyprog; do { DttSP.KeyerStartedWait(); for (; DttSP.KeyerRunning();) { keyprog = false; timer.Start(); DttSP.PollTimerWait(); switch (primary_conn_port) { case "SDR": byte b = hw.StatusPort(); extkey_dash = ((b & (byte)StatusPin.Dash) != 0); extkey_dot = ((b & (byte)StatusPin.Dot) != 0); break; case "Radio": extkey_dot = fwc_dot; extkey_dash = fwc_dash; break; default: // COM port extkey_dash = sp.CtsHolding; extkey_dot = sp.DsrHolding; break; } // handle CWX if (!extkey_dash && !extkey_dot) { if (memoryptt) { //console ptt on keyprog = true; extkey_dot = extkey_dash = memorykey; } else { //console ptt off keyprog = false; } } if (!extkey_dash && !extkey_dot) // don't override primary { switch (secondary_conn_port) { case "None": break; case "CAT": switch (secondary_ptt_line) { case KeyerLine.NONE: if (sp2dotkey) { extkey_dash = siolisten.SIO.isDSR(); } else { extkey_dot = siolisten.SIO.isCTS(); } break; case KeyerLine.DTR: // look at DSR since we are on the other side of the null modem cable keyerptt = siolisten.SIO.isDSR(); // extkey_dot = System.Convert.ToByte(sp2.CtsHolding); break; case KeyerLine.RTS: // look at CTS since we are on the other side of the null modem cable keyerptt = siolisten.SIO.isCTS(); // extkey_dash = System.Convert.ToByte(sp2.DsrHolding); break; } switch (secondary_key_line) { case KeyerLine.NONE: if (sp2dotkey) { extkey_dash = siolisten.SIO.isDSR(); } else { extkey_dot = siolisten.SIO.isCTS(); } break; case KeyerLine.DTR: // look at DSR since we are on the other side of the null modem cable extkey_dot = siolisten.SIO.isDSR(); // Debug.WriteLine("extkey_dot: "+extkey_dot); break; case KeyerLine.RTS: // look at CTS since we are on the other side of the null modem cable extkey_dash = siolisten.SIO.isCTS(); break; } // if (extkey_dash || extkey_dot) // keyprog = true; // else keyprog = false; // //Debug.WriteLine("keyprog: "+keyprog); break; #if false // wjtFIXME!! - merged from KD5TFD's HPSDR 1.6.3 tree - sr xmit case "BB-PTT": Console c = Console.getConsole(); if ((extkey_dash == 0) && (extkey_dot == 0)) // don't override primary { switch (secondary_ptt_line) { case KeyerLine.NONE: if (sp2dotkey) { extkey_dash = System.Convert.ToByte(c.serialPTT.isDSR()); } else { extkey_dot = System.Convert.ToByte(c.serialPTT.isCTS()); } break; case KeyerLine.DTR: // look at DSR since we are on the other side of the null modem cable keyerptt = c.serialPTT.isDSR(); // extkey_dot = System.Convert.ToByte(sp2.CtsHolding); break; case KeyerLine.RTS: // look at CTS since we are on the other side of the null modem cable keyerptt = c.serialPTT.isCTS(); // extkey_dash = System.Convert.ToByte(sp2.DsrHolding); break; } switch (secondary_key_line) { case KeyerLine.NONE: if (sp2dotkey) { extkey_dash = System.Convert.ToByte(c.serialPTT.isDSR()); } else { extkey_dot = System.Convert.ToByte(c.serialPTT.isCTS()); } break; case KeyerLine.DTR: // look at DSR since we are on the other side of the null modem cable extkey_dot = System.Convert.ToByte(c.serialPTT.isDSR()); // Debug.WriteLine("extkey_dot: "+extkey_dot); break; case KeyerLine.RTS: // look at CTS since we are on the other side of the null modem cable extkey_dash = System.Convert.ToByte(c.serialPTT.isCTS()); break; } if ((extkey_dash + extkey_dot) != 0) { keyprog = 1; } else { keyprog = 0; } // Debug.WriteLine("keyprog: "+keyprog); } else { keyprog = 0; } break; #endif default: // comm port switch (secondary_ptt_line) { case KeyerLine.NONE: if (sp2dotkey) { extkey_dash = sp2.DsrHolding; } else { extkey_dot = sp2.CtsHolding; } break; case KeyerLine.DTR: // look at DSR since we are on the other side of the null modem cable keyerptt = sp2.DsrHolding; break; case KeyerLine.RTS: // look at CTS since we are on the other side of the null modem cable keyerptt = sp2.CtsHolding; break; } switch (secondary_key_line) { case KeyerLine.NONE: if (sp2dotkey) { extkey_dash = sp2.DsrHolding; } else { extkey_dot = sp2.CtsHolding; } break; case KeyerLine.DTR: // look at DSR since we are on the other side of the null modem cable extkey_dot = sp2.DsrHolding; // Debug.WriteLine("extkey_dot: "+extkey_dot); break; case KeyerLine.RTS: // look at CTS since we are on the other side of the null modem cable extkey_dash = sp2.CtsHolding; break; } break; } if (extkey_dash || extkey_dot) { keyprog = true; } else { keyprog = false; } //Debug.WriteLine("keyprog: "+keyprog); } timer.Stop(); msdel = (float)timer.DurationMsec; //Debug.WriteLine("Dash: "+extkey_dash+" Dot: "+extkey_dot); DttSP.KeyValue(msdel, extkey_dash, extkey_dot, keyprog); } } while(threads_running); }
unsafe private void KeyThread() // changes yt7pwr { try { int[] tmp = new int[1]; bool tune_CW = false; //do { DttSP.KeyerStartedWait(); while (runKeyer) { timer.Start(); DttSP.PollTimerWait(); CWMonitorState = DttSP.KeyerPlaying(); if (tuneCW && !tune_CW) { tune_CW = true; secondary_keyer_dash = false; secondary_keyer_dot = true; } else if (!tuneCW && tune_CW) { tune_CW = false; secondary_keyer_dash = false; secondary_keyer_dot = false; } else if (memoryptt) { //console ptt on keyprog = true; secondary_keyer_dot = secondary_keyer_dash = memorykey; if (console.CWMonitorEnabled) { if (console.CurrentModel == Model.LimeSDR) { } } } else if (!tune_CW) { secondary_keyer_dash = false; secondary_keyer_dot = false; keyprog = false; } if (enabled_secondary_keyer && (secondary_keyer_mox || ptt_bit_bang_enabled)) { keyprog = false; switch (secondary_conn_port) { case "None": break; default: // comm port if (sp2.IsOpen) { switch (secondary_dot_line) { case KeyerLine.DSR: secondary_keyer_dot = sp2.DsrHolding; break; case KeyerLine.CTS: secondary_keyer_dot = sp2.CtsHolding; break; case KeyerLine.DCD: secondary_keyer_dot = sp2.CDHolding; break; case KeyerLine.NONE: secondary_keyer_dot = false; break; } switch (secondary_dash_line) { case KeyerLine.DSR: secondary_keyer_dash = sp2.DsrHolding; break; case KeyerLine.CTS: secondary_keyer_dash = sp2.CtsHolding; break; case KeyerLine.DCD: secondary_keyer_dash = sp2.CDHolding; break; case KeyerLine.NONE: secondary_keyer_dash = false; break; } } break; } } if (enabled_primary_keyer && !secondary_keyer_mox && !memoryptt) { switch (primary_conn_port) { case "USB": { switch (console.CurrentModel) { case Model.LimeSDR: { if (console.limeSDR.device != null && console.limeSDR.connected) { uint key = console.limeSDR.device.ReadKeyer(); key = key & 0xc0; //Debug.Write("Keyer: " + key.ToString() + " \n"); if (key == 0x40) { primary_keyer_dash = true; primary_keyer_dot = false; } else if (key == 0x80) { primary_keyer_dot = true; primary_keyer_dash = false; } else { primary_keyer_dot = false; primary_keyer_dash = false; } } else { primary_keyer_dot = false; primary_keyer_dash = false; } } break; } } break; default: if (sp.IsOpen) { keyprog = false; keyprog = false; primary_keyer_dash = sp.CtsHolding; primary_keyer_dot = sp.DsrHolding; if (dtr_cw_monitor && console.CWMonitorEnabled) { if (CWMonitorState) { CW_monitor(true); } else { CW_monitor(false); } } } break; } } timer.Stop(); msdel = (float)timer.DurationMsec; //msdel = (float)DttSP.TimerRead(); //Debug.Write(msdel.ToString() + "\n"); if (keyprog || secondary_keyer_mox || tune_CW || ptt_bit_bang_enabled) { //keyprog = false; DttSP.KeyValue(msdel, secondary_keyer_dash, secondary_keyer_dot, keyprog); keyprog = false; } else if (primary_keyer_mox) { DttSP.KeyValue(msdel, primary_keyer_dash, primary_keyer_dot, keyprog); } else if (enabled_primary_keyer && !secondary_keyer_mox && !memoryptt) { DttSP.KeyValue(msdel, primary_keyer_dash, primary_keyer_dot, keyprog); } else { DttSP.KeyValue(msdel, false, false, false); primary_keyer_mox = false; secondary_keyer_mox = false; keyprog = false; } } }// while (true); } catch (Exception ex) { MessageBox.Show("Error in KeyThread!\n" + ex.ToString()); } }
public void KeyThread() { byte extkey_dash, extkey_dot; do { DttSP.KeyerStartedWait(); for (; DttSP.KeyerRunning() != 0;) { byte keyprog = 0; timer.Start(); DttSP.PollTimerWait(); switch (primary_conn_port) { case "SDR": byte b = hw.StatusPort(); extkey_dash = (byte)(((b & (byte)StatusPin.Dash) != 0) ? 1:0); extkey_dot = (byte)(((b & (byte)StatusPin.Dot) != 0) ? 1:0); break; default: // COM port extkey_dash = System.Convert.ToByte(sp.CtsHolding); extkey_dot = System.Convert.ToByte(sp.DsrHolding); break; } // [patch_16 // M0PUB : also allow keying via USB-connected AVR processor, running DG8SAQ firmware if ((extkey_dash == 0) && (extkey_dot == 0)) // don't override primary { extkey_dot = extkey_dash = Console.GetDG8SAQkeyStatus(); } // patch_16] if (memoryptt) { //console ptt on keyprog = 1; extkey_dot = extkey_dash = System.Convert.ToByte(memorykey); } else { keyprog = 0; //console ptt off } switch (secondary_conn_port) { case "None": break; case "CAT": if ((extkey_dash == 0) && (extkey_dot == 0)) // don't override primary { switch (secondary_ptt_line) { case KeyerLine.NONE: if (sp2dotkey) { extkey_dash = System.Convert.ToByte(siolisten.SIO.isDSR()); } else { extkey_dot = System.Convert.ToByte(siolisten.SIO.isCTS()); } break; case KeyerLine.DTR: // look at DSR since we are on the other side of the null modem cable keyerptt = siolisten.SIO.isDSR(); // extkey_dot = System.Convert.ToByte(sp2.CtsHolding); break; case KeyerLine.RTS: // look at CTS since we are on the other side of the null modem cable keyerptt = siolisten.SIO.isCTS(); // extkey_dash = System.Convert.ToByte(sp2.DsrHolding); break; } switch (secondary_key_line) { case KeyerLine.NONE: if (sp2dotkey) { extkey_dash = System.Convert.ToByte(siolisten.SIO.isDSR()); } else { extkey_dot = System.Convert.ToByte(siolisten.SIO.isCTS()); } break; case KeyerLine.DTR: // look at DSR since we are on the other side of the null modem cable extkey_dot = System.Convert.ToByte(siolisten.SIO.isDSR()); // Debug.WriteLine("extkey_dot: "+extkey_dot); break; case KeyerLine.RTS: // look at CTS since we are on the other side of the null modem cable extkey_dash = System.Convert.ToByte(siolisten.SIO.isCTS()); break; } if ((extkey_dash + extkey_dot) != 0) { keyprog = 1; } else { keyprog = 0; } // Debug.WriteLine("keyprog: "+keyprog); } else { keyprog = 0; } break; default: // comm port if ((extkey_dash == 0) && (extkey_dot == 0)) // don't override primary { switch (secondary_ptt_line) { case KeyerLine.NONE: if (sp2dotkey) { extkey_dash = System.Convert.ToByte(sp2.DsrHolding); } else { extkey_dot = System.Convert.ToByte(sp2.CtsHolding); } break; case KeyerLine.DTR: // look at DSR since we are on the other side of the null modem cable keyerptt = sp2.DsrHolding; // extkey_dot = System.Convert.ToByte(sp2.CtsHolding); break; case KeyerLine.RTS: // look at CTS since we are on the other side of the null modem cable keyerptt = sp2.CtsHolding; // extkey_dash = System.Convert.ToByte(sp2.DsrHolding); break; } switch (secondary_key_line) { case KeyerLine.NONE: if (sp2dotkey) { extkey_dash = System.Convert.ToByte(sp2.DsrHolding); } else { extkey_dot = System.Convert.ToByte(sp2.CtsHolding); } break; case KeyerLine.DTR: // look at DSR since we are on the other side of the null modem cable extkey_dot = System.Convert.ToByte(sp2.DsrHolding); // Debug.WriteLine("extkey_dot: "+extkey_dot); break; case KeyerLine.RTS: // look at CTS since we are on the other side of the null modem cable extkey_dash = System.Convert.ToByte(sp2.CtsHolding); break; } if ((extkey_dash + extkey_dot) != 0) { keyprog = 1; } else { keyprog = 0; } // Debug.WriteLine("keyprog: "+keyprog); } else { keyprog = 0; } break; } timer.Stop(); msdel = (float)timer.DurationMsec; DttSP.KeyValue(msdel, extkey_dash, extkey_dot, keyprog); } } while(true); }