mirror of https://github.com/drowe67/pirip.git
local ping test working
parent
ad8f95576d
commit
dc9c61353e
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash -x
|
#!/bin/bash
|
||||||
# frame repeater service
|
# frame repeater service
|
||||||
|
|
||||||
# TODO
|
# TODO
|
||||||
|
@ -18,20 +18,50 @@ PIDFILE=/var/run/${NAME}.pid
|
||||||
LOGFILE=/var/log/${NAME}.log
|
LOGFILE=/var/log/${NAME}.log
|
||||||
PATH=${PIRIP_PATH}/tx:${PIRIP_PATH}/librtlsdr/build_rtlsdr/src:${PATH}
|
PATH=${PIRIP_PATH}/tx:${PIRIP_PATH}/librtlsdr/build_rtlsdr/src:${PATH}
|
||||||
|
|
||||||
|
function tx_burst_rpitx {
|
||||||
|
num_bursts=$1
|
||||||
|
pause_between_bursts=$2
|
||||||
|
tmp=$(mktemp)
|
||||||
|
for (( i=1; i<=$num_bursts; i++ ))
|
||||||
|
do
|
||||||
|
printf "%d Tx burst %d from RPiTx...\n" `date +%s` ${i} 1>&2
|
||||||
|
rpitx_fsk /dev/zero --code H_256_512_4 -r ${RS} -s ${RS} --testframes 1 -g 21 -m 2
|
||||||
|
sleep $pause_between_bursts
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function start_rx {
|
||||||
|
rtl_fsk -g 49 -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
|
case "$1" in
|
||||||
start)
|
start)
|
||||||
( rtl_fsk -g 49 -f 144490000 - -a 200000 -r ${RS} --code ${CODE} --mask ${RS} --filter ${TERM_ADDR} -q -b | \
|
( 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} | \
|
frame_repeater ${DATA_BITS_PER_FRAME} ${TERM_ADDR} | \
|
||||||
rpitx_fsk - --code ${CODE} -r ${RS} -s ${RS} -g ${TR_SWITCH_GPIO} -- ) >>${LOGFILE} 2>&1 &
|
rpitx_fsk - --code ${CODE} -r ${RS} -s ${RS} -g ${TR_SWITCH_GPIO} --packed -- ) >>${LOGFILE} 2>&1 &
|
||||||
RETVAL=$?
|
|
||||||
echo $!>${PIDFILE}
|
echo $!>${PIDFILE}
|
||||||
[ $RETVAL = 0 ] && echo -ne '\t\t\t\t\t[ \033[32mOK\033[0m ]\n'
|
;;
|
||||||
|
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)
|
||||||
|
verbose=1
|
||||||
|
start_rx && sleep 1 && tx_burst_rpitx 1 1 && stop_service
|
||||||
;;
|
;;
|
||||||
stop)
|
stop)
|
||||||
parent=$(cat ${PIDFILE})
|
stop_service
|
||||||
children=$(ps -o pid= --ppid ${parent})
|
|
||||||
kill ${children}
|
|
||||||
rm ${PIDFILE}
|
|
||||||
;;
|
;;
|
||||||
restart)
|
restart)
|
||||||
$0 stop
|
$0 stop
|
||||||
|
@ -47,6 +77,10 @@ case "$1" in
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Usage: $0 {start|stop|status|restart}"
|
echo "Usage: $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 - local loopback test, tx/rx a single packet"
|
||||||
esac
|
esac
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
@ -41,12 +41,17 @@ void freedv_unpack(unsigned char *bits, unsigned char *bytes, int nbits);
|
||||||
|
|
||||||
bool running=true;
|
bool running=true;
|
||||||
static int terminate_calls = 0;
|
static int terminate_calls = 0;
|
||||||
|
ngfmdmasync *fmmod = NULL;
|
||||||
|
|
||||||
static void terminate(int num) {
|
static void terminate(int num) {
|
||||||
terminate_calls++;
|
terminate_calls++;
|
||||||
running=false;
|
running=false;
|
||||||
fprintf(stderr,"Caught signal %d - Terminating\n", num);
|
fprintf(stderr,"Caught signal %d - Terminating\n", num);
|
||||||
if (terminate_calls >= 5) exit(1);
|
if (terminate_calls >= 5) {
|
||||||
|
// make sure TX is off if we have to abort
|
||||||
|
if (fmmod) delete fmmod;
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -109,7 +114,6 @@ int main(int argc, char **argv)
|
||||||
int m = 2;
|
int m = 2;
|
||||||
int log2m;
|
int log2m;
|
||||||
float shiftHz = -1;
|
float shiftHz = -1;
|
||||||
ngfmdmasync *fmmod = NULL;
|
|
||||||
struct freedv *freedv = NULL;
|
struct freedv *freedv = NULL;
|
||||||
struct freedv_advanced adv;
|
struct freedv_advanced adv;
|
||||||
int fsk_ldpc = 0;
|
int fsk_ldpc = 0;
|
||||||
|
@ -217,7 +221,7 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
testframes = 1;
|
testframes = 1;
|
||||||
Nframes = atoi(optarg);
|
Nframes = atoi(optarg);
|
||||||
fprintf(stderr, "Sending %d testframes...\n", Nframes);
|
fprintf(stderr, "rpitx_fsk: Sending %d testframe(s)...\n", Nframes);
|
||||||
break;
|
break;
|
||||||
case 'g':
|
case 'g':
|
||||||
strcpy(ant_switch_gpio, optarg);
|
strcpy(ant_switch_gpio, optarg);
|
||||||
|
@ -266,7 +270,7 @@ int main(int argc, char **argv)
|
||||||
assert(freedv != NULL);
|
assert(freedv != NULL);
|
||||||
data_bits_per_frame = freedv_get_bits_per_modem_frame(freedv);
|
data_bits_per_frame = freedv_get_bits_per_modem_frame(freedv);
|
||||||
bits_per_frame = freedv_tx_fsk_ldpc_bits_per_frame(freedv);
|
bits_per_frame = freedv_tx_fsk_ldpc_bits_per_frame(freedv);
|
||||||
fprintf(stderr, "FSK LDPC mode code: %s data_bits_per_frame: %d\n", adv.codename, data_bits_per_frame);
|
fprintf(stderr, "rpitx_fsk: FSK LDPC mode code: %s data_bits_per_frame: %d\n", adv.codename, data_bits_per_frame);
|
||||||
|
|
||||||
/* set up preamble */
|
/* set up preamble */
|
||||||
/* TODO: this should be a freeDV API function */
|
/* TODO: this should be a freeDV API function */
|
||||||
|
@ -290,8 +294,8 @@ int main(int argc, char **argv)
|
||||||
//fmmod = new ngfmdmasync(frequency,SymbolRate,14,FIFO_SIZE);
|
//fmmod = new ngfmdmasync(frequency,SymbolRate,14,FIFO_SIZE);
|
||||||
//fmmod->clkgpio::disableclk(4);
|
//fmmod->clkgpio::disableclk(4);
|
||||||
|
|
||||||
fprintf(stderr, "Frequency: %4.1f MHz Rs: %4.1f kHz Shift: %4.1f kHz M: %d \n", frequency/1E6, SymbolRate/1E3, shiftHz/1E3, m);
|
fprintf(stderr, "rpitx_fsk: Frequency: %4.1f MHz Rs: %4.1f kHz Shift: %4.1f kHz M: %d \n", frequency/1E6, SymbolRate/1E3, shiftHz/1E3, m);
|
||||||
fprintf(stderr, "data_bits_per_frame: %d bits_per_frame: %d\n", data_bits_per_frame, bits_per_frame);
|
fprintf(stderr, "rpitx_fsk: data_bits_per_frame: %d bits_per_frame: %d\n", data_bits_per_frame, bits_per_frame);
|
||||||
|
|
||||||
if ((carrier_test == 0) && (one_zero_test == 0)) {
|
if ((carrier_test == 0) && (one_zero_test == 0)) {
|
||||||
// FSK Tx --------------------------------------------------------------------
|
// FSK Tx --------------------------------------------------------------------
|
||||||
|
@ -343,7 +347,7 @@ int main(int argc, char **argv)
|
||||||
float tdelay = (float)bufferSamples/SymbolRate;
|
float tdelay = (float)bufferSamples/SymbolRate;
|
||||||
usleep((int)(tdelay*1E6));
|
usleep((int)(tdelay*1E6));
|
||||||
|
|
||||||
printf("End of this burst\n");
|
printf("rpitx_fsk: End of this burst\n");
|
||||||
|
|
||||||
// transmitter carrier off between bursts
|
// transmitter carrier off between bursts
|
||||||
delete fmmod;
|
delete fmmod;
|
||||||
|
|
Loading…
Reference in New Issue