openATV enigma2
openATV is an open source SetTopBox Graphical user interface.
dvbtime.h
Go to the documentation of this file.
1 #ifndef __LIB_DVB_DVBTIME_H_
2 #define __LIB_DVB_DVBTIME_H_
3 
4 #ifndef SWIG
5 
6 #include <lib/base/eerror.h>
7 #include <lib/dvb/esection.h>
8 #include <lib/dvb/atsc.h>
9 #include <dvbsi++/time_date_section.h>
10 
11 class eDVBChannel;
12 
13 inline int fromBCD(int bcd)
14 {
15  if ((bcd&0xF0)>=0xA0)
16  return -1;
17  if ((bcd&0xF)>=0xA)
18  return -1;
19  return ((bcd&0xF0)>>4)*10+(bcd&0xF);
20 }
21 
22 inline int toBCD(int dec)
23 {
24  if (dec >= 100)
25  return -1;
26  return int(dec/10)*0x10 + dec%10;
27 }
28 
29 time_t parseDVBtime(uint16_t mjd, uint32_t stime_bcd);
30 time_t parseDVBtime(const uint8_t* data);
31 time_t parseDVBtime(const uint8_t* data, uint16_t *hash);
32 
33 class TimeTable : public eGTable
34 {
35 protected:
39  void ready(int);
41 public:
43  void startTable(eDVBTableSpec spec);
44  void startTimer(int interval);
45  int getUpdateCount() { return update_count; }
46  virtual void start() = 0;
47 };
48 
49 class TDT: public TimeTable
50 {
51  int createTable(unsigned int nr, const __u8 *data, unsigned int max);
52 public:
54  void start();
55 };
56 
57 class STT: public TimeTable
58 {
59  int createTable(unsigned int nr, const __u8 *data, unsigned int max);
60 public:
62  void start();
63 };
64 
65 #endif // SWIG
66 
67 class eDVBLocalTimeHandler: public sigc::trackable
68 {
69  DECLARE_REF(eDVBLocalTimeHandler);
70  struct channel_data
71  {
72  ePtr<TimeTable> timetable;
73  ePtr<eDVBChannel> channel;
74  ePtr<eConnection> m_stateChangedConn;
75  int m_prevChannelState;
76  };
77  bool m_use_dvb_time;
78  ePtr<eTimer> m_updateNonTunedTimer;
79  friend class TDT;
80  friend class STT;
81  friend class TimeTable;
82  std::map<iDVBChannel*, channel_data> m_knownChannels;
83  std::map<eDVBChannelID,int> m_timeOffsetMap;
84  ePtr<eConnection> m_chanAddedConn;
85  bool m_time_ready;
86  int m_time_difference;
87  int m_last_tp_time_difference;
88  void DVBChannelAdded(eDVBChannel*);
89  void DVBChannelStateChanged(iDVBChannel*);
90  void readTimeOffsetData(const char*);
91  void writeTimeOffsetData(const char*);
92  void updateTime(time_t tp_time, eDVBChannel*, int updateCount);
93  void updateNonTuned();
95 #ifdef SWIG
98 #endif
99 public:
100 #ifndef SWIG
103 #endif
104  bool getUseDVBTime() { return m_use_dvb_time; }
105  void setUseDVBTime(bool b);
106  void syncDVBTime();
108  time_t nowTime() const { return m_time_ready ? ::time(0)+m_time_difference : -1; }
109  bool ready() const { return m_time_ready; }
111 };
112 
113 #endif // __LIB_DVB_DVBTIME_H_
Definition: dvbtime.h:58
void start()
Definition: dvbtime.cpp:204
STT(eDVBChannel *chan, int update_count=0)
Definition: dvbtime.cpp:199
Definition: dvbtime.h:50
void start()
Definition: dvbtime.cpp:184
TDT(eDVBChannel *chan, int update_count=0)
Definition: dvbtime.cpp:162
Definition: dvbtime.h:34
virtual void start()=0
int getUpdateCount()
Definition: dvbtime.h:45
void startTable(eDVBTableSpec spec)
Definition: dvbtime.cpp:149
void startTimer(int interval)
Definition: dvbtime.cpp:157
ePtr< eTimer > m_interval_timer
Definition: dvbtime.h:38
TimeTable(eDVBChannel *chan, int update_count=0)
Definition: dvbtime.cpp:135
ePtr< iDVBDemux > demux
Definition: dvbtime.h:37
int update_count
Definition: dvbtime.h:40
eDVBChannel * chan
Definition: dvbtime.h:36
Definition: dvb.h:278
Definition: dvbtime.h:68
eDVBLocalTimeHandler()
Definition: dvbtime.cpp:221
void syncDVBTime()
Definition: dvbtime.cpp:337
void setUseDVBTime(bool b)
Definition: dvbtime.cpp:287
bool ready() const
Definition: dvbtime.h:109
~eDVBLocalTimeHandler()
Definition: dvbtime.cpp:238
static eDVBLocalTimeHandler * getInstance()
Definition: dvbtime.h:110
PSignal0< void > m_timeUpdated
Definition: dvbtime.h:107
time_t nowTime() const
Definition: dvbtime.h:108
bool getUseDVBTime()
Definition: dvbtime.h:104
Definition: esection.h:12
int ready
Definition: esection.h:36
Definition: idvb.h:637
time_t parseDVBtime(uint16_t mjd, uint32_t stime_bcd)
Definition: dvbtime.cpp:109
int fromBCD(int bcd)
Definition: dvbtime.h:13
int toBCD(int dec)
Definition: dvbtime.h:22
unsigned char data[256]
Definition: hdmi_cec.h:2
instance
Definition: NavigationInstance.py:2
#define max(a, b)
Definition: region.cpp:7
Definition: idvb.h:37