Skip to content

Commit 26f8ff7

Browse files
committed
Optimized the reception
1 parent fc72982 commit 26f8ff7

File tree

2 files changed

+24
-30
lines changed

2 files changed

+24
-30
lines changed

cmd/lms_tcp.go

+23-28
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import (
55
"flag"
66
"fmt"
77
"github.com/myriadrf/limedrv"
8+
"github.com/quan-to/slog"
89
"github.com/racerxdl/lms_tcp/rtltcp"
9-
"log"
1010
"os"
1111
"os/signal"
1212
"strings"
@@ -16,14 +16,14 @@ import (
1616
var listenAddress = flag.String("a", "", "listen address")
1717
var listenPort = flag.Int("p", 1234, "listen port (default: 1234)")
1818
var gain = flag.Int("g", 0, "gain (default: 0 for auto)")
19-
var sampleRate = flag.Int("s", 2048000, "sample rate in Hz (default: 2048000 Hz)")
19+
var sampleRate = flag.Int("s", 4000000, "sample rate in Hz (default: 2048000 Hz)")
2020
var maxBuffers = flag.Int("b", -1, "number of buffers (kept for compatibility, ignored here)")
2121
var deviceIndex = flag.Int("d", 0, "device index (default: 0)")
22-
var oversampling = flag.Int("ov", 16, "oversampling (default: 8)")
22+
var oversampling = flag.Int("ov", 0, "oversampling (default: 0, maximum possible)")
2323
var antennaName = flag.String("antenna", "LNAL", "antenna name (default: LNAL)")
2424
var channel = flag.Int("channel", 0, "channel number (default: 0)")
25-
var lpf = flag.Int("lpf", 3000000, "low pass filter (default 2500000)")
26-
25+
var lpf = flag.Int("lpf", 2500000, "low pass filter (default 2500000)")
26+
var verbose = flag.Bool("v", false, "verbose mode (default: off)")
2727
var server *rtltcp.Server
2828

2929
var tunerValues []int
@@ -42,6 +42,10 @@ func OnSamples16(samples []int16, _ int, _ uint64) {
4242

4343
func main() {
4444
flag.Parse()
45+
log := slog.Scope("LMSTCP")
46+
slog.SetDebug(*verbose)
47+
slog.SetShowLines(false)
48+
4549
addr := fmt.Sprintf("%s:%d", *listenAddress, *listenPort)
4650
if *maxBuffers != -1 {
4751
fmt.Println("WARNING: number of buffers ignored on lms_tcp")
@@ -69,9 +73,9 @@ func main() {
6973
dev.SetSampleRate(float64(*sampleRate), *oversampling)
7074

7175
if len(dev.RXChannels) <= *channel {
72-
fmt.Printf("Invalid channel: %d. Found channels: \n", *channel)
76+
log.Error("Invalid channel: %d. Found channels: ", *channel)
7377
for i, v := range dev.RXChannels {
74-
fmt.Printf(" %d: %s\n", i, strings.ReplaceAll(v.String(), "\n", "\n\t"))
78+
log.Error(" %d: %s", i, strings.ReplaceAll(v.String(), "\n", "\n\t"))
7579
}
7680
return
7781
}
@@ -80,7 +84,7 @@ func main() {
8084

8185
ch.Enable().
8286
SetAntennaByName(*antennaName).
83-
SetGainDB(uint(*gain)).
87+
SetGainNormalized(1).
8488
SetLPF(float64(*lpf)).
8589
EnableLPF().
8690
SetCenterFrequency(106.3e6)
@@ -104,7 +108,7 @@ func main() {
104108
switch cmd.Type {
105109
case rtltcp.SetSampleRate:
106110
sampleRate := binary.BigEndian.Uint32(cmd.Param[:])
107-
fmt.Printf("Setting sample rate to %d\n", sampleRate)
111+
log.Info("Setting sample rate to %d with oversampling factor %d", sampleRate, *oversampling)
108112
dev.Stop()
109113
dev.SetSampleRate(float64(sampleRate), *oversampling)
110114
dev.Start()
@@ -114,54 +118,45 @@ func main() {
114118
case rtltcp.SetGain:
115119
gain := binary.BigEndian.Uint32(cmd.Param[:])
116120
gainU := uint(gain / 4)
117-
fmt.Printf("Setting gain to %d\n", gainU)
121+
log.Info("Setting gain to %d", gainU)
118122
dev.SetGainDB(*channel, true, gainU)
119123
case rtltcp.SetGainMode:
120124
case rtltcp.SetTunerGainByIndex:
121125
gainIdx := binary.BigEndian.Uint32(cmd.Param[:])
122126
if uint32(len(tunerValues)) > gainIdx {
123127
gain := tunerValues[gainIdx]
124-
fmt.Printf("Setting gain to %d (idx %d)\n", gain, gainIdx)
128+
log.Info("Setting gain to %d (idx %d)", gain, gainIdx)
125129
dev.SetGainDB(*channel, true, uint(gain))
126130
} else {
127-
fmt.Printf("Received gain index: %d but that's invalid. maximum is %d\n", gainIdx, len(tunerValues))
131+
log.Error("Received gain index: %d but that's invalid. maximum is %d", gainIdx, len(tunerValues))
128132
}
129133
case rtltcp.SetFrequency:
130134
frequency := binary.BigEndian.Uint32(cmd.Param[:])
131-
fmt.Printf("Setting frequency to %d\n", frequency)
135+
log.Info("Setting frequency to %d", frequency)
132136
dev.SetCenterFrequency(*channel, true, float64(frequency))
133137
return true
134138
default:
135-
fmt.Printf("Command %s not handled!\n", cmd.Type)
139+
log.Debug("Command %s not handled!", cmd.Type)
136140
return true
137141
}
138142

139143
return true
140144
})
141145
server.SetOnConnect(func(sessionId string, address string) {
142-
fmt.Printf("New connection from %s [%s]\n", address, sessionId)
146+
log.Debug("New connection from %s [%s]", address, sessionId)
143147
})
144148

145149
dev.Start()
146150
err := server.Start()
147151
if err != nil {
148-
fmt.Printf("Error starting rtltcp: %s\n", err)
152+
log.Error("Error starting rtltcp: %s", err)
149153
return
150154
}
155+
log.Info("Setting gain to %d", *gain)
156+
ch.SetGainDB(uint(*gain))
151157
<-done
152158
server.Stop()
153159
dev.Stop()
154160

155-
log.Println("Closed!")
161+
log.Info("Closed!")
156162
}
157-
158-
/*
159-
-a listen address
160-
-p listen port (default: 1234)
161-
-f frequency to tune to [Hz]
162-
-g gain (default: 0 for auto)
163-
-s samplerate in Hz (default: 2048000 Hz)
164-
-b number of buffers (default: 32, set by library)
165-
-n max number of linked list buffers to keep (default: 500)
166-
-d device_index (default: 0)
167-
*/

go.mod

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@ go 1.14
44

55
require (
66
github.com/google/uuid v1.2.0
7-
github.com/myriadrf/limedrv v0.0.0-20210219032128-f4b5cc97de4d
7+
github.com/myriadrf/limedrv v0.0.0-20210219013226-63abe3cea27a
88
github.com/quan-to/slog v0.1.1
99
github.com/racerxdl/go.fifo v0.0.0-20190324175329-e4cbb374dbb0
1010
github.com/racerxdl/qo100-dedrift v0.0.0-20210123043710-107d0cdc70e1
1111
)
12-

0 commit comments

Comments
 (0)