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
|
#include <lib/driver/avswitch.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <lib/base/init.h>
#include <lib/base/init_num.h>
#include <lib/base/econfig.h>
#include <lib/base/eerror.h>
eAVSwitch *eAVSwitch::instance = 0;
eAVSwitch::eAVSwitch()
{
ASSERT(!instance);
instance = this;
}
eAVSwitch::~eAVSwitch()
{
}
eAVSwitch *eAVSwitch::getInstance()
{
return instance;
}
void eAVSwitch::setColorFormat(int format)
{
/*
0-CVBS
1-RGB
2-S-Video
*/
char *cvbs="cvbs";
char *rgb="rgb";
char *svideo="svideo";
int fd;
if((fd = open("/proc/stb/avs/0/colorformat", O_WRONLY)) < 0) {
printf("cannot open /proc/stb/avs/0/colorformat\n");
return;
}
switch(format) {
case 0:
write(fd, cvbs, strlen(cvbs));
break;
case 1:
write(fd, rgb, strlen(rgb));
break;
case 2:
write(fd, svideo, strlen(svideo));
break;
}
close(fd);
}
void eAVSwitch::setAspectRatio(int ratio)
{
/*
0-4:3 Letterbox
1-4:3 PanScan
2-16:9
3-16:9 forced
*/
char *any="any";
char *norm="4:3";
char *wide="16:9";
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;
}
close(fd);
}
void eAVSwitch::setVideomode(int mode)
{
char *pal="pal";
char *ntsc="ntsc";
int fd;
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");
return;
}
switch(mode) {
case 0:
write(fd, pal, strlen(pal));
break;
case 1:
write(fd, ntsc, strlen(ntsc));
break;
}
close(fd);
}
//FIXME: correct "run/startlevel"
eAutoInitP0<eAVSwitch> init_avswitch(eAutoInitNumbers::rc, "AVSwitch Driver");
|