1 #include <lib/dvb/sec.h>
2 #include <linux/dvb/frontend.h>
3 #include <lib/base/eerror.h>
5 DEFINE_REF(eDVBSatelliteEquipmentControl);
7 RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, struct dvb_frontend_parameters &parm, eDVBFrontendParametersSatellite &sat)
10 eDebug("(very) ugly and hardcoded eDVBSatelliteEquipmentControl");
12 if (sat.frequency > 11700000)
18 parm.frequency = sat.frequency - 10600000;
20 parm.frequency = sat.frequency - 9750000;
22 // frontend.sentDiseqc(...);
24 parm.inversion = sat.inversion ? INVERSION_ON : INVERSION_OFF;
31 parm.u.qpsk.fec_inner = FEC_AUTO;
34 parm.u.qpsk.symbol_rate = sat.symbol_rate;
37 frontend.setVoltage((sat.polarisation == eDVBFrontendParametersSatellite::Polarisation::Vertical) ? iDVBFrontend::voltage13 : iDVBFrontend::voltage18);
39 eDVBDiseqcCommand diseqc;
42 diseqc.data[0] = 0xe0;
43 diseqc.data[1] = 0x10;
44 diseqc.data[2] = 0x38;
45 diseqc.data[3] = 0xF0;
50 if (sat.polarisation == eDVBFrontendParametersSatellite::Polarisation::Horizontal)
53 frontend.sendDiseqc(diseqc);
54 frontend.setTone(hi ? iDVBFrontend::toneOn : iDVBFrontend::toneOff);