-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathmenu.sh
executable file
·3444 lines (3147 loc) · 125 KB
/
menu.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
#!/bin/bash
# Ryde Menu Application
##########################YAML PARSER ####################
function parse_yaml {
local prefix=$2
local s='[[:space:]]*' w='[a-zA-Z0-9_.-]*' fs=$(echo @|tr @ '\034')
sed -ne "s|,$s\]$s\$|]|" \
-e ":1;s|^\($s\)\($w\)$s:$s\[$s\(.*\)$s,$s\(.*\)$s\]|\1\2: [\3]\n\1 - \4|;t1" \
-e "s|^\($s\)\($w\)$s:$s\[$s\(.*\)$s\]|\1\2:\n\1 - \3|;p" $1 | \
sed -ne "s|,$s}$s\$|}|" \
-e ":1;s|^\($s\)-$s{$s\(.*\)$s,$s\($w\)$s:$s\(.*\)$s}|\1- {\2}\n\1 \3: \4|;t1" \
-e "s|^\($s\)-$s{$s\(.*\)$s}|\1-\n\1 \2|;p" | \
sed -ne "s|^\($s\):|\1|" \
-e "s|^\($s\)-$s[\"']\(.*\)[\"']$s\$|\1$fs$fs\2|p" \
-e "s|^\($s\)-$s\(.*\)$s\$|\1$fs$fs\2|p" \
-e "s|^\($s\)\($w\)$s:$s[\"']\(.*\)[\"']$s\$|\1$fs\2$fs\3|p" \
-e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p" | \
awk -F$fs '{
indent = length($1)/2;
vname[indent] = $2;
for (i in vname) {if (i > indent) {delete vname[i]; idx[i]=0}}
if(length($2)== 0){ vname[indent]= ++idx[indent] };
if (length($3) > 0) {
vn=""; for (i=0; i<indent; i++) { vn=(vn)(vname[i])("_")}
printf("%s%s%s=\"%s\"\n", "'$prefix'",vn, vname[indent], $3);
}
}'
}
############ Function to Write to DVB-T Config File ###############
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"
}
############ Function to Read from DVB-T Config File ###############
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
}
############ Function to Read value with - from Config File ###############
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
}
#########################################################
CONFIGDVBT="/home/pi/dvbt/dvb-t_config.txt"
do_dvbt_stop()
{
echo shutdown | nc 127.0.0.1 1111 >/dev/null 2>/dev/null
sleep 1
sudo killall play_dvbt >/dev/null 2>/dev/null
}
do_dvbt_rx()
{
/home/pi/dvbt/play_dvbt >/dev/null 2>/dev/null &
# Wait here receiving until user presses a key
whiptail --title "Receiving DVB-T Frequency: "$DVBT_FREQ" kHz BW: "$DVBT_BW" kHz" --msgbox "Touch any key to stop receiving" 8 78
do_dvbt_stop
}
do_Set_dvbt_frequency()
{
DVBT_FREQ=$(get_config_var freq $CONFIGDVBT)
DVBT_FREQ=$(whiptail --inputbox "Set DVB-T Receive freq in kHz" 8 78 $DVBT_FREQ --title "DVB-T Receive Frequency" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var freq "$DVBT_FREQ" $CONFIGDVBT
fi
}
do_Set_dvbt_bandwidth()
{
DVBT_BW=$(get_config_var bw $CONFIGDVBT)
DVBT_BW=$(whiptail --inputbox "Set DVB-T Receive bandwidth in kHz" 8 78 $DVBT_BW --title "DVB-T Receive Bandwidth" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var bw "$DVBT_BW" $CONFIGDVBT
fi
}
do_Set_dvbt_channel()
{
DVBT_CHAN=$(get_config_var chan $CONFIGDVBT)
DVBT_CHAN=$(whiptail --inputbox "Set Stream Channel (0 for default)" 8 78 $DVBT_CHAN --title "DVB-T Display Channel" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
set_config_var chan "$DVBT_CHAN" $CONFIGDVBT
fi
}
do_Set_dvbt_audio()
{
DVBT_AUDIO=$(get_config_var audio $CONFIGDVBT)
case "$DVBT_AUDIO" in
hdmi)
Radio1=ON
Radio2=OFF
;;
rpi)
Radio1=OFF
Radio2=ON
esac
DVBT_AUDIO=$(whiptail --title "Seect DVB-T Audio to HDMI or RPi Jack" --radiolist \
"Select one using arrow keys and space bar" 20 78 8 \
"hdmi" "Audio to the HDMI Output" $Radio1 \
"rpi" "Audio to the RPi Audio Jack " $Radio2 \
3>&2 2>&1 1>&3)
if [ $? -eq 0 ]; then ## If the selection has changed
set_config_var audio "$DVBT_AUDIO" $CONFIGDVBT
fi
}
do_dvbt()
{
DVBT_FREQ=$(get_config_var freq $CONFIGDVBT)
DVBT_BW=$(get_config_var bw $CONFIGDVBT)
DVBT_CHAN=$(get_config_var chan $CONFIGDVBT)
DVBT_AUDIO=$(get_config_var audio $CONFIGDVBT)
status=0
while [ "$status" -eq 0 ]
do
menuchoice=$(whiptail --title "Ryde DVB-T Receiver Menu" --menu "Select Choice and press enter:" 20 78 13 \
"0 Receive" "Start the DVB-T Receiver" \
"1 Stop" "Stop the DVB-T Receiver" \
"2 Frequency" "Set the Receive Frequency "$DVBT_FREQ" kHz" \
"3 Bandwidth" "Set the Receive Bandwidth "$DVBT_BW" kHz" \
"4 Channel" "Set the Channel from the video stream ("$DVBT_CHAN")" \
"5 Audio" "Set Audio Output, currently "$DVBT_AUDIO" " \
"6 Main Menu" "Go back to the Main Menu" \
3>&2 2>&1 1>&3)
case "$menuchoice" in
0\ *) do_dvbt_rx ;;
1\ *) do_dvbt_stop ;;
2\ *) do_Set_dvbt_frequency ;;
3\ *) do_Set_dvbt_bandwidth ;;
4\ *) do_Set_dvbt_channel ;;
5\ *) do_Set_dvbt_audio ;;
6\ *) status=1 ;;
esac
done
status=0
}
do_update()
{
/home/pi/ryde-build/check_for_update.sh
}
do_keypad()
{
/home/pi/ryde-build/rx.sh &
cd /home/pi/ryde-utils
python3 consolehandset.py -i
cd /home/pi
do_stop
}
do_ftdi()
{
cd /home/pi/ryde-utils
python3 ftdiconf.py -u
cd /home/pi
}
do_info()
{
/home/pi/ryde-build/display_info.sh
}
do_vlc()
{
VLCPAR=""
# First check if it is a comp vid display set to 16:9
grep -q "^enable_tvout=1" /boot/config.txt
if [ $? -eq 0 ]; then # comp vid display
grep -q "sdtv_aspect=3" /boot/config.txt
if [ $? -eq 0 ]; then # "sdtv_aspect=3" 16:9
VLCPAR="--monitor-par=4:3"
fi
fi
cvlc -I rc --rc-host 127.0.0.1:1111 $VLCPAR rtmp://rtmp.batc.org.uk/live/"$STREAM" /dev/null 2>/dev/null &
# Wait here displaying the stream until user presses a key
whiptail --title "Displaying "$STREAM" Stream" --msgbox "Touch any key to stop the stream display and return to the menu" 8 78
echo shutdown | nc 127.0.0.1 1111
sleep 0.5
if $(pgrep vlc >/dev/null) ; then
sleep 0.5
sudo killall -9 vlc >/dev/null 2>/dev/null
fi
}
do_custom_stream()
{
STREAM=$(whiptail --inputbox "Enter Stream Name (lower Case)" 8 78 $STREAM --title "Stream Name" 3>&1 1>&2 2>&3)
}
do_stream_display()
{
status=0
while [ "$status" -eq 0 ]
do
menuchoice=$(whiptail --title "BATC Stream Viewer Menu" --menu "Select Choice, ctrl-c to stop stream:" 20 78 10 \
"0 GB3BH" "View GB3BH" \
"1 GB3HV" "View GB3HV" \
"2 GB3KM" "View GB3KM" \
"3 GB3TV" "View GB3TV" \
"4 GB3TZ" "View GB3TZ" \
"5 GB3SQ" "View GB3SQ" \
"6 GB3VL" "View GB3VL" \
"7 GB3ZZ" "View GB3ZZ" \
"8 Custom" "Set Custom Stream" \
"9 Main Menu" "Go back to the Main Menu" \
3>&2 2>&1 1>&3)
case "$menuchoice" in
0\ *) STREAM="gb3bh" ;;
1\ *) STREAM="gb3hv" ;;
2\ *) STREAM="gb3km" ;;
3\ *) STREAM="gb3tv" ;;
4\ *) STREAM="gb3tz" ;;
5\ *) STREAM="gb3sq" ;;
6\ *) STREAM="gb3vl" ;;
7\ *) STREAM="gb3zz" ;;
8\ *) do_custom_stream ;;
9\ *) status=1 ;;
esac
if [ $status -eq 0 ]; then
do_vlc
fi
done
status=0
}
do_pydispmanx_test()
{
reset
printf "Circles should flash on display and text should look like this:\n\n"
printf "pygame 1.9.4.post1\n"
printf "Hello from the pygame community. https://www.pygame.org/contribute.html\n"
printf "(1920, 1080)\n"
printf "(1, 1)\n"
printf "29.270518356986372\n"
printf "no surface\n"
printf "no layer\n\n"
printf "Your System Response:\n\n"
cd /home/pi/pydispmanx
python3 demo.py
cd /home/pi
printf "\nPress any key to return to the menu\n"
read -n 1
}
do_cmd_line_ryde()
{
reset
cd /home/pi/ryde
python3 -m rydeplayer /home/pi/ryde/config.yaml
cd /home/pi
printf "\nPress any key to return to the menu\n"
read -n 1
}
do_utils()
{
status=0
while [ "$status" -eq 0 ]
do
menuchoice=$(whiptail --title "Select Ryde Utility" --menu "Select Choice" 20 78 7 \
"1 Keypad" "Ryde Network Control Handset" \
"2 FTDI" "FTDI Module Configuration Utility" \
"3 Stream" "BATC Stream Viewer" \
"4 Info" "Display System Information" \
"5 Display Test" "Test the display for use with the Ryde" \
"6 Ryde Test" "Run Ryde with the ability to read errors" \
"7 Main Menu" "Go back to the Main Menu" \
3>&2 2>&1 1>&3)
case "$menuchoice" in
1\ *) do_keypad ;;
2\ *) do_ftdi ;;
3\ *) do_stream_display ;;
4\ *) do_info ;;
5\ *) do_pydispmanx_test ;;
6\ *) do_cmd_line_ryde ;;
7\ *) status=1 ;;
esac
done
status=0
}
do_Set_RC_Type_1()
{
RC_FILE="exit"
menuchoice=$(whiptail --title "Set Remote Control Model (1)" --menu "Select Choice and press enter" 20 78 11 \
"1 Virgin" "Virgin Media" \
"2 Nebula" "Nebula DigiTV DVB-T USB Receiver" \
"3 DVB-T2-S2" "eBay DVB-T2-S2 Combo with 12v in " \
"4 LG TV " "LG 42 inch TV " \
"5 LG Blu-Ray 1" "LG Blu-Ray Disc Player BP-530R " \
"6 LG Blu-Ray 2" "LG Blu-Ray Disc Player BP-620R " \
"7 Samsung TV" "Samsung 32 inch TV" \
"8 Elekta TV" "Elekta Bravo 19 inch TV" \
"9 WDTV Live" "WDTV Live Media Player" \
"10 Hauppauge 1" "Hauppauge MediaMVP Network Media Player" \
"99 Exit" "Exit without changing remote control model" \
3>&2 2>&1 1>&3)
case "$menuchoice" in
1\ *) RC_FILE="virgin" ;;
2\ *) RC_FILE="nebula_usb" ;;
3\ *) RC_FILE="hd-dvb-t2-s2-rx" ;;
4\ *) RC_FILE="lg_tv_42" ;;
5\ *) RC_FILE="lg_bluray-BP530" ;;
6\ *) RC_FILE="lg_bluray-BP620" ;;
7\ *) RC_FILE="samsung_32" ;;
8\ *) RC_FILE="elekta_tv" ;;
9\ *) RC_FILE="wdtv_live" ;;
10\ *) RC_FILE="hauppauge_mvp" ;;
99\ *) RC_FILE="exit" ;;
esac
if [ "$RC_FILE" != "exit" ]; then # Amend the config file
RC_FILE=" - ${RC_FILE}"
sed -i "/handsets:/{n;s/.*/$RC_FILE/}" /home/pi/ryde/config.yaml
fi
}
do_Set_RC_Type_2()
{
RC_FILE="exit"
menuchoice=$(whiptail --title "Set Remote Control Model (2)" --menu "Select Choice and press enter" 20 78 11 \
"11 Hauppauge 2" "Hauppauge USB PVR Ex-digilite" \
"12 TS-1 Sat" "Technosat TS-1 Satellite Receiver" \
"13 TS-3500" "Technosat TS-3500 Satellite Receiver" \
"14 F-2100 Uni" "Digi-Wav 2 Pound F2100 Universal Remote" \
"15 SF8008" "Octagon SF8008 Sat RX Remote" \
"16 Freesat V7" "Freesat V7 Combo - Some keys changed" \
"17 RTL-SDR" "RTL-SDR Basic Remote" \
"18 Avermedia" "AverMedia PC Card Tuner" \
"19 AEG DVD" "German AEG DVD Remote" \
"20 G-RCU-023" "German Remote from an Opticum HD AX150, labelled G-RCU-023" \
"99 Exit" "Exit without changing remote control model" \
3>&2 2>&1 1>&3)
case "$menuchoice" in
11\ *) RC_FILE="hauppauge_usb" ;;
12\ *) RC_FILE="ts1_sat" ;;
13\ *) RC_FILE="ts3500_sat" ;;
14\ *) RC_FILE="f2100_uni" ;;
15\ *) RC_FILE="sf8008" ;;
16\ *) RC_FILE="freesat_v7" ;;
17\ *) RC_FILE="rtl0" ;;
18\ *) RC_FILE="avermediacard" ;;
19\ *) RC_FILE="aeg_dvd" ;;
20\ *) RC_FILE="g_rcu_023" ;;
99\ *) RC_FILE="exit" ;;
esac
if [ "$RC_FILE" != "exit" ]; then # Amend the config file
RC_FILE=" - ${RC_FILE}"
sed -i "/handsets:/{n;s/.*/$RC_FILE/}" /home/pi/ryde/config.yaml
fi
}
do_Set_RC_Type_3()
{
RC_FILE="exit"
menuchoice=$(whiptail --title "Set Remote Control Model (3)" --menu "Select Choice and press enter" 20 78 11 \
"21 Pheonix" "Pheonix Satellite RX Remote" \
"22 Classic" "Classic remote marked IRC83079" \
"23 Tesco TV" "Tesco 18.5 inch TV Model LCD 19-229" \
"24 LED TV" "Anonymous LED TV" \
"25 Fortec" "Fortech Star Sat RX" \
"26 CMtronic" "CMtronic" \
"27 Technotrend" "Technotrend TT Connect" \
"28 Philips TV" "Philips RC 4492/01B TV" \
"29 MP3 Player" "MP3 Player" \
"30 Dreambox TV" "Dreambox URC39931RJ0-06 TV" \
"99 Exit" "Exit without changing remote control model" \
3>&2 2>&1 1>&3)
case "$menuchoice" in
21\ *) RC_FILE="pheonix" ;;
22\ *) RC_FILE="classic" ;;
23\ *) RC_FILE="tesco_tv" ;;
24\ *) RC_FILE="led_tv" ;;
25\ *) RC_FILE="fortecstar" ;;
26\ *) RC_FILE="cmtronic" ;;
27\ *) RC_FILE="technotrendttc" ;;
28\ *) RC_FILE="philipsrc4492" ;;
29\ *) RC_FILE="mp3_player" ;;
30\ *) RC_FILE="dreamboxurc39931" ;;
99\ *) RC_FILE="exit" ;;
esac
if [ "$RC_FILE" != "exit" ]; then # Amend the config file
RC_FILE=" - ${RC_FILE}"
sed -i "/handsets:/{n;s/.*/$RC_FILE/}" /home/pi/ryde/config.yaml
fi
}
do_Set_RC_Type_4()
{
RC_FILE="exit"
menuchoice=$(whiptail --title "Set Remote Control Model (4)" --menu "Select Choice and press enter" 20 78 11 \
"31 Humax PVR" "Humax RM-F04 PVR" \
"32 Xtrend TV" "Xtrend KT1252-XHY TV" \
"33 Salora" "Salora TV or DVD Remote" \
"34 StreamZap" "StreamZap PC Remote Control" \
"35 Sky" "Sky Remote Control" \
"36 CT-8541" "Toshiba CT-8541 Remote Control" \
"37 GTMedia" "GTMedia Remote Control" \
"38 Strong 5434" "Strong SRT-5434" \
"39 Old Virgin" "Old-model Virgin Media" \
"40 Scott DVD" "Scott DVD Player" \
"99 Exit" "Exit without changing remote control model" \
3>&2 2>&1 1>&3)
case "$menuchoice" in
31\ *) RC_FILE="humaxrmf04" ;;
32\ *) RC_FILE="xtrendkt1252" ;;
33\ *) RC_FILE="salora" ;;
34\ *) RC_FILE="streamzap" ;;
35\ *) RC_FILE="sky1" ;;
36\ *) RC_FILE="tosh_ct_8541" ;;
37\ *) RC_FILE="gtmedia" ;;
38\ *) RC_FILE="strong5434" ;;
39\ *) RC_FILE="oldvirgin" ;;
40\ *) RC_FILE="scottdvd" ;;
99\ *) RC_FILE="exit" ;;
esac
if [ "$RC_FILE" != "exit" ]; then # Amend the config file
RC_FILE=" - ${RC_FILE}"
sed -i "/handsets:/{n;s/.*/$RC_FILE/}" /home/pi/ryde/config.yaml
fi
}
do_Set_RC_Type_5()
{
RC_FILE="exit"
menuchoice=$(whiptail --title "Set Remote Control Model (5)" --menu "Select Choice and press enter" 20 78 11 \
"41 Sagem STB" "Sagem Set Top box" \
"42 Altech TV" "Altech UEC Vast TV" \
"43 Marantz CD" "Marantz RTC002 CD Player" \
"44 K0QIT" "K0QIT" \
"45 Sagem STB 2" "Another SAGEM Set Top Box" \
"46 Sony RM-ED005" "Sony RM-ED005" \
"99 Exit" "Exit without changing remote control model" \
3>&2 2>&1 1>&3)
case "$menuchoice" in
41\ *) RC_FILE="sagemstb" ;;
42\ *) RC_FILE="altech_uec_vast_tv" ;;
43\ *) RC_FILE="marantz_rtc002cd" ;;
44\ *) RC_FILE="k0qit" ;;
45\ *) RC_FILE="sagemstb2" ;;
46\ *) RC_FILE="sony_rm-ed005" ;;
99\ *) RC_FILE="exit" ;;
esac
if [ "$RC_FILE" != "exit" ]; then # Amend the config file
RC_FILE=" - ${RC_FILE}"
sed -i "/handsets:/{n;s/.*/$RC_FILE/}" /home/pi/ryde/config.yaml
fi
}
do_Set_RC_Type()
{
menuchoice=$(whiptail --title "Select Page 1, 2 or 3" --menu "Select Choice (key on BATC Wiki)" 20 78 6 \
"1 1 - 10" "Virgin, Nebula, LG, Samsung" \
"2 11 - 20" "Various Sat Receivers" \
"3 21 - 30" "Odds and Ends" \
"4 31 - 40" "More Odds and Ends" \
"5 41 - 50" "Even More Odds and Ends" \
3>&2 2>&1 1>&3)
case "$menuchoice" in
1\ *) do_Set_RC_Type_1 ;;
2\ *) do_Set_RC_Type_2 ;;
3\ *) do_Set_RC_Type_3 ;;
4\ *) do_Set_RC_Type_4 ;;
5\ *) do_Set_RC_Type_5 ;;
esac
}
do_Set_Freq()
{
PRESET_FREQ=0
PRESET_SCAN_FREQ_1=0
PRESET_SCAN_FREQ_2=0
PRESET_SCAN_FREQ_3=0
PRESET_SCAN_FREQ_4=0
# Read and trim the preset FREQ Values
PRESET_FREQ_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq=)"
if [ "$PRESET_FREQ_LINE" != "" ]; then
PRESET_FREQ="$(echo "$PRESET_FREQ_LINE" | sed "s/presets__"$AMEND_PRESET"__freq=\"//" | sed 's/\"//')"
SCAN_FREQ_VALUES=0
else
PRESET_SCAN_FREQ_1_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq_1=)"
if [ "$PRESET_SCAN_FREQ_1_LINE" != "" ]; then
PRESET_SCAN_FREQ_1="$(echo "$PRESET_SCAN_FREQ_1_LINE" | sed "s/presets__"$AMEND_PRESET"__freq_1=\"//" | sed 's/\"//')"
SCAN_FREQ_VALUES=1
PRESET_SCAN_FREQ_2_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq_2=)"
if [ "$PRESET_SCAN_FREQ_2_LINE" != "" ]; then
PRESET_SCAN_FREQ_2="$(echo "$PRESET_SCAN_FREQ_2_LINE" | sed "s/presets__"$AMEND_PRESET"__freq_2=\"//" | sed 's/\"//')"
SCAN_FREQ_VALUES=2
PRESET_SCAN_FREQ_3_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq_3=)"
if [ "$PRESET_SCAN_FREQ_3_LINE" != "" ]; then
PRESET_SCAN_FREQ_3="$(echo "$PRESET_SCAN_FREQ_3_LINE" | sed "s/presets__"$AMEND_PRESET"__freq_3=\"//" | sed 's/\"//')"
SCAN_FREQ_VALUES=3
PRESET_SCAN_FREQ_4_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq_4=)"
if [ "$PRESET_SCAN_FREQ_4_LINE" != "" ]; then
PRESET_SCAN_FREQ_4="$(echo "$PRESET_SCAN_FREQ_4_LINE" | sed "s/presets__"$AMEND_PRESET"__freq_4=\"//" | sed 's/\"//')"
SCAN_FREQ_VALUES=4
fi
fi
fi
fi
fi
if [ "$SCAN_FREQ_VALUES" != "0" ]; then # In scanning FREQ mode, so convert back to single FREQ
# Set the preset FREQ to the first scanning FREQ
PRESET_FREQ=$PRESET_SCAN_FREQ_1
# Delete the scanning FREQ lines
if [ "$SCAN_FREQ_VALUES" == "4" ]; then # delete row 3
sed -i "/^ "$AMEND_PRESET":/!b;n;n;d" /home/pi/ryde/config.yaml
SCAN_FREQ_VALUES=3 # and decrement the number of rows
fi
if [ "$SCAN_FREQ_VALUES" == "3" ]; then # delete row 3
sed -i "/^ "$AMEND_PRESET":/!b;n;n;d" /home/pi/ryde/config.yaml
SCAN_FREQ_VALUES=2 # and decrement the number of rows
fi
if [ "$SCAN_FREQ_VALUES" == "2" ]; then # delete row 3
sed -i "/^ "$AMEND_PRESET":/!b;n;n;d" /home/pi/ryde/config.yaml
SCAN_FREQ_VALUES=1 # and decrement the number of rows
fi
if [ "$SCAN_FREQ_VALUES" == "1" ]; then # delete row 3
sed -i "/^ "$AMEND_PRESET":/!b;n;n;d" /home/pi/ryde/config.yaml
SCAN_FREQ_VALUES=0 # and decrement the number of rows
fi
# Delete the first line that just said " frequency:"
sed -i "/^ "$AMEND_PRESET":/!b;n;d" /home/pi/ryde/config.yaml
# Insert a new frequency line
sed -i "/^ "$AMEND_PRESET":/!{p;d;};a \ freq: $PRESET_FREQ" /home/pi/ryde/config.yaml
fi
PRESET_FREQ=$(whiptail --inputbox "Enter the new $AMEND_PRESET preset frequency in kHz" 8 78 $PRESET_FREQ --title "Frequency Entry Menu" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
# Delete the first line that just said " frequency:"
sed -i "/^ "$AMEND_PRESET":/!b;n;d" /home/pi/ryde/config.yaml
# Insert a new frequency line
sed -i "/^ "$AMEND_PRESET":/!{p;d;};a \ freq: $PRESET_FREQ" /home/pi/ryde/config.yaml
fi
}
do_Set_Scan_Freq()
{
PRESET_FREQ=0
PRESET_SCAN_FREQ_1=0
PRESET_SCAN_FREQ_2=0
PRESET_SCAN_FREQ_3=0
PRESET_SCAN_FREQ_4=0
# Read and trim the preset FREQ Values
PRESET_FREQ_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq=)"
if [ "$PRESET_FREQ_LINE" != "" ]; then
PRESET_FREQ="$(echo "$PRESET_FREQ_LINE" | sed "s/presets__"$AMEND_PRESET"__freq=\"//" | sed 's/\"//')"
SCAN_FREQ_VALUES=0
else
PRESET_SCAN_FREQ_1_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq_1=)"
if [ "$PRESET_SCAN_FREQ_1_LINE" != "" ]; then
PRESET_SCAN_FREQ_1="$(echo "$PRESET_SCAN_FREQ_1_LINE" | sed "s/presets__"$AMEND_PRESET"__freq_1=\"//" | sed 's/\"//')"
SCAN_FREQ_VALUES=1
PRESET_SCAN_FREQ_2_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq_2=)"
if [ "$PRESET_SCAN_FREQ_2_LINE" != "" ]; then
PRESET_SCAN_FREQ_2="$(echo "$PRESET_SCAN_FREQ_2_LINE" | sed "s/presets__"$AMEND_PRESET"__freq_2=\"//" | sed 's/\"//')"
SCAN_FREQ_VALUES=2
PRESET_SCAN_FREQ_3_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq_3=)"
if [ "$PRESET_SCAN_FREQ_3_LINE" != "" ]; then
PRESET_SCAN_FREQ_3="$(echo "$PRESET_SCAN_FREQ_3_LINE" | sed "s/presets__"$AMEND_PRESET"__freq_3=\"//" | sed 's/\"//')"
SCAN_FREQ_VALUES=3
PRESET_SCAN_FREQ_4_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq_4=)"
if [ "$PRESET_SCAN_FREQ_4_LINE" != "" ]; then
PRESET_SCAN_FREQ_4="$(echo "$PRESET_SCAN_FREQ_4_LINE" | sed "s/presets__"$AMEND_PRESET"__freq_4=\"//" | sed 's/\"//')"
SCAN_FREQ_VALUES=4
fi
fi
fi
fi
fi
# Convert to multi-FREQ format if single freq
if [ "$SCAN_FREQ_VALUES" == 0 ]; then
# Delete the first line that had the frequency value on it
sed -i "/^ "$AMEND_PRESET":/!b;n;d" /home/pi/ryde/config.yaml
# Insert a new blank frequency line
sed -i "/^ "$AMEND_PRESET":/!{p;d;};a \ freq:" /home/pi/ryde/config.yaml
# Create the blank second line
sed -i "/^ "$AMEND_PRESET":/!{p;d;};n;a \ -" /home/pi/ryde/config.yaml
# Put the previous single freq on the second line
sed -i "/^ "$AMEND_PRESET":/!b;n;n;c\ - $PRESET_FREQ" /home/pi/ryde/config.yaml
# So now the file is as if it was set up for multiples, but with one value
SCAN_FREQ_VALUES=1
PRESET_SCAN_FREQ_1=$PRESET_FREQ
fi
# Amend FREQ 1
PRESET_SCAN_FREQ_1=$(whiptail --inputbox "Enter the first frequency in kHz" 8 78 $PRESET_SCAN_FREQ_1 --title "Frequency 1 Entry Menu" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
# Put it on the second line
sed -i "/^ "$AMEND_PRESET":/!b;n;n;c\ - $PRESET_SCAN_FREQ_1" /home/pi/ryde/config.yaml
fi
# At this stage FREQ1 has been entered, so ask for FREQ 2
PRESET_SCAN_FREQ_2=$(whiptail --inputbox "Enter the second frequency in kHz (enter 0 for no more freqs)" 8 78 $PRESET_SCAN_FREQ_2 --title "Frequency 2 Entry Menu" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then # value has been changed
if [ "$SCAN_FREQ_VALUES" == "1" ] ; then # Previously only a single FREQ
if [ "$PRESET_SCAN_FREQ_2" != "0" ] && [[ ! -z "$PRESET_SCAN_FREQ_2" ]]; then # new valid FREQ entered (else do nothing)
# row 3 does not exist, so create it
sed -i "/^ "$AMEND_PRESET":/!{p;d;};n;n;a \ -" /home/pi/ryde/config.yaml
# Put FREQ 2 on the third line
sed -i "/^ "$AMEND_PRESET":/!b;n;n;n;c\ - $PRESET_SCAN_FREQ_2" /home/pi/ryde/config.yaml
SCAN_FREQ_VALUES=2
fi
else # Previously multiple FREQs
if [ "$PRESET_SCAN_FREQ_2" != "0" ] && [[ ! -z "$PRESET_SCAN_FREQ_2" ]]; then # new valid FREQ entered, so now at least 2 freqs
# so replace row 3 with new $PRESET_SCAN_FREQ_2
sed -i "/^ "$AMEND_PRESET":/!b;n;n;n;c\ - $PRESET_SCAN_FREQ_2" /home/pi/ryde/config.yaml
else # no more scanning FREQs, so delete 2nd 3rd and 4th freqs
if [ "$SCAN_FREQ_VALUES" == "4" ]; then # delete row 4
sed -i "/^ "$AMEND_PRESET":/!b;n;n;n;d" /home/pi/ryde/config.yaml
SCAN_FREQ_VALUES=3 # and decrement the number of rows
fi
if [ "$SCAN_FREQ_VALUES" == "3" ]; then # delete row 4
sed -i "/^ "$AMEND_PRESET":/!b;n;n;n;d" /home/pi/ryde/config.yaml
SCAN_FREQ_VALUES=2 # and decrement the number of rows
fi
if [ "$SCAN_FREQ_VALUES" == "2" ]; then # delete row 4
sed -i "/^ "$AMEND_PRESET":/!b;n;n;n;d" /home/pi/ryde/config.yaml
SCAN_FREQ_VALUES=1 # and decrement the number of rows
fi
fi
fi
fi
# At this stage FREQ2 has been entered, or SCAN_FREQ_VALUES=1 and we will do nothing more
if [ "$SCAN_FREQ_VALUES" != "1" ]; then
PRESET_SCAN_FREQ_3=$(whiptail --inputbox "Enter the third frequency in kHz (enter 0 for no more freqs)" 8 78 $PRESET_SCAN_FREQ_3 --title "Frequency 3 Entry Menu" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then # value has been changed
if [ "$SCAN_FREQ_VALUES" == "2" ] ; then # Previously only 2 FREQs
if [ "$PRESET_SCAN_FREQ_3" != "0" ] && [[ ! -z "$PRESET_SCAN_FREQ_3" ]]; then # new valid FREQ entered (else do nothing)
# row 4 does not exist, so create it
sed -i "/^ "$AMEND_PRESET":/!{p;d;};n;n;n;a \ -" /home/pi/ryde/config.yaml
# Put FREQ 3 on the 4th line
sed -i "/^ "$AMEND_PRESET":/!b;n;n;n;n;c\ - $PRESET_SCAN_FREQ_3" /home/pi/ryde/config.yaml
# and set the FREQ scan values to 3
SCAN_FREQ_VALUES=3
fi
else # Previously multiple FREQs
if [ "$PRESET_SCAN_FREQ_3" != "0" ] && [[ ! -z "$PRESET_SCAN_FREQ_3" ]]; then # new valid FREQ entered
# so replace row 4 with new $SCAN_FREQ_3
sed -i "/^ "$AMEND_PRESET":/!b;n;n;n;n;c\ - $PRESET_SCAN_FREQ_3" /home/pi/ryde/config.yaml
else # no more scanning FREQs, so delete lines
if [ "$SCAN_FREQ_VALUES" == "4" ]; then # delete row 5
sed -i "/^ "$AMEND_PRESET":/!b;n;n;n;n;d" /home/pi/ryde/config.yaml
SCAN_FREQ_VALUES=3 # and decrement the number of rows
fi
if [ "$SCAN_FREQ_VALUES" == "3" ]; then # delete row 4
sed -i "/^ "$AMEND_PRESET":/!b;n;n;n;n;d" /home/pi/ryde/config.yaml
SCAN_FREQ_VALUES=2 # and decrement the number of rows
fi
fi
fi
fi
# At this stage FREQ3 has been entered, or SCAN_FREQ_VALUES=2 and we will do nothing more
if [ "$SCAN_FREQ_VALUES" != "2" ]; then
PRESET_SCAN_FREQ_4=$(whiptail --inputbox "Enter the fourth frequency in kHz (enter 0 for no more freqs)" 8 78 $PRESET_SCAN_FREQ_4 --title "Frequency 4 Entry Menu" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then # value has been changed
if [ "$SCAN_FREQ_VALUES" == "3" ] ; then # Previously only 3 FREQs
if [ "$PRESET_SCAN_FREQ_4" != "0" ] && [[ ! -z "$PRESET_SCAN_FREQ_4" ]]; then # new valid FREQ entered (else do nothing)
# row 5 does not exist, so create it
sed -i "/^ "$AMEND_PRESET":/!{p;d;};n;n;n;n;a \ -" /home/pi/ryde/config.yaml
# Put FREQ 4 on the 5th line
sed -i "/^ "$AMEND_PRESET":/!b;n;n;n;n;n;c\ - $PRESET_SCAN_FREQ_4" /home/pi/ryde/config.yaml
# and set the FREQ scan values to 4
SCAN_FREQ_VALUES=4
fi
else # Previously 4 FREQs
if [ "$PRESET_SCAN_FREQ_4" != "0" ] && [[ ! -z "$PRESET_SCAN_FREQ_4" ]]; then # new valid FREQ entered
# so replace row 5 with new $SCAN_FREQ_4
sed -i "/^ "$AMEND_PRESET":/!b;n;n;n;n;n;c\ - $PRESET_SCAN_FREQ_4" /home/pi/ryde/config.yaml
else # no more scanning FREQs, so delete lines
if [ "$SCAN_FREQ_VALUES" == "4" ]; then # delete row 5
sed -i "/^ "$AMEND_PRESET":/!b;n;n;n;n;n;d" /home/pi/ryde/config.yaml
SCAN_FREQ_VALUES=3 # and decrement the number of rows
fi
fi
fi
fi
fi
fi
}
do_Set_SR()
{
#First, detect how may freq: lines there are
PRESET_FREQ_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq=)"
if [ "$PRESET_FREQ_LINE" != "" ]; then
SCAN_FREQ_VALUES=0
else
PRESET_SCAN_FREQ_1_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq_1=)"
if [ "$PRESET_SCAN_FREQ_1_LINE" != "" ]; then
SCAN_FREQ_VALUES=1
PRESET_SCAN_FREQ_2_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq_2=)"
if [ "$PRESET_SCAN_FREQ_2_LINE" != "" ]; then
SCAN_FREQ_VALUES=2
PRESET_SCAN_FREQ_3_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq_3=)"
if [ "$PRESET_SCAN_FREQ_3_LINE" != "" ]; then
SCAN_FREQ_VALUES=3
PRESET_SCAN_FREQ_4_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq_4=)"
if [ "$PRESET_SCAN_FREQ_4_LINE" != "" ]; then
SCAN_FREQ_VALUES=4
fi
fi
fi
fi
fi
# 0 means 1 line, 1 means 2 etc
# Now create a pad element that counts down that many lines
PAD=";n"
case "$SCAN_FREQ_VALUES" in
"0") PAD=";n" ;;
"1") PAD=";n;n" ;;
"2") PAD=";n;n;n" ;;
"3") PAD=";n;n;n;n" ;;
"4") PAD=";n;n;n;n;n" ;;
esac
PRESET_SR=0
PRESET_SCAN_SR_1=0
PRESET_SCAN_SR_2=0
PRESET_SCAN_SR_3=0
PRESET_SCAN_SR_4=0
# Read and trim the preset SR Values
PRESET_SR_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__sr=)"
if [ "$PRESET_SR_LINE" != "" ]; then
PRESET_SR="$(echo "$PRESET_SR_LINE" | sed "s/presets__"$AMEND_PRESET"__sr=\"//" | sed 's/\"//')"
SCAN_SR_VALUES=0
else
PRESET_SCAN_SR_1_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__sr_1=)"
if [ "$PRESET_SCAN_SR_1_LINE" != "" ]; then
PRESET_SCAN_SR_1="$(echo "$PRESET_SCAN_SR_1_LINE" | sed "s/presets__"$AMEND_PRESET"__sr_1=\"//" | sed 's/\"//')"
SCAN_SR_VALUES=1
PRESET_SCAN_SR_2_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__sr_2=)"
if [ "$PRESET_SCAN_SR_2_LINE" != "" ]; then
PRESET_SCAN_SR_2="$(echo "$PRESET_SCAN_SR_2_LINE" | sed "s/presets__"$AMEND_PRESET"__sr_2=\"//" | sed 's/\"//')"
SCAN_SR_VALUES=2
PRESET_SCAN_SR_3_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__sr_3=)"
if [ "$PRESET_SCAN_SR_3_LINE" != "" ]; then
PRESET_SCAN_SR_3="$(echo "$PRESET_SCAN_SR_3_LINE" | sed "s/presets__"$AMEND_PRESET"__sr_3=\"//" | sed 's/\"//')"
SCAN_SR_VALUES=3
PRESET_SCAN_SR_4_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__sr_4=)"
if [ "$PRESET_SCAN_SR_4_LINE" != "" ]; then
PRESET_SCAN_SR_4="$(echo "$PRESET_SCAN_SR_4_LINE" | sed "s/presets__"$AMEND_PRESET"__sr_4=\"//" | sed 's/\"//')"
SCAN_SR_VALUES=4
fi
fi
fi
fi
fi
if [ "$SCAN_SR_VALUES" != "0" ]; then # In scanning SR mode, so convert back to single SR
# Set the preset SR to the first scanning SR
PRESET_SR=$PRESET_SCAN_SR_1
# Delete the scanning SR lines
if [ "$SCAN_SR_VALUES" == "4" ]; then # delete row 3
sed -i "/^ "$AMEND_PRESET":/!b;n"$PAD";n;d" /home/pi/ryde/config.yaml
SCAN_SR_VALUES=3 # and decrement the number of rows
fi
if [ "$SCAN_SR_VALUES" == "3" ]; then # delete row 3
sed -i "/^ "$AMEND_PRESET":/!b;n"$PAD";n;d" /home/pi/ryde/config.yaml
SCAN_SR_VALUES=2 # and decrement the number of rows
fi
if [ "$SCAN_SR_VALUES" == "2" ]; then # delete row 3
sed -i "/^ "$AMEND_PRESET":/!b;n"$PAD";n;d" /home/pi/ryde/config.yaml
SCAN_SR_VALUES=1 # and decrement the number of rows
fi
if [ "$SCAN_SR_VALUES" == "1" ]; then # delete row 3
sed -i "/^ "$AMEND_PRESET":/!b;n"$PAD";n;d" /home/pi/ryde/config.yaml
SCAN_SR_VALUES=0 # and decrement the number of rows
fi
# Delete the first line that just said " sr:"
sed -i "/^ "$AMEND_PRESET":/!b;n"$PAD";d" /home/pi/ryde/config.yaml
# Insert a new sr line
sed -i "/^ "$AMEND_PRESET":/!{p;d;}"$PAD";a \ sr: $PRESET_SR" /home/pi/ryde/config.yaml
fi
PRESET_SR=$(whiptail --inputbox "Enter the new $AMEND_PRESET preset SR in kS" 8 78 $PRESET_SR --title "Symbol Rate Entry Menu" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
# Delete the first line that just said " sr:"
sed -i "/^ "$AMEND_PRESET":/!b;n"$PAD";d" /home/pi/ryde/config.yaml
# Insert a new sr line
sed -i "/^ "$AMEND_PRESET":/!{p;d;}"$PAD";a \ sr: $PRESET_SR" /home/pi/ryde/config.yaml
fi
}
do_Set_Scan_SR()
{
#First, detect how may freq: lines there are
PRESET_FREQ_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq=)"
if [ "$PRESET_FREQ_LINE" != "" ]; then
SCAN_FREQ_VALUES=0
else
PRESET_SCAN_FREQ_1_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq_1=)"
if [ "$PRESET_SCAN_FREQ_1_LINE" != "" ]; then
SCAN_FREQ_VALUES=1
PRESET_SCAN_FREQ_2_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq_2=)"
if [ "$PRESET_SCAN_FREQ_2_LINE" != "" ]; then
SCAN_FREQ_VALUES=2
PRESET_SCAN_FREQ_3_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq_3=)"
if [ "$PRESET_SCAN_FREQ_3_LINE" != "" ]; then
SCAN_FREQ_VALUES=3
PRESET_SCAN_FREQ_4_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__freq_4=)"
if [ "$PRESET_SCAN_FREQ_4_LINE" != "" ]; then
SCAN_FREQ_VALUES=4
fi
fi
fi
fi
fi
# 0 means 1 line, 1 means 2 etc
# Now create a pad element that counts down that many lines
PAD=";n"
case "$SCAN_FREQ_VALUES" in
"0") PAD=";n" ;;
"1") PAD=";n;n" ;;
"2") PAD=";n;n;n" ;;
"3") PAD=";n;n;n;n" ;;
"4") PAD=";n;n;n;n;n" ;;
esac
PRESET_SCAN_SR_1=0
PRESET_SCAN_SR_2=0
PRESET_SCAN_SR_3=0
PRESET_SCAN_SR_4=0
# Read and trim the preset SR Values
PRESET_SR_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__sr=)"
if [ "$PRESET_SR_LINE" != "" ]; then
PRESET_SR="$(echo "$PRESET_SR_LINE" | sed "s/presets__"$AMEND_PRESET"__sr=\"//" | sed 's/\"//')"
SCAN_SR_VALUES=0
else
PRESET_SCAN_SR_1_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__sr_1=)"
if [ "$PRESET_SCAN_SR_1_LINE" != "" ]; then
PRESET_SCAN_SR_1="$(echo "$PRESET_SCAN_SR_1_LINE" | sed "s/presets__"$AMEND_PRESET"__sr_1=\"//" | sed 's/\"//')"
SCAN_SR_VALUES=1
PRESET_SCAN_SR_2_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__sr_2=)"
if [ "$PRESET_SCAN_SR_2_LINE" != "" ]; then
PRESET_SCAN_SR_2="$(echo "$PRESET_SCAN_SR_2_LINE" | sed "s/presets__"$AMEND_PRESET"__sr_2=\"//" | sed 's/\"//')"
SCAN_SR_VALUES=2
PRESET_SCAN_SR_3_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__sr_3=)"
if [ "$PRESET_SCAN_SR_3_LINE" != "" ]; then
PRESET_SCAN_SR_3="$(echo "$PRESET_SCAN_SR_3_LINE" | sed "s/presets__"$AMEND_PRESET"__sr_3=\"//" | sed 's/\"//')"
SCAN_SR_VALUES=3
PRESET_SCAN_SR_4_LINE="$(parse_yaml /home/pi/ryde/config.yaml | grep presets__"$AMEND_PRESET"__sr_4=)"
if [ "$PRESET_SCAN_SR_4_LINE" != "" ]; then
PRESET_SCAN_SR_4="$(echo "$PRESET_SCAN_SR_4_LINE" | sed "s/presets__"$AMEND_PRESET"__sr_4=\"//" | sed 's/\"//')"
SCAN_SR_VALUES=4
fi
fi
fi
fi
fi
# Convert to multi-SR format if in single-SR format
if [ "$SCAN_SR_VALUES" == 0 ]; then
# Delete the first line that had the SR value on it
sed -i "/^ "$AMEND_PRESET":/!b"$PAD";n;d" /home/pi/ryde/config.yaml
# Insert a new blank sr line
sed -i "/^ "$AMEND_PRESET":/!{p;d;}"$PAD";a \ sr:" /home/pi/ryde/config.yaml
# Create the blank second line
sed -i "/^ "$AMEND_PRESET":/!{p;d;}"$PAD";n;a \ -" /home/pi/ryde/config.yaml
# Put the previous single sr on the second line
sed -i "/^ "$AMEND_PRESET":/!b;n"$PAD";n;c\ - $PRESET_SR" /home/pi/ryde/config.yaml
# So now the file is as if it was set up for multiples, but with one value
SCAN_SR_VALUES=1
PRESET_SCAN_SR_1=$PRESET_SR
fi
# Amend SR 1
PRESET_SCAN_SR_1=$(whiptail --inputbox "Enter the first SR in kS" 8 78 $PRESET_SCAN_SR_1 --title "Symbol Rate 1 Entry Menu" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then
# Put it on the second line
sed -i "/^ "$AMEND_PRESET":/!b"$PAD";n;n;c\ - $PRESET_SCAN_SR_1" /home/pi/ryde/config.yaml
fi
# At this stage SR1 has been entered, so ask for SR 2
PRESET_SCAN_SR_2=$(whiptail --inputbox "Enter the second SR in kS (enter 0 for no more SRs)" 8 78 $PRESET_SCAN_SR_2 --title "Symbol Rate 2 Entry Menu" 3>&1 1>&2 2>&3)
if [ $? -eq 0 ]; then # value has been changed
if [ "$SCAN_SR_VALUES" == "1" ] ; then # Previously only a single SR
if [ "$PRESET_SCAN_SR_2" != "0" ] && [[ ! -z "$PRESET_SCAN_SR_2" ]]; then # new valid SR entered (else do nothing)
# row 3 does not exist, so create it
sed -i "/^ "$AMEND_PRESET":/!{p;d;}"$PAD";n;n;a \ -" /home/pi/ryde/config.yaml
# Put SR 2 on the third line
sed -i "/^ "$AMEND_PRESET":/!b"$PAD";n;n;n;c\ - $PRESET_SCAN_SR_2" /home/pi/ryde/config.yaml
SCAN_SR_VALUES=2
fi
else # Previously multiple SRs
if [ "$PRESET_SCAN_SR_2" != "0" ] && [[ ! -z "$PRESET_SCAN_SR_2" ]]; then # new valid SR entered, so now at least 2 srs
# so replace row 3 with new $PRESET_SCAN_SR_2
sed -i "/^ "$AMEND_PRESET":/!b"$PAD";n;n;n;c\ - $PRESET_SCAN_SR_2" /home/pi/ryde/config.yaml
else # no more scanning SRs, so delete 2nd 3rd and 4th SRs
if [ "$SCAN_SR_VALUES" == "4" ]; then # delete row 4
sed -i "/^ "$AMEND_PRESET":/!b"$PAD";n;n;n;d" /home/pi/ryde/config.yaml
SCAN_SR_VALUES=3 # and decrement the number of rows
fi
if [ "$SCAN_SR_VALUES" == "3" ]; then # delete row 4
sed -i "/^ "$AMEND_PRESET":/!b"$PAD";n;n;n;d" /home/pi/ryde/config.yaml
SCAN_SR_VALUES=2 # and decrement the number of rows
fi
if [ "$SCAN_SR_VALUES" == "2" ]; then # delete row 4
sed -i "/^ "$AMEND_PRESET":/!b"$PAD";n;n;n;d" /home/pi/ryde/config.yaml