mirror of
https://github.com/Qortal/Brooklyn.git
synced 2025-02-01 07:42:18 +00:00
91 lines
2.7 KiB
Bash
91 lines
2.7 KiB
Bash
#!/bin/bash
|
|
# frame repeater service
|
|
|
|
# TODO
|
|
# [X] way to send stderr to log file
|
|
# [ ] way to set freq at start up
|
|
# [ ] way to set Rs and M at start up
|
|
# [ ] way to start as frame repeater or beacon
|
|
|
|
TERM_ADDR=0x2
|
|
RS=10000
|
|
DATA_BITS_PER_FRAME=256
|
|
CODE=H_${DATA_BITS_PER_FRAME}_512_4
|
|
TR_SWITCH_GPIO=21
|
|
PIRIP_PATH=/home/pi/pirip
|
|
NAME=frame_repeater
|
|
PIDFILE=/var/run/${NAME}.pid
|
|
LOGFILE=/var/log/${NAME}.log
|
|
PATH=${PIRIP_PATH}/tx:${PIRIP_PATH}/librtlsdr/build_rtlsdr/src:${PATH}
|
|
GAIN="${GAIN:-49}"
|
|
|
|
function tx_burst_rpitx {
|
|
num_bursts=$1
|
|
rpitx_fsk /dev/zero --code H_256_512_4 -r ${RS} -s ${RS} --testframes 3 --bursts ${num_bursts} --delay 2000 -g 21 -m 2
|
|
#rpitx_fsk -c
|
|
}
|
|
|
|
function start_rx {
|
|
rtl_fsk -g ${GAIN} -f 144490000 - -a 200000 -r ${RS} --code H_256_512_4 --mask ${RS} -L $1 > /dev/null &
|
|
echo $!>${PIDFILE}
|
|
}
|
|
|
|
function stop_service {
|
|
echo "service stopping - bye!" 1>&2
|
|
parent=$(cat ${PIDFILE})
|
|
kill ${parent}
|
|
rm ${PIDFILE}
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
( rtl_fsk -g 49 -f 144490000 - -a 200000 -r ${RS} --code ${CODE} --mask ${RS} --filter ${TERM_ADDR} -q -b | \
|
|
frame_repeater ${DATA_BITS_PER_FRAME} ${TERM_ADDR} | \
|
|
rpitx_fsk - --code ${CODE} -r ${RS} -s ${RS} -g ${TR_SWITCH_GPIO} --packed -- ) >>${LOGFILE} 2>&1 &
|
|
echo $!>${PIDFILE}
|
|
;;
|
|
start_verbose)
|
|
# run in the foreground and log to stderr instead of a logfile
|
|
rtl_fsk -g 49 -f 144490000 - -a 200000 -r ${RS} --code ${CODE} --mask ${RS} --filter ${TERM_ADDR} -q -b -v | \
|
|
frame_repeater ${DATA_BITS_PER_FRAME} ${TERM_ADDR} | \
|
|
rpitx_fsk - --code ${CODE} -r ${RS} -s ${RS} -g ${TR_SWITCH_GPIO} --packed --
|
|
;;
|
|
start_loopback)
|
|
# Send packets from Pi to RTLSDR on this machine (no filtering of packets or frame repeater)
|
|
set -x
|
|
verbose=1
|
|
start_rx
|
|
sleep 1
|
|
if ! ps -p $(cat ${PIDFILE}); then
|
|
echo "rtl_fsk failed to start!"
|
|
rm ${PIDFILE}
|
|
exit 1
|
|
fi
|
|
tx_burst_rpitx $2
|
|
stop_service
|
|
;;
|
|
stop)
|
|
stop_service
|
|
;;
|
|
restart)
|
|
$0 stop
|
|
$0 start
|
|
;;
|
|
status)
|
|
if [ -e ${PIDFILE} ]; then
|
|
echo ${NAME} is running, pid=`cat ${PIDFILE}`
|
|
else
|
|
echo$ {NAME} is NOT running
|
|
exit 1
|
|
fi
|
|
;;
|
|
*)
|
|
echo "Usage: sudo $0 {start|stop|status|restart}"
|
|
echo ""
|
|
echo "start - Start frame repeater service, logfile is ${LOGFILE}"
|
|
echo "start_verbose - Start frame repeater in foreground, no logfile"
|
|
echo "start_loopback numBursts - Local loopback test, tx/rx numBursts"
|
|
esac
|
|
|
|
exit 0
|