5
5
"flag"
6
6
"fmt"
7
7
"github.com/myriadrf/limedrv"
8
+ "github.com/quan-to/slog"
8
9
"github.com/racerxdl/lms_tcp/rtltcp"
9
- "log"
10
10
"os"
11
11
"os/signal"
12
12
"strings"
@@ -16,14 +16,14 @@ import (
16
16
var listenAddress = flag .String ("a" , "" , "listen address" )
17
17
var listenPort = flag .Int ("p" , 1234 , "listen port (default: 1234)" )
18
18
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)" )
20
20
var maxBuffers = flag .Int ("b" , - 1 , "number of buffers (kept for compatibility, ignored here)" )
21
21
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 )" )
23
23
var antennaName = flag .String ("antenna" , "LNAL" , "antenna name (default: LNAL)" )
24
24
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)" )
27
27
var server * rtltcp.Server
28
28
29
29
var tunerValues []int
@@ -42,6 +42,10 @@ func OnSamples16(samples []int16, _ int, _ uint64) {
42
42
43
43
func main () {
44
44
flag .Parse ()
45
+ log := slog .Scope ("LMSTCP" )
46
+ slog .SetDebug (* verbose )
47
+ slog .SetShowLines (false )
48
+
45
49
addr := fmt .Sprintf ("%s:%d" , * listenAddress , * listenPort )
46
50
if * maxBuffers != - 1 {
47
51
fmt .Println ("WARNING: number of buffers ignored on lms_tcp" )
@@ -69,9 +73,9 @@ func main() {
69
73
dev .SetSampleRate (float64 (* sampleRate ), * oversampling )
70
74
71
75
if len (dev .RXChannels ) <= * channel {
72
- fmt . Printf ("Invalid channel: %d. Found channels: \n " , * channel )
76
+ log . Error ("Invalid channel: %d. Found channels: " , * channel )
73
77
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 " ))
75
79
}
76
80
return
77
81
}
@@ -80,7 +84,7 @@ func main() {
80
84
81
85
ch .Enable ().
82
86
SetAntennaByName (* antennaName ).
83
- SetGainDB ( uint ( * gain ) ).
87
+ SetGainNormalized ( 1 ).
84
88
SetLPF (float64 (* lpf )).
85
89
EnableLPF ().
86
90
SetCenterFrequency (106.3e6 )
@@ -104,7 +108,7 @@ func main() {
104
108
switch cmd .Type {
105
109
case rtltcp .SetSampleRate :
106
110
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 )
108
112
dev .Stop ()
109
113
dev .SetSampleRate (float64 (sampleRate ), * oversampling )
110
114
dev .Start ()
@@ -114,54 +118,45 @@ func main() {
114
118
case rtltcp .SetGain :
115
119
gain := binary .BigEndian .Uint32 (cmd .Param [:])
116
120
gainU := uint (gain / 4 )
117
- fmt . Printf ("Setting gain to %d\n " , gainU )
121
+ log . Info ("Setting gain to %d" , gainU )
118
122
dev .SetGainDB (* channel , true , gainU )
119
123
case rtltcp .SetGainMode :
120
124
case rtltcp .SetTunerGainByIndex :
121
125
gainIdx := binary .BigEndian .Uint32 (cmd .Param [:])
122
126
if uint32 (len (tunerValues )) > gainIdx {
123
127
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 )
125
129
dev .SetGainDB (* channel , true , uint (gain ))
126
130
} 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 ))
128
132
}
129
133
case rtltcp .SetFrequency :
130
134
frequency := binary .BigEndian .Uint32 (cmd .Param [:])
131
- fmt . Printf ("Setting frequency to %d\n " , frequency )
135
+ log . Info ("Setting frequency to %d" , frequency )
132
136
dev .SetCenterFrequency (* channel , true , float64 (frequency ))
133
137
return true
134
138
default :
135
- fmt . Printf ("Command %s not handled!\n " , cmd .Type )
139
+ log . Debug ("Command %s not handled!" , cmd .Type )
136
140
return true
137
141
}
138
142
139
143
return true
140
144
})
141
145
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 )
143
147
})
144
148
145
149
dev .Start ()
146
150
err := server .Start ()
147
151
if err != nil {
148
- fmt . Printf ("Error starting rtltcp: %s\n " , err )
152
+ log . Error ("Error starting rtltcp: %s" , err )
149
153
return
150
154
}
155
+ log .Info ("Setting gain to %d" , * gain )
156
+ ch .SetGainDB (uint (* gain ))
151
157
<- done
152
158
server .Stop ()
153
159
dev .Stop ()
154
160
155
- log .Println ("Closed!" )
161
+ log .Info ("Closed!" )
156
162
}
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
- */
0 commit comments