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
|
||||
|
||||
# TODO
|
||||
|
@ -18,20 +18,50 @@ PIDFILE=/var/run/${NAME}.pid
|
|||
LOGFILE=/var/log/${NAME}.log
|
||||
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
|
||||
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} -- ) >>${LOGFILE} 2>&1 &
|
||||
RETVAL=$?
|
||||
rpitx_fsk - --code ${CODE} -r ${RS} -s ${RS} -g ${TR_SWITCH_GPIO} --packed -- ) >>${LOGFILE} 2>&1 &
|
||||
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)
|
||||
parent=$(cat ${PIDFILE})
|
||||
children=$(ps -o pid= --ppid ${parent})
|
||||
kill ${children}
|
||||
rm ${PIDFILE}
|
||||
stop_service
|
||||
;;
|
||||
restart)
|
||||
$0 stop
|
||||
|
@ -46,7 +76,11 @@ case "$1" in
|
|||
fi
|
||||
;;
|
||||
*)
|
||||
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
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -41,12 +41,17 @@ void freedv_unpack(unsigned char *bits, unsigned char *bytes, int nbits);
|
|||
|
||||
bool running=true;
|
||||
static int terminate_calls = 0;
|
||||
ngfmdmasync *fmmod = NULL;
|
||||
|
||||
static void terminate(int num) {
|
||||
terminate_calls++;
|
||||
running=false;
|
||||
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 log2m;
|
||||
float shiftHz = -1;
|
||||
ngfmdmasync *fmmod = NULL;
|
||||
struct freedv *freedv = NULL;
|
||||
struct freedv_advanced adv;
|
||||
int fsk_ldpc = 0;
|
||||
|
@ -217,7 +221,7 @@ int main(int argc, char **argv)
|
|||
}
|
||||
testframes = 1;
|
||||
Nframes = atoi(optarg);
|
||||
fprintf(stderr, "Sending %d testframes...\n", Nframes);
|
||||
fprintf(stderr, "rpitx_fsk: Sending %d testframe(s)...\n", Nframes);
|
||||
break;
|
||||
case 'g':
|
||||
strcpy(ant_switch_gpio, optarg);
|
||||
|
@ -266,7 +270,7 @@ int main(int argc, char **argv)
|
|||
assert(freedv != NULL);
|
||||
data_bits_per_frame = freedv_get_bits_per_modem_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 */
|
||||
/* 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->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, "data_bits_per_frame: %d bits_per_frame: %d\n", data_bits_per_frame, bits_per_frame);
|
||||
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, "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)) {
|
||||
// FSK Tx --------------------------------------------------------------------
|
||||
|
@ -343,7 +347,7 @@ int main(int argc, char **argv)
|
|||
float tdelay = (float)bufferSamples/SymbolRate;
|
||||
usleep((int)(tdelay*1E6));
|
||||
|
||||
printf("End of this burst\n");
|
||||
printf("rpitx_fsk: End of this burst\n");
|
||||
|
||||
// transmitter carrier off between bursts
|
||||
delete fmmod;
|
||||
|
|
Loading…
Reference in New Issue