op_tvout.sh: rewrite, make usable for other GUIs
[openpandora.oe.git] / recipes / pandora-system / pandora-scripts / op_tvout.sh
1 #!/bin/bash
2
3 # defaults
4 tv_type="pal"
5 conn_type="svideo"
6 layer=0
7 pal_size="658,520"
8 pal_pos="35,35"
9 ntsc_size="655,455"
10 ntsc_pos="40,15"
11 size=$pal_size
12 pos=$pal_pos
13
14 usage()
15 {
16   echo "usage: $0 [-d] [-t pal|ntsc] [-c composite|svideo] [-l 0|1] [-{p|n}s w,h] [-{p|n}p x,y]"
17   exit 1
18 }
19
20 setup_scaler()
21 {
22   # we must preallocate enough memory for the scaler layer
23   # since the app won't be able to change this
24   # the whole time TV-out is running..
25   ofbset -fb /dev/fb1 -mem $[3*1024*1024] -size 512 256 -en 0
26 }
27
28 enable_it()
29 {
30   echo "${tv_type}, ${conn_type}, layer $layer $pos $size"
31   cd /sys/devices/platform/omapdss
32   echo 0 > overlay0/enabled
33   echo 0 > overlay1/enabled
34   echo 0 > overlay2/enabled
35   echo "" > /sys/class/graphics/fb2/overlays
36   echo "" > /sys/class/graphics/fb1/overlays
37   if [ $layer -eq 1 ]; then
38     setup_scaler
39     echo "0" > /sys/class/graphics/fb0/overlays
40     echo "1,2" > /sys/class/graphics/fb1/overlays
41   else
42     # assume layer 0 for now
43     echo "0,2" > /sys/class/graphics/fb0/overlays
44     echo "1" > /sys/class/graphics/fb1/overlays
45   fi
46   echo $conn_type > display1/venc_type
47   echo "tv" > overlay2/manager
48   echo $size > overlay2/output_size
49   echo $pos > overlay2/position 
50   echo $tv_type > display1/timings
51   echo 1 > overlay0/enabled
52   echo 1 > overlay2/enabled
53   echo 1 > display1/enabled
54 }
55
56 disable_it()
57 {
58   cd /sys/devices/platform/omapdss
59   echo 0 > overlay0/enabled
60   echo 0 > overlay1/enabled
61   echo 0 > overlay2/enabled
62   echo 0 > display1/enabled
63   echo "" > /sys/class/graphics/fb2/overlays
64   echo "" > /sys/class/graphics/fb1/overlays
65   echo 0 > /sys/class/graphics/fb0/overlays
66   echo 1 > /sys/class/graphics/fb1/overlays
67   echo 2 > /sys/class/graphics/fb2/overlays
68   echo 1 > overlay0/enabled
69 }
70
71 # parse args
72 got_args=false
73 while true; do
74   case $1 in
75     "-d")
76       disable_it
77       exit 0
78       ;;
79     "-t")
80       shift
81       tv_type=$1
82       ;;
83     "-c")
84       shift
85       conn_type=$1
86       ;;
87     "-l")
88       shift
89       layer=$1
90       ;;
91     "-ps")
92       shift
93       pal_size=$1
94       ;;
95     "-pp")
96       shift
97       pal_pos=$1
98       ;;
99     "-ns")
100       shift
101       ntsc_size=$1
102       ;;
103     "-np")
104       shift
105       ntsc_pos=$1
106       ;;
107     "")
108       ;;
109     *)
110       usage
111       ;;
112   esac
113
114   if ! shift; then break; fi
115   got_args=true
116 done
117
118 if [ "$tv_type" != "pal" -a "$tv_type" != "ntsc" ]; then
119   usage
120 fi
121
122 if [ "$conn_type" != "svideo" -a "$conn_type" != "composite" ]; then
123   usage
124 fi
125
126 if [ "$layer" != "0" -a "$layer" != "1" ]; then
127   usage
128 fi
129
130 if [ "$tv_type" = "ntsc" ]; then
131   size=$ntsc_size
132   pos=$ntsc_pos
133 fi
134
135
136 if $got_args; then
137   enable_it
138 else
139   # old zenity menu, to be removed
140   while mainsel=$(zenity --title="TV-Out Configuration" --width="420" --height="248" --list \
141     --column "id" --column "Please select" --hide-column=1 \
142     --text="This is a very simple TV Out Script. It will be enhanced." \
143     "pal" "Enable TV Out in PAL Mode" \
144     "ntsc" "Enable TV Out in NTSC Mode" \
145     "pal2" "Enable TV Out in PAL Mode, overlay" \
146     "ntsc2" "Enable TV Out in NTSC Mode, overlay" \
147     "disable" "Disable TV Out" \
148     )
149   do
150
151   case $mainsel in
152     "pal")
153     layer=0
154     pos=$pal_pos
155     size=$pal_size
156     enable_it
157     zenity --info --title="TV Out" --text "TV Out (PAL Mode) has been enabled." --timeout 6
158     ;;
159
160     "pal2")
161     layer=1
162     pos=$pal_pos
163     size=$pal_size
164     enable_it
165     zenity --info --title="TV Out" --text "TV Out (PAL Mode) has been enabled." --timeout 6
166     ;;
167
168     "ntsc")
169     layer=0
170     pos=$ntsc_pos
171     size=$ntsc_size
172     enable_it
173     zenity --info --title="TV Out" --text "TV Out (NTSC Mode) has been enabled." --timeout 6  
174     ;;
175
176     "ntsc2")
177     layer=1
178     pos=$ntsc_pos
179     size=$ntsc_size
180     enable_it
181     zenity --info --title="TV Out" --text "TV Out (NTSC Mode) has been enabled." --timeout 6  
182     ;;
183
184     "disable")
185     disable_it
186     zenity --info --title="TV Out" --text "TV Out has been disabled." --timeout 6
187     ;;    
188   esac
189   done
190 fi