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)
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);
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 );
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 )
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;
}
{
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
}
}
}
{
if ( chan )
{
- eDebug("[eDVBLocalTimerHandler] add channel %p", chan);
+// eDebug("[eDVBLocalTimerHandler] add channel %p", chan);
std::pair<std::map<iDVBChannel*, channel_data>::iterator, bool> tmp =
m_knownChannels.insert( std::pair<iDVBChannel*, channel_data>(chan, channel_data()) );
tmp.first->second.tdt = new TDT(chan);
chan->getState(state);
switch (state)
{
- case iDVBChannel::state_idle:
- break;
- case iDVBChannel::state_tuning:
- break;
- case iDVBChannel::state_unavailable:
- break;
case iDVBChannel::state_ok:
eDebug("[eDVBLocalTimerHandler] channel %p running", chan);
it->second.tdt->start();