X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fdvb%2Fdvbtime.h;h=c49e67e3905f3a38bc42a8060e9ac0acb257e769;hp=3b92fd1e0c13aabc6d46a4ced7ba31fa778de4e6;hb=e90006f23e9a87b65a3fbb8b5abf5f6b4432817c;hpb=aa3d1162bef321bd2d0effdafce6eb080660a7ca diff --git a/lib/dvb/dvbtime.h b/lib/dvb/dvbtime.h index 3b92fd1..c49e67e 100644 --- a/lib/dvb/dvbtime.h +++ b/lib/dvb/dvbtime.h @@ -1,9 +1,11 @@ #ifndef __LIB_DVB_DVBTIME_H_ #define __LIB_DVB_DVBTIME_H_ +#ifndef SWIG + #include #include -#include +#include class eDVBChannel; @@ -16,31 +18,45 @@ inline int fromBCD(int bcd) return ((bcd&0xF0)>>4)*10+(bcd&0xF); } -time_t parseDVBtime(__u8 t1, __u8 t2, __u8 t3, __u8 t4, __u8 t5); +inline int toBCD(int dec) +{ + if (dec >= 100) + return -1; + return int(dec/10)*0x10 + dec%10; +} + +time_t parseDVBtime(__u8 t1, __u8 t2, __u8 t3, __u8 t4, __u8 t5, __u16 *hash=0); class TDT: public eGTable { eDVBChannel *chan; ePtr demux; - eTimer m_interval_timer; - int createTable(int nr, const __u8 *data, unsigned int max); + ePtr m_interval_timer; + int createTable(unsigned int nr, const __u8 *data, unsigned int max); void ready(int); + int update_count; public: - TDT(eDVBChannel *chan); + TDT(eDVBChannel *chan, int update_count=0); void start(); void startTimer(int interval); + int getUpdateCount() { return update_count; } }; +#endif // SWIG + class eDVBLocalTimeHandler: public Object { + DECLARE_REF(eDVBLocalTimeHandler); struct channel_data { - TDT *tdt; + ePtr tdt; ePtr channel; ePtr m_stateChangedConn; + int m_prevChannelState; }; + bool m_use_dvb_time; + ePtr m_updateNonTunedTimer; friend class TDT; - DECLARE_REF(eDVBLocalTimeHandler) std::map m_knownChannels; std::map m_timeOffsetMap; ePtr m_chanAddedConn; @@ -51,14 +67,22 @@ class eDVBLocalTimeHandler: public Object void DVBChannelStateChanged(iDVBChannel*); void readTimeOffsetData(const char*); void writeTimeOffsetData(const char*); - void updateTime(time_t tp_time, eDVBChannel*); + void updateTime(time_t tp_time, eDVBChannel*, int updateCount); + void updateNonTuned(); static eDVBLocalTimeHandler *instance; +#ifdef SWIG + eDVBLocalTimeHandler(); + ~eDVBLocalTimeHandler(); +#endif public: - PSignal0 m_timeUpdated; +#ifndef SWIG eDVBLocalTimeHandler(); ~eDVBLocalTimeHandler(); +#endif + bool getUseDVBTime() { return m_use_dvb_time; } + void setUseDVBTime(bool b); + PSignal0 m_timeUpdated; bool ready() const { return m_time_ready; } - int difference() const { return m_time_difference; } static eDVBLocalTimeHandler *getInstance() { return instance; } };