fix: serial CW keyer PTT — default on, live-apply, and diagnostic log
Reported: on a CQ macro the rig drops to RX between words instead of holding TX for the whole macro. Root cause is PTT not being held (usePTT off, or the RTS PTT line not wired/honoured). Improvements: - "Key PTT line" now defaults ON when the Serial engine is selected — without it the rig runs on semi-break-in and drops between words. - The serial keyer's line options (PTT, key line, invert, lead/tail, speed) are now atomic and live-updatable: SaveWinkeyerSettings -> ApplySerialConfig applies them from the next character, no reconnect needed. - Each transmission logs its PTT state / key line / lead/tail, so a rig that still won't hold TX can be diagnosed from the app log. The macro itself is sent as one string (not fragmented), so PTT is genuinely held across word gaps when usePTT is on — pending on-air confirmation via the log.
This commit is contained in:
@@ -189,6 +189,21 @@ func (m *Manager) Connect(cfg Config) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// ApplySerialConfig live-updates a running serial-line keyer's control options
|
||||
// (PTT keying, key line, invert, lead/tail, speed) WITHOUT reopening the port —
|
||||
// so ticking "Key PTT line" (or changing the key line) takes effect from the next
|
||||
// character, no reconnect needed. No-op unless a serial keyer is running.
|
||||
func (m *Manager) ApplySerialConfig(cfg Config) {
|
||||
cfg = cfg.normalised()
|
||||
m.mu.Lock()
|
||||
sk := m.serial
|
||||
m.cfg = cfg
|
||||
m.mu.Unlock()
|
||||
if sk != nil {
|
||||
sk.ApplyConfig(cfg)
|
||||
}
|
||||
}
|
||||
|
||||
// connectSerial opens the port for line-keying (DTR=CW / RTS=PTT) — no K1EL
|
||||
// handshake, no read loop. The PC bit-bangs the Morse itself (see serialcw.go).
|
||||
func (m *Manager) connectSerial(cfg Config) error {
|
||||
|
||||
Reference in New Issue
Block a user