data->m_PrevVersion = -1;
data->m_PrivatePid = msg.pid;
data->m_PrivateService = msg.service;
- updateMap::iterator It = channelLastUpdated.find( channel->getChannelID() );
+ int onid = chid.original_network_id.get();
+ 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 );
if (update < ZAP_DELAY)
update = ZAP_DELAY;
}
}
-PyObject *handleEvent(ePtr<eServiceEvent> &ptr, PyObject *dest_list, char* argstring, int argcount, PyObject *service, PyObject *nowTime, PyObject *service_name, PyObject *convertFunc, PyObject *convertFuncArgs)
+int handleEvent(ePtr<eServiceEvent> &ptr, PyObject *dest_list, char* argstring, int argcount, PyObject *service, PyObject *nowTime, PyObject *service_name, PyObject *convertFunc, PyObject *convertFuncArgs)
{
if (convertFunc)
{
Py_DECREF(nowTime);
Py_DECREF(convertFuncArgs);
Py_DECREF(dest_list);
- return result;
+ PyErr_SetString(PyExc_StandardError,
+ "error in convertFunc execute");
+ eDebug("error in convertFunc execute");
+ return -1;
}
PyList_Append(dest_list, result);
Py_DECREF(result);
ePtr<eServiceEvent> ptr;
while (!getNextTimeEntry(ptr))
{
- PyObject *ret = handleEvent(ptr, dest_list, argstring, argcount, service, nowTime, service_name, convertFunc, convertFuncArgs);
- if (ret)
- return ret;
+ if (handleEvent(ptr, dest_list, argstring, argcount, service, nowTime, service_name, convertFunc, convertFuncArgs))
+ {
+ Unlock();
+ return 0; // error
+ }
}
}
Unlock();
else
lookupEventTime(ref, stime, ptr, type);
}
- PyObject *ret = handleEvent(ptr, dest_list, argstring, argcount, service, nowTime, service_name, convertFunc, convertFuncArgs);
- if (ret)
- return ret;
+ if (handleEvent(ptr, dest_list, argstring, argcount, service, nowTime, service_name, convertFunc, convertFuncArgs))
+ return 0; // error
}
if (service_changed)
Py_DECREF(service);
// check all events
for (timeMap::iterator evit(evmap.begin()); evit != evmap.end() && maxcount; ++evit)
{
- if (evit->second->getEventID() == eventid)
+ int evid = evit->second->getEventID();
+ if ( evid == eventid)
continue;
__u8 *data = evit->second->EITdata;
int tmp = evit->second->ByteSize-12;
ePtr<eServiceEvent> ptr;
if (needServiceEvent)
{
- lookupEventId(ref, evit->first, ptr);
+ lookupEventId(ref, evid, ptr);
if (!ptr)
eDebug("event not found !!!!!!!!!!!");
}
{
switch( (tsid << 16) | sid )
{
+ case 0x01030b: sid = 0x1b; tsid = 4; break; // Premiere Win
case 0x0300f0: sid = 0xe0; tsid = 2; break;
case 0x0300f1: sid = 0xe1; tsid = 2; break;
case 0x0300f5: sid = 0xdc; break;
if ( seenPrivateSections.size() == (unsigned int)(data[7] + 1) )
{
eDebug("[EPGC] private finished");
+ eDVBChannelID chid = channel->getChannelID();
+ 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();
m_PrevVersion = (data[5] & 0x3E) >> 1;
startPrivateReader();
}
}
}
abort:
- isRunning &= ~eEPGCache::MHW;
+ isRunning &= ~MHW;
m_MHWConn2=0;
if ( m_MHWReader2 )
m_MHWReader2->stop();