add a tuxbox plugins plugin to prepare loading of tuxbox plugins when the c++ part...
[enigma2.git] / lib / driver / avswitch.cpp
index 9d2ae007c3f2d5a0787fde30b585033e2cd189d4..482a0f062b4fb383d2d4a525b43139261591fac2 100644 (file)
@@ -26,6 +26,45 @@ eAVSwitch *eAVSwitch::getInstance()
        return instance;
 }
 
+void eAVSwitch::setInput(int val)
+{
+       /*
+       0-encoder
+       1-scart
+       2-aux
+       */
+
+       char *input[] = {"encoder", "scart", "aux"};
+
+       int fd;
+       
+       if((fd = open("/proc/stb/avs/0/input", O_WRONLY)) < 0) {
+               printf("cannot open /proc/stb/avs/0/input\n");
+               return;
+       }
+
+       write(fd, input[val], strlen(input[val]));
+       close(fd);
+       
+       if (val == 1)
+               setFastBlank(0);
+}
+
+void eAVSwitch::setFastBlank(int val)
+{
+       int fd;
+       char *fb[] = {"low", "high", "vcr"};
+
+       
+       if((fd = open("/proc/stb/avs/0/fb", O_WRONLY)) < 0) {
+               printf("cannot open /proc/stb/avs/0/fb\n");
+               return;
+       }
+
+       write(fd, fb[val], strlen(fb[0]));
+       close(fd);
+}
+
 void eAVSwitch::setColorFormat(int format)
 {
        /*
@@ -65,28 +104,24 @@ void eAVSwitch::setAspectRatio(int ratio)
        3-16:9 forced
        */
        
-       char *any="any";
-       char *norm="4:3";
-       char *wide="16:9";
-       int fd;
+       char *aspect[] = {"4:3", "4:3", "any", "16:9"};
+       char *policy[] = {"letterbox", "panscan", "bestfit", "panscan"};
 
+       int fd;
        if((fd = open("/proc/stb/video/aspect", O_WRONLY)) < 0) {
                printf("cannot open /proc/stb/video/aspect\n");
                return;
        }
-       switch(ratio) {
-               case 0:
-                       write(fd, any, strlen(any));
-                       break;
-               case 1:
-                       write(fd, norm, strlen(norm));
-                       break;
-               case 2:
-               case 3:
-                       write(fd, wide, strlen(wide));
-                       break;
-       }       
+       write(fd, aspect[ratio], strlen(aspect[ratio]));
        close(fd);
+
+       if((fd = open("/proc/stb/video/policy", O_WRONLY)) < 0) {
+               printf("cannot open /proc/stb/video/policy\n");
+               return;
+       }
+       write(fd, policy[ratio], strlen(policy[ratio]));
+       close(fd);
+
 }
 
 void eAVSwitch::setVideomode(int mode)
@@ -95,7 +130,7 @@ void eAVSwitch::setVideomode(int mode)
        char *ntsc="ntsc";
        int fd;
        
-       return 0;
+       return;
        //FIXME: bug in driver (cannot set PAL)
        if((fd = open("/proc/stb/video/videomode", O_WRONLY)) < 0) {
                printf("cannot open /proc/stb/video/videomode\n");
@@ -105,7 +140,7 @@ void eAVSwitch::setVideomode(int mode)
                case 0:
                        write(fd, pal, strlen(pal));
                        break;
-               case 3:
+               case 1:
                        write(fd, ntsc, strlen(ntsc));
                        break;
        }