
INSTALLATION
============

1. Obtain the app_rpt source tree 

2. Copy chan_usrp.c and chan_usrp.h to subdir "asterisk/channels/"

3. Build and install asterisk app_rpt; confirm chan_usrp is included

4. In your /etc/asterisk/rpt.conf file create a new, numbered node entry
   for each separate discrete radio voice channel, such as for example:

[000]
rxchannel = usrp/192.168.2.55:34001:32001
duplex = 2
scheduler=scheduler
functions = functions-repeater
hangtime=0
authlevel = 0

[001]
rxchannel = usrp/192.168.2.55:34002:32002
duplex = 2
scheduler=scheduler
functions = functions-repeater
hangtime=0
authlevel = 0

    Its invoked as usrp/HISIP:HISPORT[:MYPORT]       
    HISIP is the IP address (or FQDN) of the GR app
    HISPORT is the UDP socket of the GR app
    MYPORT (optional) is the UDP socket that Asterisk listens on
             for this channel   

5. You can use the "usrp show" command from within the asterisk CLI.
   Another handy command is "rpt playback" to initiate a transmission on
   any desired channel.

6. Here is a recipe for "dumb PTT" or "hotline" operation.  This is the most
   basic bread-and-butter remote TX setup using a standard (channel bank)
   interface.

   A standard FXS port on the channel bank is defined in zapata.conf with

signalling=fxo_ls
immediate=yes
context = chan1
channel => 1

   An offhook (PTT) signal from user equipment on the FXS channel bank port 
   (due to the immmediate=yes) starts processing in extensions.conf:

[chan1]
exten => s,1,Dial(local/1@radio/n)
   This jumps to exten "1" in
[radio]
exten => 1,1,rpt(000|D)
exten => 2,1,rpt(001|D)
exten => 3,1,rpt(002|D)
exten => 4,1,rpt(003|D)
exten => 5,1,rpt(004|D)

   So the call resulting from the offhook (PTT) signal is routed to 
   extension "1" in context [radio] where it's connected to the desired
   repeater node (channel).  If the GR app is running it will initiate
   radio transmission.  An onhook signal on the FXS channel bank port
   causes the end of the transmission by ending the asterisk call in
   progress*. The hangtime=0 setting in rpt.conf was used to reduce the
   tail delay in this setup.

   *The end of the transmission may be modified however, for example when
   app_rpt appends an "ID" or if a "timeout" occurs ;-)

7. Don't have a channel bank?  Here is a poor man's DIY alternative [hack]
   http://www.lightlink.com/mhp/x100pem/

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The apps are located in repeater/python

usrp_rx
=======
This app captures several P25 (e.g., trunked system) channels simultaneously,
writing separate, parallel voice data streams for each channel to app_rpt,
(or, optionally, writing all received data to Wireshark).  It has been
optimized for LSM/CQPSK.

Example
 [precise calibration is important]
 [say kalibrate suggests that +2000 would be a good calibration value]
./usrp_rx.py -RA -g 32 -H 192.168.2.6  -c 2000 -d 5

Before running the app you must edit the lines containing the system
frequencies and center (tuning) frequency.  The total span of these
frequencies can't exceed 1 MHz (without program changes).

usrp_tx
=======
This app transmits several simultaneous parallel P25 channels under control
of app_rpt.

Example
./usrp_tx.py -f 53.175e6 -n 3 -e
