Merge branch 'bug_347_adenin_unicable_xml'
authorghost <andreas.monzner@multimedia-labs.de>
Fri, 26 Nov 2010 11:55:18 +0000 (12:55 +0100)
committerghost <andreas.monzner@multimedia-labs.de>
Fri, 26 Nov 2010 11:55:18 +0000 (12:55 +0100)
1  2 
lib/dvb/sec.cpp

diff --combined lib/dvb/sec.cpp
index a8d2d924bd548452ae4513ad8bf0ac640cac84c2,9ca0f734050034527137b1bf41bbb947a0b3182d..a2bc88693d10185845b99800ff7d040ce0a333fa
@@@ -212,7 -212,7 +212,7 @@@ int eDVBSatelliteEquipmentControl::canT
  
                                eSecDebugNoSimulate("ret5 %d", ret);
  
-                               if (ret && lnb_param.SatCR_idx == -1)
+                               if (ret && !is_unicable)
                                {
                                        int lof = sat.frequency > lnb_param.m_lof_threshold ?
                                                lnb_param.m_lof_hi : lnb_param.m_lof_lo;
@@@ -300,11 -300,6 +300,6 @@@ RESULT eDVBSatelliteEquipmentControl::p
                if ( sit != lnb_param.m_satellites.end())
                {
                        eSecCommandList sec_sequence;
-                       lnb_param.guard_offset = 0; //HACK
-                       frontend.setData(eDVBFrontend::SATCR, lnb_param.SatCR_idx);
-                       
                        eDVBSatelliteSwitchParameters &sw_param = sit->second;
                        bool doSetFrontend = true;
                        bool doSetVoltageToneFrontend = true;
                        eDVBSatelliteDiseqcParameters::t_diseqc_mode diseqc_mode = di_param.m_diseqc_mode;
                        eDVBSatelliteSwitchParameters::t_voltage_mode voltage_mode = sw_param.m_voltage_mode;
                        bool diseqc13V = voltage_mode == eDVBSatelliteSwitchParameters::HV_13;
+                       bool is_unicable = lnb_param.SatCR_idx != -1;
+                       lnb_param.guard_offset = 0; //HACK
+                       frontend.setData(eDVBFrontend::SATCR, lnb_param.SatCR_idx);
  
                        if (diseqc13V)
                                voltage_mode = eDVBSatelliteSwitchParameters::HV;
  
                        int lof = (band&1)?lnb_param.m_lof_hi:lnb_param.m_lof_lo;
  
-                       int local=0;
-                       if(lnb_param.SatCR_idx == -1)
+                       if(!is_unicable)
                        {
-                       // calc Frequency
-                               local = abs(sat.frequency 
+                               // calc Frequency
+                               int local= abs(sat.frequency 
                                        - lof);
                                parm.FREQUENCY = ((((local * 2) / 125) + 1) / 2) * 125;
                                frontend.setData(eDVBFrontend::FREQ_OFFSET, sat.frequency - parm.FREQUENCY);
  
                                        if ( send_mask )
                                        {
 +                                              int diseqc_repeats = diseqc_mode > eDVBSatelliteDiseqcParameters::V1_0 ? di_param.m_repeats : 0;
                                                int vlt = iDVBFrontend::voltageOff;
                                                eSecCommand::pair compare;
                                                compare.steps = +3;
                                                        if ( send_mask & 2 )
                                                                ++loops;
  
 -                                                      loops <<= di_param.m_repeats;
 +                                                      loops <<= diseqc_repeats;
  
                                                        for ( int i = 0; i < loops;)  // fill commands...
                                                        {
                                                                        int tmp = m_params[DELAY_BETWEEN_DISEQC_REPEATS];
                                                                        if (cmd)
                                                                        {
 -                                                                              int delay = di_param.m_repeats ? (tmp - 54) / 2 : tmp;  // standard says 100msek between two repeated commands
 +                                                                              int delay = diseqc_repeats ? (tmp - 54) / 2 : tmp;  // standard says 100msek between two repeated commands
                                                                                sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, delay) );
                                                                                diseqc.data[2]=cmd;
                                                                                diseqc.data[3]=(cmd==0x38) ? csw : ucsw;
                                        if ( RotorCmd != -1 && RotorCmd != lastRotorCmd )
                                        {
                                                eSecCommand::pair compare;
-                                               if (!send_mask && lnb_param.SatCR_idx == -1)
+                                               if (!send_mask && !is_unicable)
                                                {
                                                        compare.steps = +3;
                                                        compare.tone = iDVBFrontend::toneOff;
                                                        diseqc.data[3] = RotorCmd;
                                                        diseqc.data[4] = 0x00;
                                                }
- //                                            if(lnb_param.SatCR_idx == -1)
+ //                                            if(!is_unicable)
                                                {
                                                        int mrt = m_params[MOTOR_RUNNING_TIMEOUT]; // in seconds!
-                                                       if ( rotor_param.m_inputpower_parameters.m_use || lnb_param.SatCR_idx == -1)
+                                                       if ( rotor_param.m_inputpower_parameters.m_use && !is_unicable)
                                                        { // use measure rotor input power to detect rotor state
                                                                bool turn_fast = need_turn_fast(rotor_param.m_inputpower_parameters.m_turning_speed);
                                                                eSecCommand::rotor cmd;
                        sec_fe->setData(eDVBFrontend::NEW_UCSW, ucsw);
                        sec_fe->setData(eDVBFrontend::NEW_TONEBURST, di_param.m_toneburst_param);
  
-                       if ((doSetVoltageToneFrontend) && (lnb_param.SatCR_idx == -1))
+                       if (doSetVoltageToneFrontend && !is_unicable)
                        {
                                eSecCommand::pair compare;
                                compare.voltage = voltage;
  
                        sec_sequence.push_back( eSecCommand(eSecCommand::UPDATE_CURRENT_SWITCHPARMS) );
  
-                       if(lnb_param.SatCR_idx != -1)
+                       if(is_unicable)
                        {
                                // check if voltage is disabled
                                eSecCommand::pair compare;
@@@ -1005,6 -1001,19 +1002,6 @@@ RESULT eDVBSatelliteEquipmentControl::c
        //reset some tuner configuration
        for (eSmartPtrList<eDVBRegisteredFrontend>::iterator it(m_avail_frontends.begin()); it != m_avail_frontends.end(); ++it)
        {
 -              long tmp;
 -              char c;
 -              if (sscanf(it->m_frontend->getDescription(), "BCM450%c (internal)", &c) == 1 && !it->m_frontend->getData(eDVBFrontend::LINKED_PREV_PTR, tmp) && tmp != -1)
 -              {
 -                      FILE *f=fopen("/proc/stb/tsmux/lnb_b_input", "w");
 -                      if (!f || fwrite("B", 1, 1, f) != 1)
 -                              eDebug("set /proc/stb/tsmux/lnb_b_input to B failed!! (%m)");
 -                      else
 -                      {
 -                              eDebug("set /proc/stb/tsmux/lnb_b_input to B OK");
 -                              fclose(f);
 -                      }
 -              }
                it->m_frontend->setData(eDVBFrontend::SATPOS_DEPENDS_PTR, -1);
                it->m_frontend->setData(eDVBFrontend::LINKED_PREV_PTR, -1);
                it->m_frontend->setData(eDVBFrontend::LINKED_NEXT_PTR, -1);
@@@ -1436,6 -1445,17 +1433,6 @@@ RESULT eDVBSatelliteEquipmentControl::s
                        char c;
                        p1->m_frontend->setData(eDVBFrontend::LINKED_PREV_PTR, (long)p2);
                        p2->m_frontend->setData(eDVBFrontend::LINKED_NEXT_PTR, (long)p1);
 -                      if (!strcmp(p1->m_frontend->getDescription(), p2->m_frontend->getDescription()) && sscanf(p1->m_frontend->getDescription(), "BCM450%c (internal)", &c) == 1)
 -                      {
 -                              FILE *f=fopen("/proc/stb/tsmux/lnb_b_input", "w");
 -                              if (!f || fwrite("A", 1, 1, f) != 1)
 -                                      eDebug("set /proc/stb/tsmux/lnb_b_input to A failed!! (%m)");
 -                              else
 -                              {
 -                                      eDebug("set /proc/stb/tsmux/lnb_b_input to A OK");
 -                                      fclose(f);
 -                              }
 -                      }
                }
  
                p1=p2=NULL;