feat: added FlexRadio support (meters & basic functions)
This commit is contained in:
@@ -6315,6 +6315,196 @@ func (a *App) SetCATMode(mode string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// ── FlexRadio control tab (Phase 1: SmartSDR-style transmit controls) ──
|
||||
// These are no-ops / errors unless the active CAT backend is a FlexRadio.
|
||||
|
||||
// GetFlexState returns the radio's transmit/ATU state for the FlexRadio tab.
|
||||
// Available=false when the active backend isn't a connected Flex.
|
||||
func (a *App) GetFlexState() cat.FlexTXState {
|
||||
if a.cat == nil {
|
||||
return cat.FlexTXState{}
|
||||
}
|
||||
st, _ := a.cat.FlexState()
|
||||
return st
|
||||
}
|
||||
|
||||
func (a *App) FlexSetPower(p int) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetRFPower(p) })
|
||||
}
|
||||
|
||||
func (a *App) FlexSetTunePower(p int) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetTunePower(p) })
|
||||
}
|
||||
|
||||
func (a *App) FlexTune(on bool) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetTune(on) })
|
||||
}
|
||||
|
||||
func (a *App) FlexSetVox(on bool) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetVOX(on) })
|
||||
}
|
||||
|
||||
func (a *App) FlexSetVoxLevel(l int) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetVOXLevel(l) })
|
||||
}
|
||||
|
||||
func (a *App) FlexSetVoxDelay(ms int) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetVOXDelay(ms) })
|
||||
}
|
||||
|
||||
func (a *App) FlexAmpOperate(on bool) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetAmpOperate(on) })
|
||||
}
|
||||
|
||||
func (a *App) FlexSetProcessor(on bool) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetProcessor(on) })
|
||||
}
|
||||
|
||||
func (a *App) FlexSetProcessorLevel(l int) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetProcessorLevel(l) })
|
||||
}
|
||||
|
||||
func (a *App) FlexSetMon(on bool) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetMon(on) })
|
||||
}
|
||||
|
||||
func (a *App) FlexSetMonLevel(l int) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetMonLevel(l) })
|
||||
}
|
||||
|
||||
func (a *App) FlexSetMic(l int) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetMic(l) })
|
||||
}
|
||||
|
||||
func (a *App) FlexMox(on bool) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.SetPTT(on) // MOX = manual transmit (xmit 1/0)
|
||||
}
|
||||
|
||||
func (a *App) FlexATUStart() error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.ATUStart() })
|
||||
}
|
||||
|
||||
func (a *App) FlexATUBypass() error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.ATUBypass() })
|
||||
}
|
||||
|
||||
func (a *App) FlexSetATUMemories(on bool) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetATUMemories(on) })
|
||||
}
|
||||
|
||||
// RX slice DSP controls (target the active receive slice).
|
||||
|
||||
func (a *App) FlexSetAGCMode(m string) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetAGCMode(m) })
|
||||
}
|
||||
|
||||
func (a *App) FlexSetAGCThreshold(l int) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetAGCThreshold(l) })
|
||||
}
|
||||
|
||||
func (a *App) FlexSetAudioLevel(l int) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetAudioLevel(l) })
|
||||
}
|
||||
|
||||
func (a *App) FlexSetNB(on bool) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetNB(on) })
|
||||
}
|
||||
|
||||
func (a *App) FlexSetNBLevel(l int) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetNBLevel(l) })
|
||||
}
|
||||
|
||||
func (a *App) FlexSetNR(on bool) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetNR(on) })
|
||||
}
|
||||
|
||||
func (a *App) FlexSetNRLevel(l int) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetNRLevel(l) })
|
||||
}
|
||||
|
||||
func (a *App) FlexSetANF(on bool) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetANF(on) })
|
||||
}
|
||||
|
||||
func (a *App) FlexSetANFLevel(l int) error {
|
||||
if a.cat == nil {
|
||||
return fmt.Errorf("cat not initialized")
|
||||
}
|
||||
return a.cat.FlexDo(func(fc cat.FlexController) error { return fc.SetANFLevel(l) })
|
||||
}
|
||||
|
||||
// SwitchCATRig hot-swaps the active OmniRig slot (Rig1 ↔ Rig2) without
|
||||
// requiring a trip through the full Settings panel. Persists the choice
|
||||
// so it survives restart.
|
||||
|
||||
Reference in New Issue
Block a user