X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/e809534d8af6a2f742dbc6d1341c7df804a42234..01f6932815a6a21ab46bb420be093685378b43dd:/lib/driver/avswitch.cpp diff --git a/lib/driver/avswitch.cpp b/lib/driver/avswitch.cpp index 9d2ae007..47a60cf3 100644 --- a/lib/driver/avswitch.cpp +++ b/lib/driver/avswitch.cpp @@ -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(2); +} + +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; }