make eDVBResourceManager accessible from python (needed for allocate a raw iDVBChannel)
[enigma2.git] / lib / dvb / frontend.h
1 #ifndef __dvb_frontend_h
2 #define __dvb_frontend_h
3
4 #include <lib/dvb/idvb.h>
5 class eDVBFrontendParameters: public iDVBFrontendParameters
6 {
7         DECLARE_REF(eDVBFrontendParameters);
8         union
9         {
10                 eDVBFrontendParametersSatellite sat;
11                 eDVBFrontendParametersCable cable;
12                 eDVBFrontendParametersTerrestrial terrestrial;
13         };
14         int m_type;
15 public:
16         eDVBFrontendParameters();
17         
18         RESULT getSystem(int &type) const;
19         RESULT getDVBS(eDVBFrontendParametersSatellite &p) const;
20         RESULT getDVBC(eDVBFrontendParametersCable &p) const;
21         RESULT getDVBT(eDVBFrontendParametersTerrestrial &p) const;
22
23         RESULT setDVBS(const eDVBFrontendParametersSatellite &p);
24         RESULT setDVBC(const eDVBFrontendParametersCable &p);
25         RESULT setDVBT(const eDVBFrontendParametersTerrestrial &p);
26         
27         RESULT calculateDifference(const iDVBFrontendParameters *parm, int &diff) const;
28         
29         RESULT getHash(unsigned long &hash) const;
30 };
31
32 #ifndef SWIG
33
34 #include <lib/dvb/sec.h>
35 class eSecCommandList;
36
37 class eDVBFrontend: public iDVBFrontend, public Object
38 {
39         DECLARE_REF(eDVBFrontend);
40         int m_type;
41         int m_fe;
42         int m_fd;
43         char m_filename[128];
44 #if HAVE_DVB_API_VERSION < 3
45         int m_secfd;
46         char m_sec_filename[128];
47 #endif
48
49         FRONTENDPARAMETERS parm;
50         int m_state;
51         Signal1<void,iDVBFrontend*> m_stateChanged;
52         ePtr<iDVBSatelliteEquipmentControl> m_sec;
53         eSocketNotifier *m_sn;
54         int m_tuning;
55         eTimer *m_timeout;
56         eTimer *m_tuneTimer;
57
58         eSecCommandList m_sec_sequence;
59
60         int m_data[10]; /* when satellite frontend then
61                 data[0] = lastcsw -> state of the committed switch
62                 data[1] = lastucsw -> state of the uncommitted switch
63                 data[2] = lastToneburst -> current state of toneburst switch
64                 data[3] = newRotorCmd -> last sent rotor cmd
65                 data[4] = newRotorPos -> current Rotor Position
66                 data[5] = curRotorCmd
67                 data[6] = curRotorPos
68                 data[7] = linkedToTunerNo
69                 data[8] = dependsToTunerNo (just satpos.. for rotor with twin lnb)
70                 data[9] = previousFrequencyOffset */
71
72         int m_idleInputpower[2];  // 13V .. 18V
73         int m_runningInputpower;
74
75         int m_timeoutCount; // needed for timeout
76         int m_retryCount; // diseqc retry for rotor
77         int m_curVoltage;
78
79         void feEvent(int);
80         void timeout();
81         void tuneLoop();  // called by m_tuneTimer
82         void setFrontend();
83         int readInputpower();
84         bool setSecSequencePos(int steps);
85 public:
86         eDVBFrontend(int adap, int fe, int &ok);        
87         virtual ~eDVBFrontend();
88
89         RESULT getFrontendType(int &type);
90         RESULT tune(const iDVBFrontendParameters &where);
91         RESULT prepare_sat(const eDVBFrontendParametersSatellite &);
92         RESULT prepare_cable(const eDVBFrontendParametersCable &);
93         RESULT prepare_terrestrial(const eDVBFrontendParametersTerrestrial &);
94         RESULT connectStateChange(const Slot1<void,iDVBFrontend*> &stateChange, ePtr<eConnection> &connection);
95         RESULT getState(int &state);
96         RESULT setTone(int tone);
97         RESULT setVoltage(int voltage);
98         RESULT sendDiseqc(const eDVBDiseqcCommand &diseqc);
99         RESULT sendToneburst(int burst);
100         RESULT setSEC(iDVBSatelliteEquipmentControl *sec);
101         RESULT setSecSequence(const eSecCommandList &list);
102         RESULT getData(int num, int &data);
103         RESULT setData(int num, int val);
104
105         int readFrontendData(int type); // bitErrorRate, signalPower, signalQuality, Locked, Synced
106         PyObject *readTransponderData(bool original);
107
108         int isCompatibleWith(ePtr<iDVBFrontendParameters> &feparm);
109         int getID() { return m_fe; }
110
111         int openFrontend();
112         int closeFrontend();
113 };
114
115 #endif // SWIG
116 #endif