+ struct channel_data: public Object
+ {
+ pthread_mutex_t channel_active;
+ channel_data(eEPGCache*);
+ eEPGCache *cache;
+ eTimer abortTimer, zapTimer;
+ int prevChannelState;
+ __u8 state, isRunning, haveData;
+ ePtr<eDVBChannel> channel;
+ ePtr<eConnection> m_stateChangedConn, m_NowNextConn, m_ScheduleConn, m_ScheduleOtherConn;
+ ePtr<iDVBSectionReader> m_NowNextReader, m_ScheduleReader, m_ScheduleOtherReader;
+ tidMap seenSections[3], calcedSections[3];
+#ifdef ENABLE_PRIVATE_EPG
+ eTimer startPrivateTimer;
+ int m_PrevVersion;
+ int m_PrivatePid;
+ uniqueEPGKey m_PrivateService;
+ ePtr<eConnection> m_PrivateConn;
+ ePtr<iDVBSectionReader> m_PrivateReader;
+ std::set<__u8> seenPrivateSections;
+ void readPrivateData(const __u8 *data);
+ void startPrivateReader();
+#endif
+#ifdef ENABLE_MHW_EPG
+ std::vector<mhw_channel_name_t> m_channels;
+ std::map<__u8, mhw_theme_name_t> m_themes;
+ std::map<__u32, mhw_title_t> m_titles;
+ std::multimap<__u32, __u32> m_program_ids;
+ ePtr<eConnection> m_MHWConn, m_MHWConn2;
+ ePtr<iDVBSectionReader> m_MHWReader, m_MHWReader2;
+ eDVBSectionFilterMask m_MHWFilterMask, m_MHWFilterMask2;
+ eTimer m_MHWTimeoutTimer;
+ bool m_MHWTimeoutet;
+ void MHWTimeout() { m_MHWTimeoutet=true; }
+ void readMHWData(const __u8 *data);
+ void readMHWData2(const __u8 *data);
+ void startMHWReader(__u16 pid, __u8 tid);
+ void startMHWReader2(__u16 pid, __u8 tid, int ext=-1);
+ void startTimeout(int msek);
+ bool checkTimeout() { return m_MHWTimeoutet; }
+ void cleanup();
+ __u8 *delimitName( __u8 *in, __u8 *out, int len_in );
+ void timeMHW2DVB( u_char hours, u_char minutes, u_char *return_time);
+ void timeMHW2DVB( int minutes, u_char *return_time);
+ void timeMHW2DVB( u_char day, u_char hours, u_char minutes, u_char *return_time);
+ void storeTitle(std::map<__u32, mhw_title_t>::iterator itTitle, std::string sumText, const __u8 *data);
+#endif
+ void readData(const __u8 *data);
+ void startChannel();
+ void startEPG();
+ bool finishEPG();
+ void abortEPG();
+ void abortNonAvail();
+ };
+ bool FixOverlapping(std::pair<eventMap,timeMap> &servicemap, time_t TM, int duration, const timeMap::iterator &tm_it, const uniqueEPGKey &service);