trunk 20080912
[gitenigma.git] / include / lib / driver / eavswitch.h
blobb637ebf4c10b2f705aab45ff69180aeec85bff21
1 #ifndef __eavswitch_h
2 #define __eavswitch_h
4 #include <lib/base/ebase.h>
6 enum eAVAspectRatio
8 rUnknown, r43, r169
9 };
11 enum eAVColorFormat
13 cfNull,
14 cfCVBS, // "FBAS"
15 cfRGB,
16 cfYC, // "SVideo"
17 cfYPbPr // "Component"
20 enum eVSystem
22 vsPAL,
23 vsNTSC,
26 class eAVSwitch
28 static eAVSwitch *instance;
29 int volume, VCRVolume, mute, useOst, audioChannel;
31 int avsfd, saafd;
32 eVSystem system;
33 eAVAspectRatio aspect;
34 eAVColorFormat colorformat;
36 int setVolume(int vol); // 0..65535
37 void muteAvsAudio(bool);
38 void muteOstAudio(bool);
39 bool loadScartConfig();
40 protected:
41 enum {NOKIA, SAGEM, PHILIPS} Type;
42 int scart[6];
43 int dvb[6];
44 int active, input;
45 void init();
46 public:
47 eAVSwitch();
48 ~eAVSwitch();
49 Signal2<void, int, int> volumeChanged;
51 static eAVSwitch *getInstance();
52 int getVolume() { return volume; }
53 int getMute() { return mute; }
55 void sendVolumeChanged();
56 void reloadSettings();
58 /**
59 * \brief Changes the volume.
61 * \param abs What to change:
62 * \arg \c 0 Volume, relative
63 * \arg \c 1 Volume, absolute
64 * \param vol The volume/muteflag to set. In case of volume, 0 means max and 63 means min.
66 void changeVolume(int abs, int vol);
68 int setTVPin8(int vol);
69 int setColorFormat(eAVColorFormat cf);
70 int setAspectRatio(eAVAspectRatio as);
71 void setVSystem(eVSystem system);
72 eVSystem getVSystem() { return system; }
73 int setActive(int active);
74 int setInput(int v); // 0: dbox, 1: vcr
75 int getInput() { return input; }
76 void selectAudioChannel( int chan ); // 0 MonoLeft, 1 Stereo, 2 MonoRight
77 int getAudioChannel() const { return audioChannel; }
78 void changeVCRVolume(int abs, int vol);
79 void toggleMute();
80 void setVideoFormat( int );
83 class eAVSwitchNokia: public eAVSwitch
85 public:
86 eAVSwitchNokia()
88 Type = NOKIA;
89 scart[0] = 3;
90 scart[1] = 2;
91 scart[2] = 1;
92 scart[3] = 0;
93 scart[4] = 1;
94 scart[5] = 1;
95 dvb[0] = 5;
96 dvb[1] = 1;
97 dvb[2] = 1;
98 dvb[3] = 1;
99 dvb[4] = 1;
100 dvb[5] = 1;
101 init();
105 class eAVSwitchPhilips: public eAVSwitch
107 public:
108 eAVSwitchPhilips()
110 Type = PHILIPS;
111 scart[0] = 3;
112 scart[1] = 3;
113 scart[2] = 2;
114 scart[3] = 2;
115 scart[4] = 3;
116 scart[5] = 2;
117 dvb[0] = 1;
118 dvb[1] = 1;
119 dvb[2] = 1;
120 dvb[3] = 1;
121 dvb[4] = 1;
122 dvb[5] = 1;
123 init();
127 class eAVSwitchSagem: public eAVSwitch
129 public:
130 eAVSwitchSagem()
132 Type = SAGEM;
133 scart[0] = 2;
134 scart[1] = 1;
135 scart[2] = 0;
136 scart[3] = 0;
137 scart[4] = 0;
138 scart[5] = 0;
139 dvb[0] = 0;
140 dvb[1] = 0;
141 dvb[2] = 0;
142 dvb[3] = 0;
143 dvb[4] = 0;
144 dvb[5] = 0;
145 init();
149 #endif