1 #include <lib/dvb/sec.h>
2 #include <linux/dvb/frontend.h>
3 #include <lib/base/eerror.h>
5 DEFINE_REF(eDVBSatelliteEquipmentControl);
7 eDVBSatelliteEquipmentControl::eDVBSatelliteEquipmentControl()
11 RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, struct dvb_frontend_parameters &parm, eDVBFrontendParametersSatellite &sat)
14 eDebug("(very) ugly and hardcoded eDVBSatelliteEquipmentControl");
16 if (sat.frequency > 11700000)
22 parm.frequency = sat.frequency - 10600000;
24 parm.frequency = sat.frequency - 9750000;
26 // frontend.sentDiseqc(...);
28 parm.inversion = (!sat.inversion) ? INVERSION_ON : INVERSION_OFF;
35 parm.u.qpsk.fec_inner = FEC_AUTO;
38 parm.u.qpsk.symbol_rate = sat.symbol_rate;
41 frontend.setVoltage((sat.polarisation == eDVBFrontendParametersSatellite::Polarisation::Vertical) ? iDVBFrontend::voltage13 : iDVBFrontend::voltage18);
43 eDVBDiseqcCommand diseqc;
46 diseqc.data[0] = 0xe0;
47 diseqc.data[1] = 0x10;
48 diseqc.data[2] = 0x38;
49 diseqc.data[3] = 0xF0;
54 if (sat.polarisation == eDVBFrontendParametersSatellite::Polarisation::Horizontal)
57 frontend.sendDiseqc(diseqc);
58 frontend.setTone(hi ? iDVBFrontend::toneOn : iDVBFrontend::toneOff);