follow timer API change
[enigma2.git] / lib / dvb / dvbtime.cpp
index c8bdd01eaa47738bbd4f2140c92d909c7a3f4200..bc9d3b7e18d54165e7ca96aaa70c9d4bbc16c551 100644 (file)
@@ -68,7 +68,7 @@ TDT::TDT(eDVBChannel *chan)
        CONNECT(tableReady, TDT::ready);
        CONNECT(m_interval_timer.timeout, TDT::start);
        if (chan)
-               chan->getDemux(demux);
+               chan->getDemux(demux, 0);
 }
 
 void TDT::ready(int error)
@@ -81,7 +81,7 @@ int TDT::createTable(int nr, const __u8 *data, unsigned int max)
        if ( data && data[0] == 0x70 || data[0] == 0x73 )
        {
                int length = ((data[1] & 0x0F) << 8) | data[2];
-               if ( length >= 8 )
+               if ( length >= 5 )
                {
                        time_t tptime = parseDVBtime(data[3], data[4], data[5], data[6], data[7]);
                        eDVBLocalTimeHandler::getInstance()->updateTime(tptime, chan);
@@ -97,14 +97,13 @@ void TDT::start()
        if ( chan )
        {
                eDVBTableSpec spec;
-               spec.pid = TimeAndDateTable::PID;
-               spec.tid = TimeAndDateTable::TID;
+               spec.pid = TimeAndDateSection::PID;
+               spec.tid = TimeAndDateSection::TID;
                spec.tid_mask = 0xFC;
-               spec.timeout = TimeAndDateTable::TIMEOUT;
+               spec.timeout = TimeAndDateSection::TIMEOUT;
                spec.flags= eDVBTableSpec::tfAnyVersion |
                                        eDVBTableSpec::tfHaveTID |
                                        eDVBTableSpec::tfHaveTIDMask |
-                                       eDVBTableSpec::tfCheckCRC |
                                        eDVBTableSpec::tfHaveTimeout;
                if ( demux )
                        eGTable::start( demux, spec );
@@ -213,7 +212,7 @@ void eDVBLocalTimeHandler::updateTime( time_t tp_time, eDVBChannel *chan )
                                        settimeofday(&tnow,0);
                                        for (ePtrList<eMainloop>::iterator it(eMainloop::existing_loops)
                                                ;it != eMainloop::existing_loops.end(); ++it)
-                                               it->setTimerOffset(m_time_difference);
+                                               it->addTimeOffset(m_time_difference);
                                        m_time_difference=0;
                                }
                                else if ( !m_time_difference )
@@ -334,7 +333,7 @@ void eDVBLocalTimeHandler::updateTime( time_t tp_time, eDVBChannel *chan )
                        settimeofday(&tnow,0);
                        for (ePtrList<eMainloop>::iterator it(eMainloop::existing_loops)
                                ;it != eMainloop::existing_loops.end(); ++it)
-                               it->setTimerOffset(m_time_difference);
+                               it->addTimeOffset(m_time_difference);
                        m_time_difference=0;
                }
 
@@ -349,7 +348,7 @@ void eDVBLocalTimeHandler::updateTime( time_t tp_time, eDVBChannel *chan )
                {
                        delete it->second.tdt;
                        it->second.tdt = new TDT(chan);
-                       it->second.tdt->startTimer(60*1000);  // restart TDT for this transponder in 60min
+                       it->second.tdt->startTimer(60*60*1000);  // restart TDT for this transponder in 60min
                }
        }
 }