2018-11-27 14:36:39 +00:00
#!/bin/sh
2021-02-01 15:43:33 +00:00
abort_action = 0
2018-12-01 00:00:00 +00:00
2018-11-24 16:30:06 +00:00
OUTPUT_FREQ = 434.0
2021-02-01 15:43:33 +00:00
DEFAUL_JPG_PICTURE_LOC = src/resources/SAMPLE_IMAGE.jpg
DEFAULT_WAV_FILE_MONO_LOC = src/resources/SAMPLE_MONO_AUDIO.wav
DEFAULT_WAV_FILE_STEREO_LOC = src/resources/SAMPLE_STEREO_AUDIO.wav
DEFAULT_RF_FREEDV_FILE_LOC = src/resources/SAMPLE_FREEDV.rf
DEFAULT_POCSAG_MESSAGE = "1:YOURCALL\n2: Hello world"
DEFAULT_OPERA_CALLSIGN = "F5OEO"
DEFAULT_RTTY_MESSAGE = "HELLO WORLD FROM RPITX"
2018-11-24 16:30:06 +00:00
LAST_ITEM = "0 Tune"
2021-02-01 15:43:33 +00:00
do_check_file_existance( )
{
readlink -e $1 > /dev/null
if [ $? -eq 1 ] ; then
whiptail --title "Error!" --msgbox "The file does not exist!" 8 78
return 1
fi
return 0
}
2018-11-24 16:30:06 +00:00
do_freq_setup( )
{
2021-02-01 15:43:33 +00:00
if FREQ = $( whiptail --inputbox " Enter output Frequency (in MHz). Current is $OUTPUT_FREQ MHz " 8 78 $OUTPUT_FREQ --title "Rpitx transmit Frequency" 3>& 1 1>& 2 2>& 3) ; then
OUTPUT_FREQ = $FREQ
fi
}
do_file_choose( )
{
LAST_ITEM = " $menuchoice "
if FILE_LOC = $( whiptail --inputbox " Enter $1 file location. Default is $2 " 8 78 $2 --title "Select a file to transmit" 3>& 1 1>& 2 2>& 3) ; then
do_check_file_existance " $FILE_LOC "
abort_action = $?
else
abort_action = 1
fi
}
do_enter_message( )
{
LAST_ITEM = " $menuchoice "
if MESSAGE = $( whiptail --inputbox " Type custom $1 message: " 8 78 " $2 " --title "Enter message to transmit" 3>& 1 1>& 2 2>& 3) ; then
abort_action = 0
if [ -z " $MESSAGE " ] ; then
whiptail --title "Error!" --msgbox "Empty message!" 8 78
abort_action = 1
fi
else
abort_action = 1
fi
}
do_enter_callsign( )
{
LAST_ITEM = " $menuchoice "
if CALLSIGN = $( whiptail --inputbox "Type callsign:" 8 78 " $DEFAULT_OPERA_CALLSIGN " --title "Enter callsign to transmit" 3>& 1 1>& 2 2>& 3) ; then
abort_action = 0
if [ -z " $CALLSIGN " ] ; then
whiptail --title "Error!" --msgbox "Empty callsign!" 8 78
abort_action = 1
fi
else
abort_action = 1
2018-11-24 16:30:06 +00:00
fi
}
do_stop_transmit( )
{
sudo killall tune 2>/dev/null
sudo killall pichirp 2>/dev/null
sudo killall spectrumpaint 2>/dev/null
sudo killall pifmrds 2>/dev/null
sudo killall sendiq 2>/dev/null
sudo killall pocsag 2>/dev/null
2018-12-01 00:00:00 +00:00
sudo killall piopera 2>/dev/null
2018-11-24 16:30:06 +00:00
sudo killall rpitx 2>/dev/null
sudo killall freedv 2>/dev/null
2018-12-01 00:00:00 +00:00
sudo killall pisstv 2>/dev/null
2019-01-08 14:56:09 +00:00
sudo killall csdr 2>/dev/null
2021-01-02 23:57:05 +00:00
sudo killall pirtty 2>/dev/null
2019-01-08 14:56:09 +00:00
case " $menuchoice " in
0\ *) sudo killall testvfo.sh >/dev/null 2>/dev/null ; ;
1\ *) sudo killall testvfo.sh >/dev/null 2>/dev/null ; ;
2\ *) sudo killall testspectrum.sh >/dev/null 2>/dev/null ; ;
3\ *) sudo killall snap2spectrum.sh >/dev/null 2>/dev/null ; ;
2021-02-01 15:43:33 +00:00
4\ *) sudo killall testfmrds.sh >/dev/null 2>/dev/null ; ;
2019-01-08 14:56:09 +00:00
5\ *) sudo killall testnfm.sh >/dev/null 2>/dev/null ; ;
6\ *) sudo killall testssb.sh >/dev/null 2>/dev/null ; ;
7\ *) sudo killall testam.sh >/dev/null 2>/dev/null ; ;
8\ *) sudo killall testfreedv.sh >/dev/null 2>/dev/null ; ;
9\ *) sudo killall testsstv.sh >/dev/null 2>/dev/null ; ;
10\ *) sudo killall testpocsag.sh >/dev/null 2>/dev/null ; ;
11\ *) sudo killall testopera.sh >/dev/null 2>/dev/null ; ;
2021-01-02 23:57:05 +00:00
12\ *) sudo killall testrtty.sh >/dev/null 2>/dev/null ; ;
2019-01-08 14:56:09 +00:00
esac
2018-11-24 16:30:06 +00:00
}
do_status( )
{
2021-02-01 15:43:33 +00:00
LAST_ITEM = " $menuchoice "
2018-12-08 00:44:15 +00:00
whiptail --title "Transmit " " $LAST_ITEM " " on " " $OUTPUT_FREQ " " MHz" --msgbox "Transmitting" 8 78
2018-11-24 16:30:06 +00:00
do_stop_transmit
}
2021-02-01 15:43:33 +00:00
#********************************
# User interface initialization *
#********************************
2018-11-24 16:30:06 +00:00
do_freq_setup
2021-02-01 15:43:33 +00:00
while [ true ]
2018-11-01 19:49:54 +00:00
do
2021-02-01 15:43:33 +00:00
menuchoice = $( whiptail --default-item " $LAST_ITEM " --title "Rpitx on " " $OUTPUT_FREQ " " MHz" --menu "Range frequency : 50kHz-1GHz. Choose your test:" 20 82 12 \
2018-12-08 00:44:15 +00:00
"F Set frequency" " Modify frequency (actual $OUTPUT_FREQ MHz) " \
2018-11-01 19:49:54 +00:00
"0 Tune" "Carrier" \
"1 Chirp" "Moving carrier" \
"2 Spectrum" "Spectrum painting" \
2018-11-02 00:51:27 +00:00
"3 RfMyFace" "Snap with Raspicam and RF paint" \
"4 FmRds" "Broadcast modulation with RDS" \
2018-11-05 14:28:40 +00:00
"5 NFM" "Narrow band FM" \
2018-12-25 15:18:49 +00:00
"6 SSB" "Upper Side Band modulation" \
2018-11-05 14:28:40 +00:00
"7 AM" "Amplitude Modulation (Poor quality)" \
"8 FreeDV" "Digital voice mode 800XA" \
2018-12-08 00:44:15 +00:00
"9 SSTV" "Pattern picture" \
2018-11-05 14:28:40 +00:00
"10 Pocsag" "Pager message" \
"11 Opera" "Like morse but need Opera decoder" \
2021-01-02 23:57:05 +00:00
"12 RTTY" "Radioteletype" \
2018-11-01 19:49:54 +00:00
3>& 2 2>& 1 1>& 3)
2018-11-27 14:36:39 +00:00
RET = $?
if [ $RET -eq 1 ] ; then
2021-02-01 15:43:33 +00:00
whiptail --title "Bye bye" --msgbox "Thx for using rpitx" 8 78
2018-11-27 14:36:39 +00:00
exit 0
2018-12-01 00:00:00 +00:00
elif [ $RET -eq 0 ] ; then
2018-11-27 14:36:39 +00:00
case " $menuchoice " in
2021-02-01 15:43:33 +00:00
F\ *) do_freq_setup
; ;
2018-12-01 00:00:00 +00:00
0\ *) "./testvfo.sh" " $OUTPUT_FREQ " "e6" >/dev/null 2>/dev/null &
2021-02-01 15:43:33 +00:00
do_status
; ;
2018-11-27 14:36:39 +00:00
1\ *) "./testchirp.sh" " $OUTPUT_FREQ " "e6" >/dev/null 2>/dev/null &
2021-02-01 15:43:33 +00:00
do_status
; ;
2\ *) do_file_choose "320x256 .jpg" " $DEFAUL_JPG_PICTURE_LOC "
if [ $abort_action -eq 0 ] ; then
"./testspectrum.sh" " $OUTPUT_FREQ " "e6" " $FILE_LOC " >/dev/null 2>/dev/null &
do_status
fi
; ;
2018-11-27 14:36:39 +00:00
3\ *) "./snap2spectrum.sh" " $OUTPUT_FREQ " "e6" >/dev/null 2>/dev/null &
2021-02-01 15:43:33 +00:00
do_status
2018-11-27 14:36:39 +00:00
; ;
2021-02-01 15:43:33 +00:00
4\ *) do_file_choose ".wav" " $DEFAULT_WAV_FILE_STEREO_LOC "
if [ $abort_action -eq 0 ] ; then
"./testfmrds.sh" " $OUTPUT_FREQ " " $FILE_LOC " >/dev/null 2>/dev/null &
do_status
fi
; ;
5\ *) do_file_choose ".wav (16 bit per sample, 48000 sample rate, mono)" " $DEFAULT_WAV_FILE_MONO_LOC "
if [ $abort_action -eq 0 ] ; then
"./testnfm.sh" " $OUTPUT_FREQ " "e3" " $FILE_LOC " >/dev/null 2>/dev/null &
do_status
fi
; ;
6\ *) do_file_choose ".wav (16 bit per sample, 48000 sample rate, mono)" " $DEFAULT_WAV_FILE_MONO_LOC "
if [ $abort_action -eq 0 ] ; then
"./testssb.sh" " $OUTPUT_FREQ " "e6" " $FILE_LOC " >/dev/null 2>/dev/null &
do_status
fi
; ;
7\ *) do_file_choose ".wav (16 bit per sample, 48000 sample rate, mono)" " $DEFAULT_WAV_FILE_MONO_LOC "
if [ $abort_action -eq 0 ] ; then
"./testam.sh" " $OUTPUT_FREQ " "e3" " $FILE_LOC " >/dev/null 2>/dev/null &
do_status
fi
; ;
8\ *) do_file_choose "FreeDV .rf" " $DEFAULT_RF_FREEDV_FILE_LOC "
if [ $abort_action -eq 0 ] ; then
"./testfreedv.sh" " $OUTPUT_FREQ " "e6" " $FILE_LOC " >/dev/null 2>/dev/null &
do_status
fi
; ;
9\ *) do_file_choose "320x256 .jpg" " $DEFAUL_JPG_PICTURE_LOC "
if [ $abort_action -eq 0 ] ; then
"./testsstv.sh" " $OUTPUT_FREQ " "e6" " $FILE_LOC " >/dev/null 2>/dev/null &
do_status
fi
; ;
10\ *) do_enter_message "POCSAG (ADDR:MESSAGE_BODY)" " $DEFAULT_POCSAG_MESSAGE "
if [ $abort_action -eq 0 ] ; then
"./testpocsag.sh" " $OUTPUT_FREQ " "e6" " $MESSAGE " >/dev/null 2>/dev/null &
do_status
fi
; ;
11\ *) do_enter_callsign
if [ $abort_action -eq 0 ] ; then
"./testopera.sh" " $OUTPUT_FREQ " "e6" " $CALLSIGN " >/dev/null 2>/dev/null &
do_status
fi
; ;
12\ *) do_enter_message "RTTY" " $DEFAULT_RTTY_MESSAGE "
if [ $abort_action -eq 0 ] ; then
"./testrtty.sh" " $OUTPUT_FREQ " "e6" " $MESSAGE " >/dev/null 2>/dev/null &
do_status
fi
; ;
2018-11-27 14:36:39 +00:00
esac
else
exit 1
2018-12-01 00:00:00 +00:00
fi
2018-11-01 19:49:54 +00:00
done
2021-02-01 15:43:33 +00:00
exit 0