kopia lustrzana https://github.com/cyoung/stratux
Merge pull request #312 from jpoirier/development
sdr: comments and more idiomatic codepull/319/head
commit
e98d55d8d7
65
main/sdr.go
65
main/sdr.go
|
@ -24,6 +24,7 @@ import (
|
||||||
rtl "github.com/jpoirier/gortlsdr"
|
rtl "github.com/jpoirier/gortlsdr"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Device holds per dongle values and attributes
|
||||||
type Device struct {
|
type Device struct {
|
||||||
dev *rtl.Context
|
dev *rtl.Context
|
||||||
wg *sync.WaitGroup
|
wg *sync.WaitGroup
|
||||||
|
@ -34,10 +35,16 @@ type Device struct {
|
||||||
idSet bool
|
idSet bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UAT is a 978 MHz device
|
||||||
type UAT Device
|
type UAT Device
|
||||||
|
|
||||||
|
// ES is a 1090 MHz device
|
||||||
type ES Device
|
type ES Device
|
||||||
|
|
||||||
|
// UATDev holds a 978 MHz dongle object
|
||||||
var UATDev *UAT
|
var UATDev *UAT
|
||||||
|
|
||||||
|
// ESDev holds a 1090 MHz dongle object
|
||||||
var ESDev *ES
|
var ESDev *ES
|
||||||
|
|
||||||
func (e *ES) read() {
|
func (e *ES) read() {
|
||||||
|
@ -145,9 +152,9 @@ func getPPM(serial string) int {
|
||||||
|
|
||||||
if ppm, err := strconv.Atoi(arr[1]); err != nil {
|
if ppm, err := strconv.Atoi(arr[1]); err != nil {
|
||||||
return globalSettings.PPM
|
return globalSettings.PPM
|
||||||
} else {
|
|
||||||
return ppm
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return ppm
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *ES) sdrConfig() (err error) {
|
func (e *ES) sdrConfig() (err error) {
|
||||||
|
@ -156,6 +163,7 @@ func (e *ES) sdrConfig() (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 978 UAT configuration settings
|
||||||
const (
|
const (
|
||||||
TunerGain = 480
|
TunerGain = 480
|
||||||
SampleRate = 2083334
|
SampleRate = 2083334
|
||||||
|
@ -181,18 +189,16 @@ func (u *UAT) sdrConfig() (err error) {
|
||||||
u.dev.Close()
|
u.dev.Close()
|
||||||
log.Printf("\tSetTunerGainMode Failed - error: %s\n", err)
|
log.Printf("\tSetTunerGainMode Failed - error: %s\n", err)
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
log.Printf("\tSetTunerGainMode Successful\n")
|
|
||||||
}
|
}
|
||||||
|
log.Printf("\tSetTunerGainMode Successful\n")
|
||||||
|
|
||||||
err = u.dev.SetTunerGain(TunerGain)
|
err = u.dev.SetTunerGain(TunerGain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
u.dev.Close()
|
u.dev.Close()
|
||||||
log.Printf("\tSetTunerGain Failed - error: %s\n", err)
|
log.Printf("\tSetTunerGain Failed - error: %s\n", err)
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
log.Printf("\tSetTunerGain Successful\n")
|
|
||||||
}
|
}
|
||||||
|
log.Printf("\tSetTunerGain Successful\n")
|
||||||
|
|
||||||
//---------- Get/Set Sample Rate ----------
|
//---------- Get/Set Sample Rate ----------
|
||||||
err = u.dev.SetSampleRate(SampleRate)
|
err = u.dev.SetSampleRate(SampleRate)
|
||||||
|
@ -200,9 +206,9 @@ func (u *UAT) sdrConfig() (err error) {
|
||||||
u.dev.Close()
|
u.dev.Close()
|
||||||
log.Printf("\tSetSampleRate Failed - error: %s\n", err)
|
log.Printf("\tSetSampleRate Failed - error: %s\n", err)
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
log.Printf("\tSetSampleRate - rate: %d\n", SampleRate)
|
|
||||||
}
|
}
|
||||||
|
log.Printf("\tSetSampleRate - rate: %d\n", SampleRate)
|
||||||
|
|
||||||
log.Printf("\tGetSampleRate: %d\n", u.dev.GetSampleRate())
|
log.Printf("\tGetSampleRate: %d\n", u.dev.GetSampleRate())
|
||||||
|
|
||||||
//---------- Get/Set Xtal Freq ----------
|
//---------- Get/Set Xtal Freq ----------
|
||||||
|
@ -211,19 +217,17 @@ func (u *UAT) sdrConfig() (err error) {
|
||||||
u.dev.Close()
|
u.dev.Close()
|
||||||
log.Printf("\tGetXtalFreq Failed - error: %s\n", err)
|
log.Printf("\tGetXtalFreq Failed - error: %s\n", err)
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
log.Printf("\tGetXtalFreq - Rtl: %d, Tuner: %d\n", rtlFreq, tunerFreq)
|
|
||||||
}
|
}
|
||||||
|
log.Printf("\tGetXtalFreq - Rtl: %d, Tuner: %d\n", rtlFreq, tunerFreq)
|
||||||
|
|
||||||
err = u.dev.SetXtalFreq(NewRTLFreq, NewTunerFreq)
|
err = u.dev.SetXtalFreq(NewRTLFreq, NewTunerFreq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
u.dev.Close()
|
u.dev.Close()
|
||||||
log.Printf("\tSetXtalFreq Failed - error: %s\n", err)
|
log.Printf("\tSetXtalFreq Failed - error: %s\n", err)
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
log.Printf("\tSetXtalFreq - Center freq: %d, Tuner freq: %d\n",
|
|
||||||
NewRTLFreq, NewTunerFreq)
|
|
||||||
}
|
}
|
||||||
|
log.Printf("\tSetXtalFreq - Center freq: %d, Tuner freq: %d\n",
|
||||||
|
NewRTLFreq, NewTunerFreq)
|
||||||
|
|
||||||
//---------- Get/Set Center Freq ----------
|
//---------- Get/Set Center Freq ----------
|
||||||
err = u.dev.SetCenterFreq(CenterFreq)
|
err = u.dev.SetCenterFreq(CenterFreq)
|
||||||
|
@ -231,9 +235,8 @@ func (u *UAT) sdrConfig() (err error) {
|
||||||
u.dev.Close()
|
u.dev.Close()
|
||||||
log.Printf("\tSetCenterFreq 978MHz Failed, error: %s\n", err)
|
log.Printf("\tSetCenterFreq 978MHz Failed, error: %s\n", err)
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
log.Printf("\tSetCenterFreq 978MHz Successful\n")
|
|
||||||
}
|
}
|
||||||
|
log.Printf("\tSetCenterFreq 978MHz Successful\n")
|
||||||
|
|
||||||
log.Printf("\tGetCenterFreq: %d\n", u.dev.GetCenterFreq())
|
log.Printf("\tGetCenterFreq: %d\n", u.dev.GetCenterFreq())
|
||||||
|
|
||||||
|
@ -243,17 +246,15 @@ func (u *UAT) sdrConfig() (err error) {
|
||||||
u.dev.Close()
|
u.dev.Close()
|
||||||
log.Printf("\tSetTunerBw %d Failed, error: %s\n", Bandwidth, err)
|
log.Printf("\tSetTunerBw %d Failed, error: %s\n", Bandwidth, err)
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
log.Printf("\tSetTunerBw %d Successful\n", Bandwidth)
|
|
||||||
}
|
}
|
||||||
|
log.Printf("\tSetTunerBw %d Successful\n", Bandwidth)
|
||||||
|
|
||||||
if err = u.dev.ResetBuffer(); err != nil {
|
if err = u.dev.ResetBuffer(); err != nil {
|
||||||
u.dev.Close()
|
u.dev.Close()
|
||||||
log.Printf("\tResetBuffer Failed - error: %s\n", err)
|
log.Printf("\tResetBuffer Failed - error: %s\n", err)
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
log.Printf("\tResetBuffer Successful\n")
|
|
||||||
}
|
}
|
||||||
|
log.Printf("\tResetBuffer Successful\n")
|
||||||
|
|
||||||
//---------- Get/Set Freq Correction ----------
|
//---------- Get/Set Freq Correction ----------
|
||||||
freqCorr := u.dev.GetFreqCorrection()
|
freqCorr := u.dev.GetFreqCorrection()
|
||||||
|
@ -265,9 +266,9 @@ func (u *UAT) sdrConfig() (err error) {
|
||||||
u.dev.Close()
|
u.dev.Close()
|
||||||
log.Printf("\tSetFreqCorrection %d Failed, error: %s\n", u.ppm, err)
|
log.Printf("\tSetFreqCorrection %d Failed, error: %s\n", u.ppm, err)
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
log.Printf("\tSetFreqCorrection %d Successful\n", u.ppm)
|
|
||||||
}
|
}
|
||||||
|
log.Printf("\tSetFreqCorrection %d Successful\n", u.ppm)
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -386,7 +387,7 @@ func createESDev(id int, serial string, idSet bool) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func configDevices(count int, es_enabled, uat_enabled bool) {
|
func configDevices(count int, esEnabled, uatEnabled bool) {
|
||||||
// once the tagged dongles have been assigned, explicitly range over
|
// once the tagged dongles have been assigned, explicitly range over
|
||||||
// the remaining IDs and assign them to any anonymous dongles
|
// the remaining IDs and assign them to any anonymous dongles
|
||||||
unusedIDs := make(map[int]string)
|
unusedIDs := make(map[int]string)
|
||||||
|
@ -398,9 +399,9 @@ func configDevices(count int, es_enabled, uat_enabled bool) {
|
||||||
// no need to check if createXDev returned an error; if it
|
// no need to check if createXDev returned an error; if it
|
||||||
// failed to config the error is logged and we can ignore
|
// failed to config the error is logged and we can ignore
|
||||||
// it here so it doesn't get queued up again
|
// it here so it doesn't get queued up again
|
||||||
if uat_enabled && UATDev == nil && rUAT.hasID(s) {
|
if uatEnabled && UATDev == nil && rUAT.hasID(s) {
|
||||||
createUATDev(i, s, true)
|
createUATDev(i, s, true)
|
||||||
} else if es_enabled && ESDev == nil && rES.hasID(s) {
|
} else if esEnabled && ESDev == nil && rES.hasID(s) {
|
||||||
createESDev(i, s, true)
|
createESDev(i, s, true)
|
||||||
} else {
|
} else {
|
||||||
unusedIDs[i] = s
|
unusedIDs[i] = s
|
||||||
|
@ -415,9 +416,9 @@ func configDevices(count int, es_enabled, uat_enabled bool) {
|
||||||
// dongles are set to the same stratux id and the unconsumed,
|
// dongles are set to the same stratux id and the unconsumed,
|
||||||
// non-anonymous, dongle makes it to this loop.
|
// non-anonymous, dongle makes it to this loop.
|
||||||
for i, s := range unusedIDs {
|
for i, s := range unusedIDs {
|
||||||
if uat_enabled && UATDev == nil && !rES.hasID(s) {
|
if uatEnabled && UATDev == nil && !rES.hasID(s) {
|
||||||
createUATDev(i, s, false)
|
createUATDev(i, s, false)
|
||||||
} else if es_enabled && ESDev == nil && !rUAT.hasID(s) {
|
} else if esEnabled && ESDev == nil && !rUAT.hasID(s) {
|
||||||
createESDev(i, s, false)
|
createESDev(i, s, false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -432,8 +433,8 @@ var shutdownUAT bool
|
||||||
// Watch for config/device changes.
|
// Watch for config/device changes.
|
||||||
func sdrWatcher() {
|
func sdrWatcher() {
|
||||||
prevCount := 0
|
prevCount := 0
|
||||||
prevUAT_Enabled := false
|
prevUATEnabled := false
|
||||||
prevES_Enabled := false
|
prevESEnabled := false
|
||||||
|
|
||||||
for {
|
for {
|
||||||
time.Sleep(1 * time.Second)
|
time.Sleep(1 * time.Second)
|
||||||
|
@ -470,8 +471,8 @@ func sdrWatcher() {
|
||||||
count = 2
|
count = 2
|
||||||
}
|
}
|
||||||
|
|
||||||
if count == prevCount && prevES_Enabled == globalSettings.ES_Enabled &&
|
if count == prevCount && prevESEnabled == globalSettings.ES_Enabled &&
|
||||||
prevUAT_Enabled == globalSettings.UAT_Enabled {
|
prevUATEnabled == globalSettings.UAT_Enabled {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -487,8 +488,8 @@ func sdrWatcher() {
|
||||||
configDevices(count, globalSettings.ES_Enabled, globalSettings.UAT_Enabled)
|
configDevices(count, globalSettings.ES_Enabled, globalSettings.UAT_Enabled)
|
||||||
|
|
||||||
prevCount = count
|
prevCount = count
|
||||||
prevUAT_Enabled = globalSettings.UAT_Enabled
|
prevUATEnabled = globalSettings.UAT_Enabled
|
||||||
prevES_Enabled = globalSettings.ES_Enabled
|
prevESEnabled = globalSettings.ES_Enabled
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue