remove lib/content
[enigma2.git] / lib / dvb / sec.cpp
1 #include <config.h>
2 #include <lib/dvb/sec.h>
3 #if HAVE_DVB_API_VERSION < 3
4 #include <ost/frontend.h>
5 #else
6 #include <linux/dvb/frontend.h>
7 #endif
8 #include <lib/base/eerror.h>
9
10 DEFINE_REF(eDVBSatelliteEquipmentControl);
11
12 eDVBSatelliteEquipmentControl::eDVBSatelliteEquipmentControl()
13 {
14 }
15
16 #if HAVE_DVB_API_VERSION < 3
17 RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FrontendParameters &parm, eDVBFrontendParametersSatellite &sat)
18 #else
19 RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, struct dvb_frontend_parameters &parm, eDVBFrontendParametersSatellite &sat)
20 #endif
21 {
22         int hi;
23         eDebug("(very) ugly and hardcoded eDVBSatelliteEquipmentControl");
24         
25         if (sat.frequency > 11700000)
26                 hi = 1;
27         else
28                 hi = 0;
29         
30         if (hi)
31 #if HAVE_DVB_API_VERSION < 3
32                 parm.Frequency = sat.frequency - 10600000;
33 #else
34                 parm.frequency = sat.frequency - 10600000;
35 #endif
36         else
37 #if HAVE_DVB_API_VERSION < 3
38                 parm.Frequency = sat.frequency -  9750000;
39 #else
40                 parm.frequency = sat.frequency -  9750000;
41 #endif
42         
43 //      frontend.sentDiseqc(...);
44
45 #if HAVE_DVB_API_VERSION < 3
46         parm.Inversion = (!sat.inversion) ? INVERSION_ON : INVERSION_OFF;
47 #else
48         parm.inversion = (!sat.inversion) ? INVERSION_ON : INVERSION_OFF;
49 #endif
50
51         switch (sat.fec)
52         {
53 //              case 1:
54 //              case ...:
55         default:
56 #if HAVE_DVB_API_VERSION < 3
57                 parm.u.qpsk.FEC_inner = FEC_AUTO;
58 #else
59                 parm.u.qpsk.fec_inner = FEC_AUTO;
60 #endif
61                 break;
62         }
63 #if HAVE_DVB_API_VERSION < 3
64         parm.u.qpsk.SymbolRate = sat.symbol_rate;
65 #else
66         parm.u.qpsk.symbol_rate = sat.symbol_rate;
67 #endif
68
69         frontend.setVoltage((sat.polarisation == eDVBFrontendParametersSatellite::Polarisation::Vertical) ? iDVBFrontend::voltage13 : iDVBFrontend::voltage18);
70
71         eDVBDiseqcCommand diseqc;
72         
73         diseqc.len = 4;
74         diseqc.data[0] = 0xe0;
75         diseqc.data[1] = 0x10;
76         diseqc.data[2] = 0x38;
77         diseqc.data[3] = 0xF0;
78         
79         if (hi)
80                 diseqc.data[3] |= 1;
81                 
82         if (sat.polarisation == eDVBFrontendParametersSatellite::Polarisation::Horizontal)
83                 diseqc.data[3] |= 2;
84
85         frontend.sendDiseqc(diseqc);
86         frontend.setTone(hi ? iDVBFrontend::toneOn : iDVBFrontend::toneOff);
87
88         return 0;
89 }
90