F5OEO-rpidatv/scripts/menu.sh

1084 wiersze
27 KiB
Bash
Executable File

#!/bin/bash
############ Set Environment Variables ###############
PATHSCRIPT=/home/pi/rpidatv/scripts
PATHRPI=/home/pi/rpidatv/bin
CONFIGFILE=$PATHSCRIPT"/rpidatvconfig.txt"
PATHCONFIGS="/home/pi/rpidatv/scripts/configs" ## Path to config files
set_config_var() {
lua - "$1" "$2" "$3" <<EOF > "$3.bak"
local key=assert(arg[1])
local value=assert(arg[2])
local fn=assert(arg[3])
local file=assert(io.open(fn))
local made_change=false
for line in file:lines() do
if line:match("^#?%s*"..key.."=.*$") then
line=key.."="..value
made_change=true
end
print(line)
end
if not made_change then
print(key.."="..value)
end
EOF
mv "$3.bak" "$3"
}
get_config_var() {
lua - "$1" "$2" <<EOF
local key=assert(arg[1])
local fn=assert(arg[2])
local file=assert(io.open(fn))
for line in file:lines() do
local val = line:match("^#?%s*"..key.."=(.*)$")
if (val ~= nil) then
print(val)
break
end
end
EOF
}
Filebrowser() {
if [ -z $1 ]; then
imgpath=$(ls -lhp / | awk -F ' ' ' { print $9 " " $5 } ')
else
imgpath=$(ls -lhp "/$1" | awk -F ' ' ' { print $9 " " $5 } ')
fi
if [ -z $1 ]; then
pathselect=$(whiptail --menu "$FileBrowserTitle""$filename" 20 50 10 --cancel-button Cancel --ok-button Select $imgpath 3>&1 1>&2 2>&3)
else
pathselect=$(whiptail --menu "$FileBrowserTitle""$filename" 20 50 10 --cancel-button Cancel --ok-button Select ../ BACK $imgpath 3>&1 1>&2 2>&3)
fi
RET=$?
if [ $RET -eq 1 ]; then
## This is the section where you control what happens when the user hits Cancel
Cancel
elif [ $RET -eq 0 ]; then
if [[ -d "/$1$pathselect" ]]; then
Filebrowser "/$1$pathselect"
elif [[ -f "/$1$pathselect" ]]; then
## Do your thing here, this is just a stub of the code I had to do what I wanted the script to do.
fileout=`file "$1$pathselect"`
filename=`readlink -m $1$pathselect`
else
echo pathselect $1$pathselect
whiptail --title "$FileMenuTitle" --msgbox "$FileMenuContext" 8 44
unset base
unset imgpath
Filebrowser
fi
fi
}
Pathbrowser() {
if [ -z $1 ]; then
imgpath=$(ls -lhp / | awk -F ' ' ' { print $9 " " $5 } ')
else
imgpath=$(ls -lhp "/$1" | awk -F ' ' ' { print $9 " " $5 } ')
fi
if [ -z $1 ]; then
pathselect=$(whiptail --menu "$FileBrowserTitle""$filename" 20 50 10 --cancel-button Cancel --ok-button Select $imgpath 3>&1 1>&2 2>&3)
else
pathselect=$(whiptail --menu "$FileBrowserTitle""$filename" 20 50 10 --cancel-button Cancel --ok-button Select ../ BACK $imgpath 3>&1 1>&2 2>&3)
fi
RET=$?
if [ $RET -eq 1 ]; then
## This is the section where you control what happens when the user hits Cancel
Cancel
elif [ $RET -eq 0 ]; then
if [[ -d "/$1$pathselect" ]]; then
Pathbrowser "/$1$pathselect"
elif [[ -f "/$1$pathselect" ]]; then
## Do your thing here, this is just a stub of the code I had to do what I wanted the script to do.
fileout=`file "$1$pathselect"`
filenametemp=`readlink -m $1$pathselect`
filename=`dirname $filenametemp`
else
echo pathselect $1$pathselect
whiptail --title "$FileMenuTitle" --msgbox "$FileMenuContext" 8 44
unset base
unset imgpath
Pathbrowser
fi
fi
}
do_input_setup() {
MODE_INPUT=$(get_config_var modeinput $CONFIGFILE)
case "$MODE_INPUT" in
CAMH264)
Radio1=ON
Radio2=OFF
Radio3=OFF
Radio4=OFF
Radio5=OFF
Radio6=OFF
Radio7=OFF
Radio8=OFF
Radio9=OFF
Radio10=OFF
;;
CAMMPEG-2)
Radio1=OFF
Radio2=ON
Radio3=OFF
Radio4=OFF
Radio5=OFF
Radio6=OFF
Radio7=OFF
Radio8=OFF
Radio9=OFF
Radio10=OFF
;;
FILETS)
Radio1=OFF
Radio2=OFF
Radio3=ON
Radio4=OFF
Radio5=OFF
Radio6=OFF
Radio7=OFF
Radio8=OFF
Radio9=OFF
Radio10=OFF
;;
PATERNAUDIO)
Radio1=OFF
Radio2=OFF
Radio3=OFF
Radio4=ON
Radio5=OFF
Radio6=OFF
Radio7=OFF
Radio8=OFF
Radio9=OFF
Radio10=OFF
;;
CARRIER)
Radio1=OFF
Radio2=OFF
Radio3=OFF
Radio4=OFF
Radio5=ON
Radio6=OFF
Radio7=OFF
Radio8=OFF
Radio9=OFF
Radio10=OFF
;;
TESTMODE)
Radio1=OFF
Radio2=OFF
Radio3=OFF
Radio4=OFF
Radio5=OFF
Radio6=ON
Radio7=OFF
Radio8=OFF
Radio9=OFF
Radio10=OFF
;;
IPTSIN)
Radio1=OFF
Radio2=OFF
Radio3=OFF
Radio4=OFF
Radio5=OFF
Radio6=OFF
Radio7=ON
Radio8=OFF
Radio9=OFF
Radio10=OFF
;;
ANALOGCAM)
Radio1=OFF
Radio2=OFF
Radio3=OFF
Radio4=OFF
Radio5=OFF
Radio6=OFF
Radio7=OFF
Radio8=ON
Radio9=OFF
Radio10=OFF
;;
VNC)
Radio1=OFF
Radio2=OFF
Radio3=OFF
Radio4=OFF
Radio5=OFF
Radio6=OFF
Radio7=OFF
Radio8=OFF
Radio9=ON
Radio10=OFF
;;
DESKTOP)
Radio1=OFF
Radio2=OFF
Radio3=OFF
Radio4=OFF
Radio5=OFF
Radio6=OFF
Radio7=OFF
Radio8=OFF
Radio9=OFF
Radio10=ON
;;
*)
Radio1=ON
Radio2=OFF
Radio3=OFF
Radio4=OFF
Radio5=OFF
Radio6=OFF
Radio7=OFF
Radio8=OFF
Radio9=OFF
Radio10=OFF
;;
esac
chinput=$(whiptail --title "$StrInputSetupTitle" --radiolist \
"$StrInputSetupDescription" 20 78 10 \
"CAMH264" "$StrInputSetupCAMH264" $Radio1 \
"CAMMPEG-2" "$StrInputSetupCAMMPEG_2" $Radio2 \
"FILETS" "$StrInputSetupFILETS" $Radio3\
"PATERNAUDIO" "$StrInputSetupPATERNAUDIO" $Radio4 \
"CARRIER" "$StrInputSetupCARRIER" $Radio5 \
"TESTMODE" "$StrInputSetupTESTMODE" $Radio6 \
"IPTSIN" "$StrInputSetupIPTSIN" $Radio7 \
"ANALOGCAM" "$StrInputSetupANALOGCAM" $Radio8 \
"VNC" "$StrInputSetupVNC" $Radio9 \
"DESKTOP" "$StrInputSetupDESKTOP" $Radio10 3>&2 2>&1 1>&3)
if [ $? -eq 0 ]; then
case "$chinput" in
FILETS)
TSVIDEOFILE=$(get_config_var tsvideofile $CONFIGFILE)
filename=$TSVIDEOFILE
FileBrowserTitle=TS:
Filebrowser "$PATHTS/"
whiptail --title "$StrInputSetupFILETSName" --msgbox "$filename" 8 44
set_config_var tsvideofile "$filename" $CONFIGFILE
PATHTS=`dirname $filename`
set_config_var pathmedia "$PATHTS" $CONFIGFILE
;;
PATERNAUDIO)
PATERNFILE=$(get_config_var paternfile $CONFIGFILE)
filename=$PATERNFILE
FileBrowserTitle=JPEG:
Pathbrowser "$PATHTS/"
whiptail --title "$StrInputSetupPATERNAUDIOName" --msgbox "$filename" 8 44
set_config_var paternfile "$filename" $CONFIGFILE
set_config_var pathmedia "$filename" $CONFIGFILE
;;
IPTSIN)
UDPINADDR=$(get_config_var udpinaddr $CONFIGFILE)
UDPINADDR=$(whiptail --inputbox "$StrInputSetupIPTSINName" 8 78 $UDPINADDR --title "$StrInputSetupIPTSINTitle" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var udpinaddr "$UDPINADDR" $CONFIGFILE
fi
;;
ANALOGCAM)
ANALOGCAMNAME=$(get_config_var analogcamname $CONFIGFILE)
ANALOGCAMNAME=$(whiptail --inputbox "$StrInputSetupANALOGCAMName" 8 78 $ANALOGCAMNAME --title "$StrInputSetupANALOGCAMTitle" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var analogcamname "$ANALOGCAMNAME" $CONFIGFILE
fi
;;
VNC)
VNCADDR=$(get_config_var vncaddr $CONFIGFILE)
VNCADDR=$(whiptail --inputbox "$StrInputSetupVNCName" 8 78 $VNCADDR --title "$StrInputSetupVNCTitle" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var vncaddr "$VNCADDR" $CONFIGFILE
fi
;;
esac
set_config_var modeinput "$chinput" $CONFIGFILE
fi
}
do_station_setup() {
CALL=$(get_config_var call $CONFIGFILE)
CALL=$(whiptail --inputbox "$StrCallContext" 8 78 $CALL --title "$StrCallTitle" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var call "$CALL" $CONFIGFILE
fi
LOCATOR=$(get_config_var locator $CONFIGFILE)
LOCATOR=$(whiptail --inputbox "$StrLocatorContext" 8 78 $LOCATOR --title "$StrLocatorTitle" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var locator "$LOCATOR" $CONFIGFILE
fi
}
do_output_setup_mode() {
MODE_OUTPUT=$(get_config_var modeoutput $CONFIGFILE)
case "$MODE_OUTPUT" in
IQ)
Radio1=ON
Radio2=OFF
Radio3=OFF
Radio4=OFF
Radio5=OFF
Radio6=OFF
Radio7=OFF
;;
QPSKRF)
Radio1=OFF
Radio2=ON
Radio3=OFF
Radio4=OFF
Radio5=OFF
Radio6=OFF
Radio7=OFF
;;
BATC)
Radio1=OFF
Radio2=OFF
Radio3=ON
Radio4=OFF
Radio5=OFF
Radio6=OFF
Radio7=OFF
;;
DIGITHIN)
Radio1=OFF
Radio2=OFF
Radio3=OFF
Radio4=ON
Radio5=OFF
Radio6=OFF
Radio7=OFF
;;
DTX1)
Radio1=OFF
Radio2=OFF
Radio3=OFF
Radio4=OFF
Radio5=ON
Radio6=OFF
Radio7=OFF
;;
DATVEXPRESS)
Radio1=OFF
Radio2=OFF
Radio3=OFF
Radio4=OFF
Radio5=OFF
Radio6=ON
Radio7=OFF
;;
IP)
Radio1=OFF
Radio2=OFF
Radio3=OFF
Radio4=OFF
Radio5=OFF
Radio6=OFF
Radio7=ON
;;
*)
Radio1=ON
Radio2=OFF
Radio3=OFF
Radio4=OFF
Radio5=OFF
Radio6=OFF
Radio7=OFF
esac
choutput=$(whiptail --title "$StrOutputSetupTitle" --radiolist \
"$StrOutputSetupContext" 20 78 8 \
"IQ" "$StrOutputSetupIQ" $Radio1 \
"QPSKRF" "$StrOutputSetupRF" $Radio2 \
"BATC" "$StrOutputSetupBATC" $Radio3 \
"DIGITHIN" "$StrOutputSetupDigithin" $Radio4 \
"DTX1" "$StrOutputSetupDTX1" $Radio5 \
"DATVEXPRESS" "$StrOutputSetupDATVExpress" $Radio6 \
"IP" "$StrOutputSetupIP" $Radio7 3>&2 2>&1 1>&3)
if [ $? -eq 0 ]; then
case "$choutput" in
IQ)
PIN_I=$(get_config_var gpio_i $CONFIGFILE)
PIN_I=$(whiptail --inputbox "$StrPIN_IContext" 8 78 $PIN_I --title "$StrPIN_ITitle" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var gpio_i "$PIN_I" $CONFIGFILE
fi
PIN_Q=$(get_config_var gpio_q $CONFIGFILE)
PIN_Q=$(whiptail --inputbox "$StrPIN_QContext" 8 78 $PIN_Q --title "$StrPIN_QTitle" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var gpio_q "$PIN_Q" $CONFIGFILE
fi
;;
QPSKRF)
FREQ_OUTPUT=$(get_config_var freqoutput $CONFIGFILE)
##FREQ=$(whiptail --inputbox "$StrOutputRFFreqContext" 8 78 $FREQ_OUTPUT --title "$StrOutputRFFreqTitle" 3>&1 1>&2 2>&3)
##if [ $? -eq 0 ]; then
## set_config_var freqoutput "$FREQ" $CONFIGFILE
##fi
GAIN_OUTPUT=$(get_config_var rfpower $CONFIGFILE)
GAIN=$(whiptail --inputbox "$StrOutputRFGainContext" 8 78 $GAIN_OUTPUT --title "$StrOutputRFGainTitle" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var rfpower "$GAIN" $CONFIGFILE
fi
;;
BATC)
BATC_OUTPUT=$(get_config_var batcoutput $CONFIGFILE)
ADRESS=$(whiptail --inputbox "$StrOutputBATCContext" 8 78 $BATC_OUTPUT --title "$StrOutputBATCTitle" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var batcoutput "$ADRESS" $CONFIGFILE
fi
;;
DIGITHIN)
PIN_I=$(get_config_var gpio_i $CONFIGFILE)
PIN_I=$(whiptail --inputbox "$StrPIN_IContext" 8 78 $PIN_I --title "$StrPIN_ITitle" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var gpio_i "$PIN_I" $CONFIGFILE
fi
PIN_Q=$(get_config_var gpio_q $CONFIGFILE)
PIN_Q=$(whiptail --inputbox "$StrPIN_QContext" 8 78 $PIN_Q --title "$StrPIN_QTitle" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var gpio_q "$PIN_Q" $CONFIGFILE
fi
FREQ_OUTPUT=$(get_config_var freqoutput $CONFIGFILE)
FREQ=$(whiptail --inputbox "$StrOutputRFFreqContext" 8 78 $FREQ_OUTPUT --title "$StrOutputRFFreqTitle" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var freqoutput "$FREQ" $CONFIGFILE
fi
sudo ./si570 -f $FREQ -m off
;;
DTX1) ;;
DATVEXPRESS)
FREQ_OUTPUT=$(get_config_var freqoutput $CONFIGFILE)
FREQ=$(whiptail --inputbox "$StrOutputRFFreqContext" 8 78 $FREQ_OUTPUT --title "$StrOutputRFFreqTitle" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var freqoutput "$FREQ" $CONFIGFILE
fi
GAIN_OUTPUT=$(get_config_var rfpower $CONFIGFILE)
GAIN=$(whiptail --inputbox "$StrOutputRFGainContext" 8 78 $GAIN_OUTPUT --title "$StrOutputRFGainTitle" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var rfpower "$GAIN" $CONFIGFILE
fi
;;
IP)
UDPOUTADDR=$(get_config_var udpoutaddr $CONFIGFILE)
UDPOUTADDR=$(whiptail --inputbox "$StrOutputSetupIPTSOUTName" 8 78 $UDPOUTADDR --title "$StrOutputSetupIPTSOUTTitle" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var udpoutaddr "$UDPOUTADDR" $CONFIGFILE
fi
;;
esac
set_config_var modeoutput "$choutput" $CONFIGFILE
fi
}
do_symbolrate_setup()
{
SYMBOLRATE=$(get_config_var symbolrate $CONFIGFILE)
SYMBOLRATE=$(whiptail --inputbox "$StrOutputSymbolrateContext" 8 78 $SYMBOLRATE --title "$StrOutputSymbolrateTitle" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var symbolrate "$SYMBOLRATE" $CONFIGFILE
fi
}
do_fec_setup()
{
FEC=$(get_config_var fec $CONFIGFILE)
case "$FEC" in
1)
Radio1=ON
Radio2=OFF
Radio3=OFF
Radio4=OFF
Radio5=OFF
;;
2)
Radio1=OFF
Radio2=ON
Radio3=OFF
Radio4=OFF
Radio5=OFF
;;
3)
Radio1=OFF
Radio2=OFF
Radio3=ON
Radio4=OFF
Radio5=OFF
;;
5)
Radio1=OFF
Radio2=OFF
Radio3=OFF
Radio4=ON
Radio5=OFF
;;
7)
Radio1=OFF
Radio2=OFF
Radio3=OFF
Radio4=OFF
Radio5=ON
;;
*)
Radio1=ON
Radio2=OFF
Radio3=OFF
Radio4=OFF
Radio5=OFF
;;
esac
FEC=$(whiptail --title "$StrOutputFECTitle" --radiolist \
"$StrOutputFECContext" 20 78 8 \
"1" "1/2" $Radio1 \
"2" "2/3" $Radio2 \
"3" "3/4" $Radio3 \
"5" "5/6" $Radio4 \
"7" "7/8" $Radio5 3>&2 2>&1 1>&3)
if [ $? -eq 0 ]; then
set_config_var fec "$FEC" $CONFIGFILE
fi
}
do_PID_setup()
{
PID=$(get_config_var pidstart $CONFIGFILE)
PID=$(whiptail --inputbox "$StrPIDSetupContext" 8 78 $PID --title "$StrPIDSetupTitle" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var pidstart "$PID" $CONFIGFILE
set_config_var pidpmt "$PID" $CONFIGFILE
#PID Video is PMT+1
let PID=PID+1
set_config_var pidvideo "$PID" $CONFIGFILE
#PID Audiop is PMT+1
let PID=PID+1
set_config_var pidaudio "$PID" $CONFIGFILE
fi
}
do_freq_setup()
{
FREQ_OUTPUT=$(get_config_var freqoutput $CONFIGFILE)
FREQ=$(whiptail --inputbox "$StrOutputRFFreqContext" 8 78 $FREQ_OUTPUT --title "$StrOutputRFFreqTitle" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var freqoutput "$FREQ" $CONFIGFILE
fi
}
do_output_setup() {
menuchoice=$(whiptail --title "$StrOutputTitle" --menu "$StrOutputContext" 16 78 5 \
"1 SymbolRate" "$StrOutputSR" \
"2 FEC" "$StrOutputFEC" \
"3 Output mode" "$StrOutputMode" \
"4 PID" "$StrPIDSetup" \
"5 Frequency" "$StrOutputRFFreqContext" \
3>&2 2>&1 1>&3)
case "$menuchoice" in
1\ *) do_symbolrate_setup ;;
2\ *) do_fec_setup ;;
3\ *) do_output_setup_mode ;;
4\ *) do_PID_setup ;;
5\ *) do_freq_setup ;;
esac
}
do_transmit()
{
$PATHSCRIPT"/a.sh" >/dev/null 2>/dev/null &
do_status # Wait here transmitting until user presses a key
do_stop_transmit
}
do_stop_transmit()
{
sudo killall rpidatv >/dev/null 2>/dev/null
sudo killall ffmpeg >/dev/null 2>/dev/null
sudo killall tcanim >/dev/null 2>/dev/null
sudo killall avc2ts >/dev/null 2>/dev/null
sudo $PATHRPI"/adf4351" off
}
do_display_on()
{
#tvservice -p
#sudo chvt 2
#sudo chvt 1
v4l2-ctl --overlay=1 >/dev/null 2>/dev/null
}
do_display_off()
{
v4l2-ctl --overlay=0 >/dev/null 2>/dev/null
#tvservice -o
}
do_status()
{
do_display_on
whiptail --title "$StrStatusTitle" --msgbox "$INFO" 8 78
do_stop_transmit
do_display_off
}
do_receive_status()
{
whiptail --title "RECEIVE" --msgbox "$INFO" 8 78
sudo killall rpidatvgui >/dev/null 2>/dev/null
sudo killall leandvb >/dev/null 2>/dev/null
}
do_receive()
{
MODE_OUTPUT=$(get_config_var modeoutput $CONFIGFILE)
case "$MODE_OUTPUT" in
BATC)
ORGINAL_MODE_INPUT=$(get_config_var modeinput $CONFIGFILE)
sleep 0.1
set_config_var modeinput "DESKTOP" $CONFIGFILE
sleep 0.1
/home/pi/rpidatv/bin/rpidatvgui 0 1 >/dev/null 2>/dev/null &
$PATHSCRIPT"/a.sh" >/dev/null 2>/dev/null &
do_receive_status
set_config_var modeinput "$ORGINAL_MODE_INPUT" $CONFIGFILE
;;
*)
/home/pi/rpidatv/bin/rpidatvgui 0 1 >/dev/null 2>/dev/null &
do_receive_status;;
esac
}
do_autostart_setup()
{
MODE_STARTUP=$(get_config_var startup $CONFIGFILE)
Radio1=OFF
Radio2=OFF
Radio3=OFF
Radio4=OFF
Radio5=OFF
Radio6=OFF
Radio7=OFF
case "$MODE_STARTUP" in
Prompt)
Radio1=ON;;
Console)
Radio2=ON;;
Display)
Radio3=ON;;
Button)
Radio4=ON;;
TX_boot)
Radio5=ON;;
Display_boot)
Radio6=ON;;
Button_boot)
Radio7=ON;;
*)
Radio1=ON;;
esac
chstartup=$(whiptail --title "$StrAutostartSetupTitle" --radiolist \
"$StrAutostartSetupContext" 20 78 8 \
"Prompt" "$AutostartSetupPrompt" $Radio1 \
"Console" "$AutostartSetupConsole" $Radio2 \
"Display" "$AutostartSetupDisplay" $Radio3 \
"Button" "$AutostartSetupButton" $Radio4 \
"TX_boot" "$AutostartSetupTX_boot" $Radio5 \
"Display_boot" "$AutostartSetupDisplay_boot" $Radio6 \
"Button_boot" "$AutostartSetupButton_boot" $Radio7 \
3>&2 2>&1 1>&3)
if [ $? -eq 0 ]; then
case "$chstartup" in
Prompt)
sudo systemctl disable getty@tty1.service
sudo rm /etc/systemd/system/getty@tty1.service.d/autologin.conf >/dev/null 2>/dev/null
cp $PATHCONFIGS"/prompt.bashrc" /home/pi/.bashrc;;
Console)
sudo systemctl disable getty@tty1.service
sudo rm /etc/systemd/system/getty@tty1.service.d/autologin.conf >/dev/null 2>/dev/null
cp $PATHCONFIGS"/console.bashrc" /home/pi/.bashrc;;
Display)
sudo systemctl disable getty@tty1.service
sudo rm /etc/systemd/system/getty@tty1.service.d/autologin.conf >/dev/null 2>/dev/null
MODE_DISPLAY=$(get_config_var display $CONFIGFILE)
case "$MODE_DISPLAY" in
Waveshare)
cp $PATHCONFIGS"/displaywaveshare.bashrc" /home/pi/.bashrc;;
*)
cp $PATHCONFIGS"/display.bashrc" /home/pi/.bashrc;;
esac;;
Button)
sudo systemctl disable getty@tty1.service
sudo rm /etc/systemd/system/getty@tty1.service.d/autologin.conf /dev/null 2>/dev/null
cp $PATHCONFIGS"/button.bashrc" /home/pi/.bashrc;;
TX_boot)
sudo ln -fs /etc/systemd/system/autologin@.service \
/etc/systemd/system/getty.target.wants/getty@tty1.service
cp $PATHCONFIGS"/console_tx.bashrc" /home/pi/.bashrc;;
Display_boot)
sudo ln -fs /etc/systemd/system/autologin@.service \
/etc/systemd/system/getty.target.wants/getty@tty1.service
MODE_DISPLAY=$(get_config_var display $CONFIGFILE)
case "$MODE_DISPLAY" in
Waveshare)
cp $PATHCONFIGS"/displaywaveshare.bashrc" /home/pi/.bashrc;; #>/dev/null 2>/dev/null;;
*)
cp $PATHCONFIGS"/display.bashrc" /home/pi/.bashrc;; #>/dev/null 2>/dev/null;;
esac;;
Button_boot)
sudo ln -fs /etc/systemd/system/autologin@.service \
/etc/systemd/system/getty.target.wants/getty@tty1.service
cp $PATHCONFIGS"/button.bashrc" /home/pi/.bashrc;;
esac
set_config_var startup "$chstartup" $CONFIGFILE
fi
}
do_display_setup()
{
MODE_DISPLAY=$(get_config_var display $CONFIGFILE)
case "$MODE_DISPLAY" in
Tontec35)
Radio1=ON
Radio2=OFF
Radio3=OFF
Radio4=OFF
;;
HDMITouch)
Radio1=OFF
Radio2=ON
Radio3=OFF
Radio4=OFF
;;
Waveshare)
Radio1=OFF
Radio2=OFF
Radio3=ON
Radio4=OFF
;;
Console)
Radio1=OFF
Radio2=OFF
Radio3=OFF
Radio4=ON
;;
*)
Radio1=ON
Radio2=OFF
Radio3=OFF
Radio4=OFF
esac
chdisplay=$(whiptail --title "$StrDisplaySetupTitle" --radiolist \
"$StrDisplaySetupContext" 20 78 8 \
"Tontec35" "$DisplaySetupTontec" $Radio1 \
"HDMITouch" "$DisplaySetupHDMI" $Radio2 \
"Waveshare" "$DisplaySetupRpiLCD" $Radio3 \
"Console" "$DisplaySetupConsole" $Radio4 \
3>&2 2>&1 1>&3)
## This section modifies and replaces the end of /boot/config.txt
## to allow (only) the correct LCD drivers to be loaded at next boot
## Set constants for the amendment of /boot/config.txt below
PATHCONFIGS="/home/pi/rpidatv/scripts/configs" ## Path to config files
lead='^## Begin LCD Driver' ## Marker for start of inserted text
tail='^## End LCD Driver' ## Marker for end of inserted text
CHANGEFILE="/boot/config.txt" ## File requiring added text
APPENDFILE=$PATHCONFIGS"/lcd_markers.txt" ## File containing both markers
TRANSFILE=$PATHCONFIGS"/transfer.txt" ## File used for transfer
if [ $? -eq 0 ]; then ## If the selection has changed
grep -q "$lead" "$CHANGEFILE" ## Is the first marker already present?
if [ $? -ne 0 ]; then
sudo bash -c 'cat '$APPENDFILE' >> '$CHANGEFILE' ' ## If not append the markers
fi
case "$chdisplay" in ## Select the correct driver text
Tontec35) INSERTFILE=$PATHCONFIGS"/tontec35.txt" ;; ## Message to be added
HDMITouch) INSERTFILE=$PATHCONFIGS"/hdmitouch.txt" ;;
Waveshare) INSERTFILE=$PATHCONFIGS"/waveshare.txt" ;;
Console) INSERTFILE=$PATHCONFIGS"/console.txt" ;;
esac
## Replace whatever is between the markers with the driver text
sed -e "/$lead/,/$tail/{ /$lead/{p; r $INSERTFILE
}; /$tail/p; d }" $CHANGEFILE >> $TRANSFILE
sudo cp "$TRANSFILE" "$CHANGEFILE" ## Copy from the transfer file
rm $TRANSFILE ## Delete the transfer file
set_config_var display "$chdisplay" $CONFIGFILE
fi
}
do_IP_setup()
{
CURRENTIP=$(ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1')
whiptail --title "IP" --msgbox "$CURRENTIP" 8 78
}
do_WiFi_setup()
{
$PATHSCRIPT"/wifisetup.sh"
}
do_WiFi_Off()
{
sudo ifconfig wlan0 down ## Disable it now
cp $PATHCONFIGS"/text.wifi_off" /home/pi/.wifi_off ## Disable at start-up
}
do_Enable_DigiThin()
{
whiptail --title "Not implemented yet" --msgbox "Not Implemented yet. Please press enter to continue" 8 78
}
do_125KS()
{
whiptail --title "Not implemented yet" --msgbox "Not Implemented yet. Please press enter to continue" 8 78
}
do_EasyCap()
{
whiptail --title "Not implemented yet" --msgbox "Not Implemented yet. Please press enter to continue" 8 78
}
do_Update()
{
whiptail --title "Not implemented yet" --msgbox "Not Implemented yet. Please press enter to continue" 8 78
}
do_system_setup()
{
menuchoice=$(whiptail --title "$StrSystemTitle" --menu "$StrSystemContext" 16 78 9 \
"1 Autostart" "$StrAutostartMenu" \
"2 Display" "$StrDisplayMenu" \
"3 IP" "$StrIPMenu" \
"4 WiFi Set-up" "SSID and password" \
"5 WiFi Off" "Turn the WiFi Off" \
"6 Enable DigiThin" "Not Implemented Yet" \
"7 Enable 125KS" "Not implemented yet" \
"8 Set EasyCap" "Not implemented yet" \
"9 Update" "Not implemented yet" \
3>&2 2>&1 1>&3)
case "$menuchoice" in
1\ *) do_autostart_setup ;;
2\ *) do_display_setup ;;
3\ *) do_IP_setup ;;
4\ *) do_WiFi_setup ;;
5\ *) do_WiFi_Off ;;
6\ *) do_Enable_DigiThin ;;
7\ *) do_125KS ;;
8\ *) do_EasyCap ;;
9\ *) do_Update ;;
esac
}
do_language_setup()
{
menuchoice=$(whiptail --title "$StrLanguageTitle" --menu "$StrOutputContext" 16 78 6 \
"1 French Menus" "Menus Francais" \
"2 English Menus" "Change Menus to English" \
"3 French Keyboard" "$StrKeyboardChange" \
"4 UK Keyboard" "$StrKeyboardChange" \
"5 US Keyboard" "$StrKeyboardChange" \
3>&2 2>&1 1>&3)
case "$menuchoice" in
1\ *) set_config_var menulanguage "fr" $CONFIGFILE ;;
2\ *) set_config_var menulanguage "en" $CONFIGFILE ;;
3\ *) sudo cp $PATHCONFIGS"/keyfr" /etc/default/keyboard ;;
4\ *) sudo cp $PATHCONFIGS"/keygb" /etc/default/keyboard ;;
5\ *) sudo cp $PATHCONFIGS"/keyus" /etc/default/keyboard ;;
esac
# Check Language
MENU_LANG=$(get_config_var menulanguage $CONFIGFILE)
# Set Language
if [ "$MENU_LANG" == "en" ]; then
source $PATHSCRIPT"/langgb.sh"
else
source $PATHSCRIPT"/langfr.sh"
fi
}
do_Exit()
{
exit
}
do_Reboot()
{
sudo reboot now
}
do_Shutdown()
{
sudo shutdown now
}
do_TouchScreen()
{
reset
~/rpidatv/bin/rpidatvgui 1
}
do_EnableButtonSD()
{
cp $PATHCONFIGS"/text.pi-sdn" ~/.pi-sdn ## Load it at logon
~/.pi-sdn ## Load it now
}
do_DisableButtonSD()
{
rm ~/.pi-sdn ## Stop it being loaded at log-on
sudo pkill -x pi-sdn ## kill the current process
}
do_shutdown_menu()
{
menuchoice=$(whiptail --title "Shutdown Menu" --menu "Select Choice" 16 78 7 \
"1 Shutdown now" "Immediate Shutdown" \
"2 Reboot now" "Immediate reboot" \
"3 Exit to Linux" "Exit menu to Command Prompt" \
"4 Restore TouchScreen" "Exit Menu, restart LCD" \
"5 Button Enable" "Enable Shutdown Button" \
"6 Button Disable" "Disable Shutdown Button" \
3>&2 2>&1 1>&3)
case "$menuchoice" in
1\ *) do_Shutdown ;;
2\ *) do_Reboot ;;
3\ *) do_Exit ;;
4\ *) do_TouchScreen ;;
5\ *) do_EnableButtonSD ;;
6\ *) do_DisableButtonSD ;;
esac
}
OnStartup()
{
CALL=$(get_config_var call $CONFIGFILE)
MODE_INPUT=$(get_config_var modeinput $CONFIGFILE)
MODE_OUTPUT=$(get_config_var modeoutput $CONFIGFILE)
SYMBOLRATEK=$(get_config_var symbolrate $CONFIGFILE)
FEC=$(get_config_var fec $CONFIGFILE)
PATHTS=$(get_config_var pathmedia $CONFIGFILE)
FREQ_OUTPUT=$(get_config_var freqoutput $CONFIGFILE)
GAIN_OUTPUT=$(get_config_var rfpower $CONFIGFILE)
let FECNUM=FEC
let FECDEN=FEC+1
INFO=$CALL":"$MODE_INPUT"-->"$MODE_OUTPUT"("$SYMBOLRATEK"KSymbol FEC "$FECNUM"/"$FECDEN") sur "$FREQ_OUTPUT"Mhz Gain "$GAIN_OUTPUT
do_transmit
}
#********************************************* MAIN MENU *********************************
#************************* Execution of Console Menu starts here *************************
# Check Language
MENU_LANG=$(get_config_var menulanguage $CONFIGFILE)
# Set Language
if [ "$MENU_LANG" == "en" ]; then
source $PATHSCRIPT"/langgb.sh"
else
source $PATHSCRIPT"/langfr.sh"
fi
status="0"
if [ "$1" != "menu" ]; then # if tx on boot
OnStartup # go straight to transmit
fi
sleep 0.2
while [ "$status" -eq 0 ]
do
CALL=$(get_config_var call $CONFIGFILE)
MODE_INPUT=$(get_config_var modeinput $CONFIGFILE)
MODE_OUTPUT=$(get_config_var modeoutput $CONFIGFILE)
SYMBOLRATEK=$(get_config_var symbolrate $CONFIGFILE)
FEC=$(get_config_var fec $CONFIGFILE)
PATHTS=$(get_config_var pathmedia $CONFIGFILE)
FREQ_OUTPUT=$(get_config_var freqoutput $CONFIGFILE)
GAIN_OUTPUT=$(get_config_var rfpower $CONFIGFILE)
let FECNUM=FEC
let FECDEN=FEC+1
INFO=$CALL":"$MODE_INPUT"-->"$MODE_OUTPUT"("$SYMBOLRATEK"KSymbol FEC "$FECNUM"/"$FECDEN") sur "$FREQ_OUTPUT"Mhz Gain "$GAIN_OUTPUT
#do_transmit
#do_status
#do_display_on
menuchoice=$(whiptail --title "$StrMainMenuTitle" --menu "$INFO" 16 82 8 \
"0 Transmit" "Go to transmit" \
"1 Source" "$StrMainMenuSource" \
"2 Output" "$StrMainMenuOutput" \
"3 Station" "$StrMainMenuCall" \
"4 Receive" "Receive via rtlsdr" \
"5 System" "$StrMainMenuSystem" \
"6 Language" "Set Language and Keyboard" \
"7 Shutdown" "Shutdown and reboot options" \
3>&2 2>&1 1>&3)
case "$menuchoice" in
0\ *) do_transmit ;;
1\ *) do_input_setup ;;
2\ *) do_output_setup ;;
3\ *) do_station_setup ;;
4\ *) do_receive ;;
5\ *) do_system_setup ;;
6\ *) do_language_setup ;;
7\ *) do_shutdown_menu ;;
*)
whiptail --title "$StrMainMenuExitTitle" --msgbox "$StrMainMenuExitContext" 8 78
status=1
kill -1 $(pidof -x frmenu.sh) >/dev/null 2>/dev/null
kill -1 $(pidof -x gbmenu.sh) >/dev/null 2>/dev/null
sleep 1
exit
;;
esac
exitstatus1=$status1
done
exit