+
+ long oldSatcr, oldPin, oldDiction;
+ frontend.getData(eDVBFrontend::SATCR, oldSatcr);
+ frontend.getData(eDVBFrontend::PIN, oldPin);
+ frontend.getData(eDVBFrontend::DICTION, oldDiction);
+
+ if((oldSatcr != -1) && (oldSatcr != lnb_param.SatCR_idx))
+ {
+ switch (oldDiction)
+ {
+ case 1:
+ if(oldPin < 1)
+ {
+ diseqc.len = 4;
+ diseqc.data[0] = 0x70;
+ }
+ else
+ {
+ diseqc.len = 5;
+ diseqc.data[0] = 0x71;
+ diseqc.data[4] = oldPin;
+ }
+ diseqc.data[1] = oldSatcr << 3;
+ diseqc.data[2] = 0x00;
+ diseqc.data[3] = 0x00;
+ break;
+ case 0:
+ default:
+ if(oldPin < 1)
+ {
+ diseqc.len = 5;
+ diseqc.data[2] = 0x5A;
+ }
+ else
+ {
+ diseqc.len = 6;
+ diseqc.data[2] = 0x5C;
+ diseqc.data[5] = oldPin;
+ }
+ diseqc.data[0] = 0xE0;
+ diseqc.data[1] = 0x10;
+ diseqc.data[3] = oldSatcr << 5;
+ diseqc.data[4] = 0x00;
+ break;
+ }
+ sec_sequence.push_back( eSecCommand(eSecCommand::SEND_DISEQC, diseqc) );
+ sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_LAST_DISEQC_CMD]) );
+ frontend.setData(eDVBFrontend::SATCR, -1);
+ }
+
+ frontend.setData(eDVBFrontend::DICTION, lnb_param.SatCR_format);
+//TODO frontend.setData(eDVBFrontend::PIN, lnb_param.SatCR_pin);
+
+ long pin = 0; // hack
+
+ switch(lnb_param.SatCR_format)
+ {
+ case 1: //JESS
+ if(pin < 1)
+ {
+ diseqc.len = 4;
+ diseqc.data[0] = 0x70;
+ diseqc.data[1] = lnb_param.UnicableTuningWord >> 16;
+ diseqc.data[2] = lnb_param.UnicableTuningWord >> 8;
+ diseqc.data[3] = lnb_param.UnicableTuningWord;
+ }
+ else
+ {
+ diseqc.len = 5;
+ diseqc.data[0] = 0x71;
+ diseqc.data[4] = pin;
+ }
+ diseqc.data[1] = lnb_param.UnicableTuningWord >> 16;
+ diseqc.data[2] = lnb_param.UnicableTuningWord >> 8;
+ diseqc.data[3] = lnb_param.UnicableTuningWord;
+ break;
+ case 0: //DiSEqC
+ default:
+ if(pin < 1)
+ {
+ diseqc.len = 5;
+ diseqc.data[2] = 0x5A;
+ }
+ else
+ {
+ diseqc.len = 6;
+ diseqc.data[2] = 0x5C;
+ diseqc.data[5] = pin;
+ }
+ diseqc.data[0] = 0xE0;
+ diseqc.data[1] = 0x10;
+ diseqc.data[3] = lnb_param.UnicableTuningWord >> 8;
+ diseqc.data[4] = lnb_param.UnicableTuningWord;
+ }
+ frontend.setData(eDVBFrontend::SATCR, lnb_param.SatCR_idx);