DEFINE_REF(eDVBLocalTimeHandler);
eDVBLocalTimeHandler::eDVBLocalTimeHandler()
- :m_time_ready(false), m_time_difference(0)
+ :m_time_ready(false)
{
if ( !instance )
instance=this;
if (ready())
{
eDebug("set RTC to previous valid time");
- setRTC(nowTime());
+ setRTC(::time(0));
}
}
void eDVBLocalTimeHandler::updateTime( time_t tp_time, eDVBChannel *chan, int update_count )
{
+ int time_difference;
bool restart_tdt = false;
if (!tp_time)
restart_tdt = true;
now.tm_min,
now.tm_sec);
time_t linuxTime=time(0);
- time_t nowTime=linuxTime+m_time_difference;
- localtime_r(&nowTime, &now);
+ localtime_r(&linuxTime, &now);
eDebug("[eDVBLocalTimerHandler] Receiver time is %02d:%02d:%02d",
now.tm_hour,
now.tm_min,
now.tm_sec);
- m_time_difference = rtc_time - linuxTime;
- eDebug("[eDVBLocalTimerHandler] RTC to Receiver time difference is %ld seconds", nowTime - rtc_time );
- if ( m_time_difference )
+ time_difference = rtc_time - linuxTime;
+ eDebug("[eDVBLocalTimerHandler] RTC to Receiver time difference is %ld seconds", linuxTime - rtc_time );
+ if ( time_difference )
{
eDebug("[eDVBLocalTimerHandler] set Linux Time to RTC Time");
timeval tnow;
gettimeofday(&tnow,0);
tnow.tv_sec=rtc_time;
settimeofday(&tnow,0);
- m_time_difference=0;
}
- else if ( !m_time_difference )
+ else if ( !time_difference )
eDebug("[eDVBLocalTimerHandler] no change needed");
else
eDebug("[eDVBLocalTimerHandler] set to RTC time");
// current linux time
time_t linuxTime = time(0);
- // current enigma time
- time_t nowTime=linuxTime+m_time_difference;
-
// difference between current enigma time and transponder time
- int enigma_diff = tp_time-nowTime;
+ int enigma_diff = tp_time-linuxTime;
int new_diff=0;
{
eDebug("[eDVBLocalTimerHandler] we have correction %d", it->second);
time_t CorrectedTpTime = tp_time+it->second;
- int ddiff = CorrectedTpTime-nowTime;
+ int ddiff = CorrectedTpTime-linuxTime;
eDebug("[eDVBLocalTimerHandler] diff after add correction is %d", ddiff);
if ( abs(it->second) < 300 ) // stored correction < 5 min
{
{
time_t rtc=getRTC();
m_timeOffsetMap[chan->getChannelID()] = rtc-tp_time;
- new_diff = rtc-nowTime; // set enigma time to rtc
+ new_diff = rtc-linuxTime; // set enigma time to rtc
eDebug("[eDVBLocalTimerHandler] update stored correction to %ld (calced against RTC time)", rtc-tp_time );
}
else if ( abs(ddiff) <= 120 )
m_time_ready=true;
}
- time_t t = nowTime+new_diff;
+ time_t t = linuxTime+new_diff;
m_last_tp_time_difference=tp_time-t;
if (!new_diff &&
now.tm_min,
now.tm_sec);
- m_time_difference = t - linuxTime; // calc our new linux_time -> enigma_time correction
- eDebug("[eDVBLocalTimerHandler] m_time_difference is %d", m_time_difference );
+ time_difference = t - linuxTime; // calc our new linux_time -> enigma_time correction
+ eDebug("[eDVBLocalTimerHandler] m_time_difference is %d", time_difference );
- if ( m_time_difference )
+ if ( time_difference )
{
eDebug("[eDVBLocalTimerHandler] set Linux Time");
timeval tnow;
gettimeofday(&tnow,0);
tnow.tv_sec=t;
settimeofday(&tnow,0);
- m_time_difference=0;
}
/*emit*/ m_timeUpdated();
int duration;
time_t TM = parseDVBtime( eit_event->start_time_1, eit_event->start_time_2, eit_event->start_time_3, eit_event->start_time_4, eit_event->start_time_5);
- time_t now = eDVBLocalTimeHandler::getInstance()->nowTime();
+ time_t now = ::time(0);
if ( TM != 3599 && TM > -1)
channel->haveData |= source;
{
eDebug("[EPGC] start cleanloop");
- time_t now = eDVBLocalTimeHandler::getInstance()->nowTime();
+ time_t now = ::time(0);
for (eventCache::iterator DBIt = eventDB.begin(); DBIt != eventDB.end(); DBIt++)
{
onid |= 0x80000000; // we use highest bit as private epg indicator
chid.original_network_id = onid;
updateMap::iterator It = channelLastUpdated.find( chid );
- int update = ( It != channelLastUpdated.end() ? ( UPDATE_INTERVAL - ( (eDVBLocalTimeHandler::getInstance()->nowTime()-It->second) * 1000 ) ) : ZAP_DELAY );
+ int update = ( It != channelLastUpdated.end() ? ( UPDATE_INTERVAL - ( (::time(0)-It->second) * 1000 ) ) : ZAP_DELAY );
if (update < ZAP_DELAY)
update = ZAP_DELAY;
data->startPrivateTimer.start(update, 1);
{
if (!isRunning) // epg ready
{
- eDebug("[EPGC] stop caching events(%ld)", eDVBLocalTimeHandler::getInstance()->nowTime());
+ eDebug("[EPGC] stop caching events(%ld)", ::time(0));
zapTimer.start(UPDATE_INTERVAL, 1);
eDebug("[EPGC] next update in %i min", UPDATE_INTERVAL / 60000);
for (int i=0; i < 3; ++i)
calcedSections[i].clear();
}
singleLock l(cache->cache_lock);
- cache->channelLastUpdated[channel->getChannelID()] = eDVBLocalTimeHandler::getInstance()->nowTime();
+ cache->channelLastUpdated[channel->getChannelID()] = ::time(0);
#ifdef ENABLE_MHW_EPG
cleanup();
#endif
void eEPGCache::channel_data::startEPG()
{
- eDebug("[EPGC] start caching events(%ld)", eDVBLocalTimeHandler::getInstance()->nowTime());
+ eDebug("[EPGC] start caching events(%ld)", ::time(0));
state=0;
haveData=0;
for (int i=0; i < 3; ++i)
pthread_mutex_lock(&channel_active);
updateMap::iterator It = cache->channelLastUpdated.find( channel->getChannelID() );
- int update = ( It != cache->channelLastUpdated.end() ? ( UPDATE_INTERVAL - ( (eDVBLocalTimeHandler::getInstance()->nowTime()-It->second) * 1000 ) ) : ZAP_DELAY );
+ int update = ( It != cache->channelLastUpdated.end() ? ( UPDATE_INTERVAL - ( (::time(0)-It->second) * 1000 ) ) : ZAP_DELAY );
if (update < ZAP_DELAY)
update = ZAP_DELAY;
break;
default: eDebugNoNewLine("unknown");break;
}
- eDebug(" finished(%ld)", eDVBLocalTimeHandler::getInstance()->nowTime());
+ eDebug(" finished(%ld)", ::time(0));
if ( reader )
reader->stop();
isRunning &= ~source;
if ( It != eventDB.end() && !It->second.first.empty() ) // entrys cached ?
{
if (t==-1)
- t = eDVBLocalTimeHandler::getInstance()->nowTime();
+ t = ::time(0);
timeMap::iterator i = direction <= 0 ? It->second.second.lower_bound(t) : // find > or equal
It->second.second.upper_bound(t); // just >
if ( i != It->second.second.end() )
singleLock s(cache_lock);
const eServiceReferenceDVB &ref = (const eServiceReferenceDVB&)handleGroup(service);
if (begin == -1)
- begin = eDVBLocalTimeHandler::getInstance()->nowTime();
+ begin = ::time(0);
eventCache::iterator It = eventDB.find(ref);
if ( It != eventDB.end() && It->second.second.size() )
{
}
ePyObject nowTime = strchr(argstring, 'C') ?
- PyLong_FromLong(eDVBLocalTimeHandler::getInstance()->nowTime()) :
+ PyLong_FromLong(::time(0)) :
ePyObject();
int must_get_service_name = strchr(argstring, 'N') ? 1 : strchr(argstring, 'n') ? 2 : 0;
}
if (minutes && stime == -1)
- stime = eDVBLocalTimeHandler::getInstance()->nowTime();
+ stime = ::time(0);
eServiceReference ref(handleGroup(eServiceReference(PyString_AS_STRING(service))));
if (ref.type != eServiceReference::idDVB)
ASSERT(ptr <= 4098);
for ( std::map< date_time, std::list<uniqueEPGKey> >::iterator it(start_times.begin()); it != start_times.end(); ++it )
{
- time_t now = eDVBLocalTimeHandler::getInstance()->nowTime();
+ time_t now = ::time(0);
if ( (it->first.tm + duration_sec) < now )
continue;
memcpy(event+2, it->first.data, 5);
int tmp = chid.original_network_id.get();
tmp |= 0x80000000; // we use highest bit as private epg indicator
chid.original_network_id = tmp;
- cache->channelLastUpdated[chid] = eDVBLocalTimeHandler::getInstance()->nowTime();
+ cache->channelLastUpdated[chid] = ::time(0);
m_PrevVersion = (data[5] & 0x3E) >> 1;
startPrivateReader();
}
// As far as we know all mhw time data is sent in central Europe time zone.
// So, temporarily set timezone to western europe
- time_t dt = eDVBLocalTimeHandler::getInstance()->nowTime();
+ time_t dt = ::time(0);
char *old_tz = getenv( "TZ" );
putenv("TZ=CET-1CEST,M3.5.0/2,M10.5.0/3");
}
}
eDebug("[EPGC] mhw finished(%ld) %d summaries not found",
- eDVBLocalTimeHandler::getInstance()->nowTime(),
+ ::time(0),
m_program_ids.size());
// Summaries have been read, titles that have summaries have been stored.
// Now store titles that do not have summaries.
for (std::map<__u32, mhw_title_t>::iterator itTitle(m_titles.begin()); itTitle != m_titles.end(); itTitle++)
storeTitle( itTitle, "", data );
eDebug("[EPGC] mhw2 finished(%ld) %d summaries not found",
- eDVBLocalTimeHandler::getInstance()->nowTime(),
+ ::time(0),
m_program_ids.size());
}
}