- sdl is now default output
[enigma2.git] / lib / dvb / frontend.h
1 #ifndef __dvb_frontend_h
2 #define __dvb_frontend_h
3
4 #include <config.h>
5 #include <lib/dvb/idvb.h>
6
7 class eDVBFrontendParameters: public iDVBFrontendParameters
8 {
9         DECLARE_REF(eDVBFrontendParameters);
10         union
11         {
12                 eDVBFrontendParametersSatellite sat;
13                 eDVBFrontendParametersCable cable;
14                 eDVBFrontendParametersTerrestrial terrestrial;
15         };
16         int m_type;
17 public:
18         eDVBFrontendParameters();
19         
20         RESULT getSystem(int &type) const;
21         RESULT getDVBS(eDVBFrontendParametersSatellite &p) const;
22         RESULT getDVBC(eDVBFrontendParametersCable &p) const;
23         RESULT getDVBT(eDVBFrontendParametersTerrestrial &p) const;
24
25         RESULT setDVBS(eDVBFrontendParametersSatellite &p);
26         RESULT setDVBC(eDVBFrontendParametersCable &p);
27         RESULT setDVBT(eDVBFrontendParametersTerrestrial &p);
28         
29         RESULT calculateDifference(const iDVBFrontendParameters *parm, int &diff) const;
30         
31         RESULT getHash(unsigned long &hash) const;
32 };
33
34 class eDVBFrontend: public iDVBFrontend, public Object
35 {
36         DECLARE_REF(eDVBFrontend);
37         int m_type;
38         int m_fd;
39 #if HAVE_DVB_API_VERSION < 3
40         int m_secfd;
41 #endif
42         int m_state;
43         Signal1<void,iDVBFrontend*> m_stateChanged;
44         ePtr<iDVBSatelliteEquipmentControl> m_sec;
45         eSocketNotifier *m_sn;
46         int m_tuning;
47         eTimer *m_timeout;
48         
49         void feEvent(int);
50         void timeout();
51 public:
52         eDVBFrontend(int adap, int fe, int &ok);        
53         virtual ~eDVBFrontend();
54
55         RESULT getFrontendType(int &type);
56         RESULT tune(const iDVBFrontendParameters &where);
57         RESULT connectStateChange(const Slot1<void,iDVBFrontend*> &stateChange, ePtr<eConnection> &connection);
58         RESULT getState(int &state);
59         RESULT setTone(int tone);
60         RESULT setVoltage(int voltage);
61         RESULT sendDiseqc(const eDVBDiseqcCommand &diseqc);
62         RESULT setSEC(iDVBSatelliteEquipmentControl *sec);
63 };
64
65 #endif