From ceff32669042d549b70800827ff568a5f642e206 Mon Sep 17 00:00:00 2001 From: David Izaguirre Date: Sat, 19 Dec 2020 23:05:28 -0500 Subject: [PATCH] My radio is configured to only modulate on the digital setting, so it's convinent to have the software set digital mode automatically. --- args.go | 3 +++ audio-linux.go | 5 +++++ civcontrol.go | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/args.go b/args.go index 767a600..08b59b4 100644 --- a/args.go +++ b/args.go @@ -20,6 +20,7 @@ var rigctldPort uint16 var runCmd string var runCmdOnSerialPortCreated string var statusLogInterval time.Duration +var digitalOnTx bool func parseArgs() { h := getopt.BoolLong("help", 'h', "display help") @@ -35,6 +36,7 @@ func parseArgs() { e := getopt.StringLong("exec", 'e', "", "Exec cmd when connected") o := getopt.StringLong("exec-serial", 'o', "socat /tmp/kappanhang-IC-705.pty /tmp/vmware.pty", "Exec cmd when virtual serial port is created, set to - to disable") i := getopt.Uint16Long("log-interval", 'i', 100, "Status bar/log interval in milliseconds") + d := getopt.BoolLong("digital-on-TX", 'd', "Automatically enable data mode when TX from kappanhang") getopt.Parse() @@ -56,4 +58,5 @@ func parseArgs() { runCmd = *e runCmdOnSerialPortCreated = *o statusLogInterval = time.Duration(*i) * time.Millisecond + digitalOnTx = *d } diff --git a/audio-linux.go b/audio-linux.go index 23d3317..2f1a349 100644 --- a/audio-linux.go +++ b/audio-linux.go @@ -87,6 +87,11 @@ func (a *audioStruct) togglePlaybackToDefaultSoundcard() { func (a *audioStruct) toggleRecFromDefaultSoundcard() { if a.defaultSoundcardStream.recStream == nil { + if digitalOnTx { + if err := civControl.enableDataMode(); err != nil { + log.Error("can't change datamode: ", err) + } + } ss := pulse.SampleSpec{Format: pulse.SAMPLE_S16LE, Rate: audioSampleRate, Channels: 1} battr := pulse.NewBufferAttr() battr.Fragsize = uint32(audioFrameSize) diff --git a/civcontrol.go b/civcontrol.go index 28dc440..032891d 100644 --- a/civcontrol.go +++ b/civcontrol.go @@ -1055,6 +1055,10 @@ func (s *civControlStruct) toggleDataMode() error { return s.setDataMode(!s.state.dataMode) } +func (s *civControlStruct) enableDataMode() error { + return s.setDataMode(true) +} + func (s *civControlStruct) incBand() error { i := s.state.bandIdx + 1 if i >= len(civBands) {