diff options
-rw-r--r-- | eepg.c | 10 | ||||
-rw-r--r-- | eit2.c | 54 | ||||
-rw-r--r-- | eit2.h | 10 |
3 files changed, 47 insertions, 27 deletions
@@ -2917,7 +2917,7 @@ void cFilterEEPG::ProccessContinuous(u_short Pid, u_char Tid, int Length, const { //0x39 Viasat, 0x0300 Dish Network EEPG, 0x0441 Bell ExpressVU EEPG LogD(4, prep("Pid: 0x%02x Tid: %d Length: %d"), Pid, Tid, Length); -#if APIVERSNUM >= 20300 +/*#if APIVERSNUM >= 20300 LOCK_CHANNELS_WRITE; LOCK_SCHEDULES_WRITE; // cStateKey SchedulesStateKey; @@ -2925,12 +2925,12 @@ void cFilterEEPG::ProccessContinuous(u_short Pid, u_char Tid, int Length, const #else cSchedulesLock SchedulesLock(true, 10); cSchedules *Schedules = (cSchedules*)(cSchedules::Schedules(SchedulesLock)); -#endif +#endif*/ //Look for other satelite positions only if Dish/Bell ExpressVU for the moment hardcoded pid check - if(Channels && Schedules) - SI::cEIT2 EIT(Channels, Schedules, Source(), Tid, Data, Format, Pid == EIT_PID); + //if(Channels && Schedules) + SI::cEIT2 EIT(/*Channels, Schedules,*/ Source(), Tid, Data, Format, Pid == EIT_PID); -#if APIVERSNUM < 20300 +#if APIVERSNUM < 20300 //TODO else//cEIT EIT (Schedules, Source (), Tid, Data); { // If we don't get a write lock, let's at least get a read lock, so @@ -18,7 +18,7 @@ using namespace util; namespace SI { -cEvent* cEIT2::ProcessEitEvent(cSchedule* pSchedule,const SI::EIT::Event* EitEvent, +cEvent* cEIT2::ProcessEitEvent(/*cChannels* Channels, cSchedules * Schedules,*/cSchedule* pSchedule,const SI::EIT::Event* EitEvent, uchar Tid, uchar versionNumber) { bool ExternalData = false; @@ -90,7 +90,7 @@ cEvent* cEIT2::ProcessEitEvent(cSchedule* pSchedule,const SI::EIT::Event* EitEve pEvent->SetVersion (versionNumber); ProcessEventDescriptors(ExternalData, channel->Source(), Tid, EitEvent, - pEvent, Schedules, channel->GetChannelID()); + pEvent, /*Schedules,*/ channel->GetChannelID()); Modified = true; return pEvent; @@ -98,10 +98,10 @@ cEvent* cEIT2::ProcessEitEvent(cSchedule* pSchedule,const SI::EIT::Event* EitEve void cEIT2::ProcessEventDescriptors(bool ExternalData, int Source, u_char Tid, const SI::EIT::Event* SiEitEvent, cEvent* pEvent, - cSchedules* Schedules, const tChannelID& channelId) + /*cChannels* Channels, cSchedules* Schedules,*/ const tChannelID& channelId) { - cEvent *rEvent = NULL; + const cEvent *rEvent = NULL; int LanguagePreferenceShort = -1; int LanguagePreferenceExt = -1; unsigned char nDescriptorTag; @@ -114,14 +114,14 @@ void cEIT2::ProcessEventDescriptors(bool ExternalData, int Source, //uchar DishTheme = 0, DishCategory = 0; - cLinkChannels *LinkChannels = NULL; + //cLinkChannels *LinkChannels = NULL; cComponents *Components = NULL; -#if APIVERSNUM >= 20300 +/*#if APIVERSNUM >= 20300 cChannel *channel = Channels->GetByChannelID(channelId); #else cChannel *channel = Channels.GetByChannelID(channelId); -#endif +#endif*/ DescriptorLoop dl = SiEitEvent->eventDescriptors; for (SI::Loop::Iterator it2; (d = dl.getNext(it2)); ) @@ -232,13 +232,18 @@ void cEIT2::ProcessEventDescriptors(bool ExternalData, int Source, } break; case SI::TimeShiftedEventDescriptorTag: { +#if APIVERSNUM >= 20300 + LOCK_SCHEDULES_READ; +#else + //TODO +#endif if (Schedules) { SI::TimeShiftedEventDescriptor * tsed = (SI::TimeShiftedEventDescriptor *) d; - cSchedule *rSchedule = (cSchedule *) Schedules->GetSchedule( + const cSchedule *rSchedule = Schedules->GetSchedule( tChannelID(Source, channel->Nid(), channel->Tid(), tsed->getReferenceServiceId())); if (!rSchedule) break; - rEvent = (cEvent *) rSchedule->GetEvent(tsed->getReferenceEventId()); + rEvent = rSchedule->GetEvent(tsed->getReferenceEventId()); if (!rEvent) break; pEvent->SetTitle(rEvent->Title()); @@ -248,7 +253,8 @@ void cEIT2::ProcessEventDescriptors(bool ExternalData, int Source, } break; case SI::LinkageDescriptorTag: { - SI::LinkageDescriptor * ld = (SI::LinkageDescriptor *) d; + //Leave channel linking to VDR +/* SI::LinkageDescriptor * ld = (SI::LinkageDescriptor *) d; tChannelID linkID(Source, ld->getOriginalNetworkId(), ld->getTransportStreamId(), ld->getServiceId()); if (ld->getLinkageType() == 0xB0) { // Premiere World @@ -290,7 +296,7 @@ void cEIT2::ProcessEventDescriptors(bool ExternalData, int Source, else channel->SetPortalName(linkName); } - } + }*/ } break; case SI::ComponentDescriptorTag: { @@ -455,15 +461,15 @@ void cEIT2::ProcessEventDescriptors(bool ExternalData, int Source, if (Format != DISH_BEV) pEvent->FixEpgBugs(); - if (LinkChannels) - channel->SetLinkChannels (LinkChannels); + //if (LinkChannels) + //channel->SetLinkChannels (LinkChannels); } -cEIT2::cEIT2 (cChannels* Channels, cSchedules * Schedules, int Source, u_char Tid, const u_char * Data, EFormat format, bool isEITPid, bool OnlyRunningStatus) +cEIT2::cEIT2 (/*cChannels* Channels, cSchedules * Schedules,*/ int Source, u_char Tid, const u_char * Data, EFormat format, bool isEITPid, bool OnlyRunningStatus) : SI::EIT (Data, false) , OnlyRunningStatus(OnlyRunningStatus) -, Channels(Channels) -, Schedules(Schedules) +//, Channels(Channels) +//, Schedules(Schedules) , Format(format) { @@ -486,6 +492,20 @@ cEIT2::cEIT2 (cChannels* Channels, cSchedules * Schedules, int Source, u_char Ti //LogD(5, prep("channelID: %s format:%d"), *channel->GetChannelID().ToString(), Format); +#if APIVERSNUM >= 20300 + LOCK_CHANNELS_WRITE; + if (!Channels) { + LogD(3, prep("Error obtaining channels lock")); + return; + } + LOCK_SCHEDULES_WRITE; + if (!Schedules) { + LogD(3, prep("Error obtaining schedules lock")); + return; + } +#else + //TODO +#endif cSchedule *pSchedule = (cSchedule *) Schedules->GetSchedule (channel, true); Empty = true; @@ -602,7 +622,7 @@ cEIT2::cEIT2 (cSchedule * Schedule, EFormat format) , OnlyRunningStatus(false) , SegmentStart(0) , SegmentEnd(0) -, Schedules(NULL) +//, Schedules(NULL) , Format(format) { //LogD(2, prep("cEIT2::cEIT2")); @@ -51,18 +51,18 @@ extern bool SystemCharacterTableIsSingleByte;*/ class cEIT2:public SI::EIT { public: - cEIT2(cChannels* Channels, cSchedules * Schedules, int Source, u_char Tid, const u_char * Data, + cEIT2(/*cChannels* Channels, cSchedules * Schedules,*/ int Source, u_char Tid, const u_char * Data, EFormat format, bool isEITPid = false, bool OnlyRunningStatus = false); cEIT2 (cSchedule * Schedule, EFormat format); //protected: // void updateEquivalent(cSchedules * Schedules, tChannelID channelID, cEvent *pEvent); - cEvent* ProcessEitEvent(cSchedule *Schedule, const SI::EIT::Event *EitEvent, uchar TableID, uchar Version); + cEvent* ProcessEitEvent(/*cChannels* Channels, cSchedules * Schedules,*/cSchedule *Schedule, const SI::EIT::Event *EitEvent, uchar TableID, uchar Version); private: void ProcessEventDescriptors(bool ExternalData, int Source, u_char Tid, const SI::EIT::Event* SiEitEvent, cEvent* pEvent, - cSchedules* Schedules, const tChannelID& channelID); + /*cChannels* Channels,cSchedules* Schedules,*/ const tChannelID& channelID); private: bool Empty; @@ -71,8 +71,8 @@ private: bool OnlyRunningStatus; time_t SegmentStart; time_t SegmentEnd; - cChannels* Channels; - cSchedules* Schedules; +// cChannels* Channels; +// cSchedules* Schedules; EFormat Format; const cChannel* channel; }; |