udp rx/tx linkage docs/examples
This commit is contained in:
parent
27ea95ee38
commit
5c5bd11a0c
|
@ -0,0 +1,2 @@
|
||||||
|
"Sysname" "Control Channel List" "Offset" "NAC" "Modulation" "TGID Tags File" "Whitelist" "Blacklist" "Center Frequency"
|
||||||
|
"Fake" "925.0" "0" "0x293" "FSK4" "" "" "" "924.95"
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
|
||||||
|
Linking OP25 TX and RX December 2020
|
||||||
|
===================================================================
|
||||||
|
|
||||||
|
The OP25 TX application can be configured to transmit one or more
|
||||||
|
channels directly to one of the RX apps (rx.py or multi_rx.py) in
|
||||||
|
each case by specifying a device args string of the form
|
||||||
|
udp:host:port
|
||||||
|
where host and port are the IP address and UDP port number,
|
||||||
|
respectively. Typically, the TX is started first followed by
|
||||||
|
the RX, but they can be started in any order. UDP port 25252 is
|
||||||
|
used in the examples.
|
||||||
|
|
||||||
|
The sample RX script is in runudp.sh, and the sample TX json config
|
||||||
|
is in cfg-900.json .
|
||||||
|
|
||||||
|
To start the TX
|
||||||
|
cd .../op25/op25-gr_repeater/apps/tx
|
||||||
|
./multi_tx.py -c ../cfg-900.json
|
||||||
|
|
||||||
|
The RX is started with
|
||||||
|
cd .../op25/op25-gr_repeater/apps
|
||||||
|
./runudp.sh
|
||||||
|
|
||||||
|
There is a 120KHz sized block of spectrum transmitted (SR=120000)
|
||||||
|
which is treated as complex baseband with each side pretending that
|
||||||
|
the spectrum is converted to/from the 900 MHz band. On the RX side
|
||||||
|
any frequency-change requests are ignored; instead, a "center
|
||||||
|
frequency" is defined. There are two channels (P25 trunk control
|
||||||
|
channel and P25 voice channel) spaced at 50 KHz separation.
|
||||||
|
|
||||||
|
The TX reads two data files that must be created beforehand. To
|
||||||
|
create the trunk control channel data symbol file, refer to
|
||||||
|
tx/README-fakecc.txt
|
||||||
|
An audio file (PCM/ rate 8000 / mono / signed int16) must also be
|
||||||
|
created - this file will be real-time encoded with the voice codec
|
||||||
|
and sent on the P25 voice channel. These two files must be defined
|
||||||
|
in the cfg-900.json file (channel "source" keyword).
|
|
@ -5,9 +5,9 @@
|
||||||
"destination": "udp://127.0.0.1:56120",
|
"destination": "udp://127.0.0.1:56120",
|
||||||
"excess_bw": 0.2,
|
"excess_bw": 0.2,
|
||||||
"filter_type": "rc",
|
"filter_type": "rc",
|
||||||
"frequency": 925000000,
|
"frequency": 924975000,
|
||||||
"if_rate": 24000,
|
"if_rate": 24000,
|
||||||
"name": "p25 cc",
|
"name": "p25 control channel",
|
||||||
"plot": "datascope",
|
"plot": "datascope",
|
||||||
"source": "symbols:sym-cc925.dat",
|
"source": "symbols:sym-cc925.dat",
|
||||||
"symbol_rate": 4800
|
"symbol_rate": 4800
|
||||||
|
@ -17,9 +17,9 @@
|
||||||
"destination": "udp://127.0.0.1:56124",
|
"destination": "udp://127.0.0.1:56124",
|
||||||
"excess_bw": 0.2,
|
"excess_bw": 0.2,
|
||||||
"filter_type": "rc",
|
"filter_type": "rc",
|
||||||
"frequency": 924900000,
|
"frequency": 924925000,
|
||||||
"if_rate": 24000,
|
"if_rate": 24000,
|
||||||
"name": "p25 vc",
|
"name": "p25 voice channel",
|
||||||
"plot": "datascope",
|
"plot": "datascope",
|
||||||
"source": "/home/mhp/rand4.raw",
|
"source": "/home/mhp/rand4.raw",
|
||||||
"symbol_rate": 4800
|
"symbol_rate": 4800
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
"name": "udp",
|
"name": "udp",
|
||||||
"offset": 0,
|
"offset": 0,
|
||||||
"ppm": 0,
|
"ppm": 0,
|
||||||
"rate": 480000,
|
"rate": 120000,
|
||||||
"tunable": false
|
"tunable": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
t="-T 900.tsv"
|
||||||
|
sr="-S 120000"
|
||||||
|
v="-v 255"
|
||||||
|
|
||||||
|
python3 rx.py --args "udp:127.0.0.1:25252" -f 924975000 $sr -q 0 -D fsk4 -P "datascope" -V -w -v 255 $t $v 2> stderr.2
|
|
@ -212,7 +212,7 @@ class tx_block(gr.top_block):
|
||||||
continue
|
continue
|
||||||
cfg = chan.config
|
cfg = chan.config
|
||||||
dev = chan.device
|
dev = chan.device
|
||||||
modulator_rate = 48000 ## FIXME
|
modulator_rate = 24000 ## FIXME
|
||||||
bt = _def_bt
|
bt = _def_bt
|
||||||
if 'bt' in cfg.keys():
|
if 'bt' in cfg.keys():
|
||||||
bt = cfg['bt']
|
bt = cfg['bt']
|
||||||
|
|
Loading…
Reference in New Issue