Skip to content

Commit f778be4

Browse files
committed
Add I16 mode
1 parent a9dad82 commit f778be4

File tree

4 files changed

+34
-14
lines changed

4 files changed

+34
-14
lines changed

cmd/lms_tcp.go

+10-2
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ func OnSamples(samples []complex64, _ int, _ uint64) {
4040
}
4141
}
4242

43+
func OnSamples16(samples []int16, _ int, _ uint64) {
44+
if server != nil {
45+
server.I16Broadcast(samples)
46+
}
47+
}
48+
4349
func main() {
4450
flag.Parse()
4551
addr := fmt.Sprintf("%s:%d", *listenAddress, *listenPort)
@@ -63,6 +69,10 @@ func main() {
6369
dev := limedrv.Open(devices[*deviceIndex])
6470
defer dev.Close()
6571

72+
dev.SetI16CallbackMode(true)
73+
dev.SetI16Callback(OnSamples16)
74+
dev.SetCallback(OnSamples)
75+
6676
dev.SetSampleRate(float64(*sampleRate), *oversampling)
6777

6878
if len(dev.RXChannels) <= *channel {
@@ -82,8 +92,6 @@ func main() {
8292
EnableLPF().
8393
SetCenterFrequency(106.3e6)
8494

85-
dev.SetCallback(OnSamples)
86-
8795
sigs := make(chan os.Signal, 1)
8896
done := make(chan bool, 1)
8997
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ go 1.14
44

55
require (
66
github.com/google/uuid v1.2.0
7-
github.com/myriadrf/limedrv v0.0.0-20191110180121-2887b3325268
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

go.sum

+2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5
3333
github.com/myriadrf/limedrv v0.0.0-20190225221912-8583a26e3fce/go.mod h1:/SXVBJBHAVLlvLU1B1n0a0QPcZBtqF1VpH5POPZzuBw=
3434
github.com/myriadrf/limedrv v0.0.0-20191110180121-2887b3325268 h1:eipZKpYRfrubDbzFB0CNksuXMf5eFLOlzK28P89HzSs=
3535
github.com/myriadrf/limedrv v0.0.0-20191110180121-2887b3325268/go.mod h1:pdymsBM5+Hvv+N9d4mfKKFnkoczunZ+4VtrNwlKSRP0=
36+
github.com/myriadrf/limedrv v0.0.0-20210219013226-63abe3cea27a h1:UuCXfsb0yZXgZYpcLCFQjotkV9GHN43fY/oh8qv23oM=
37+
github.com/myriadrf/limedrv v0.0.0-20210219013226-63abe3cea27a/go.mod h1:pdymsBM5+Hvv+N9d4mfKKFnkoczunZ+4VtrNwlKSRP0=
3638
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
3739
github.com/prometheus/client_golang v0.9.2 h1:awm861/B8OKDd2I/6o1dy3ra4BamzKhYOiGItCeZ740=
3840
github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM=

rtltcp/server.go

+21-11
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"github.com/google/uuid"
88
"github.com/quan-to/slog"
99
"github.com/racerxdl/go.fifo"
10-
"github.com/racerxdl/qo100-dedrift/metrics"
1110
"net"
1211
"runtime"
1312
"strings"
@@ -88,10 +87,27 @@ func (server *Server) Stop() {
8887
}
8988
}
9089

90+
func (server *Server) I16Broadcast(data []int16) {
91+
if server.bufferFifo.Len()+len(data) > maxFifoLength {
92+
// Discard data
93+
_ = server.bufferFifo.NextN(len(data))
94+
}
95+
96+
iqBytes := make([]byte, len(data))
97+
for i := 0; i < len(data)/2; i++ {
98+
rv := data[i*2] >> 8
99+
iv := data[i*2+1] >> 8
100+
iqBytes[i*2] = uint8(rv)
101+
iqBytes[i*2+1] = uint8(iv)
102+
}
103+
104+
server.bufferFifo.Add(iqBytes)
105+
}
106+
91107
func (server *Server) ComplexBroadcast(data []complex64) {
92-
if server.bufferFifo.Len() > maxFifoLength {
93-
log.Error("TX Fifo full!")
94-
return
108+
if server.bufferFifo.Len()+len(data) > maxFifoLength {
109+
// Discard data
110+
_ = server.bufferFifo.NextN(len(data))
95111
}
96112

97113
iqBytes := make([]byte, len(data)*2)
@@ -134,8 +150,7 @@ func (server *Server) broadcast(data []byte) {
134150
payload := data[s:e]
135151

136152
for _, v := range server.connections {
137-
n, _ := v.conn.Write(payload)
138-
metrics.BytesOut.Add(float64(n))
153+
_, _ = v.conn.Write(payload)
139154
}
140155
}
141156
server.connectionLock.Unlock()
@@ -229,9 +244,6 @@ func (server *Server) handleRequest(conn net.Conn) {
229244
server.onConnectCb(session.id, session.conn.RemoteAddr().String())
230245
}
231246

232-
metrics.TotalConnections.Inc()
233-
metrics.Connections.Inc()
234-
235247
for running {
236248
_ = conn.SetReadDeadline(time.Now().Add(defaultReadTimeout))
237249
n, err := conn.Read(buffer)
@@ -267,7 +279,6 @@ func (server *Server) handleRequest(conn net.Conn) {
267279
continue
268280
}
269281
server.handlePacket(session, cmd)
270-
metrics.BytesIn.Add(float64(n))
271282
}
272283
}
273284
server.connectionLock.Lock()
@@ -280,6 +291,5 @@ func (server *Server) handleRequest(conn net.Conn) {
280291
server.connectionLock.Unlock()
281292
_ = conn.Close()
282293

283-
metrics.Connections.Dec()
284294
clog.Info("Connection closed.")
285295
}

0 commit comments

Comments
 (0)