summaryrefslogtreecommitdiff
path: root/eit.h
diff options
context:
space:
mode:
Diffstat (limited to 'eit.h')
-rw-r--r--eit.h173
1 files changed, 110 insertions, 63 deletions
diff --git a/eit.h b/eit.h
index 28329f42..fec498ba 100644
--- a/eit.h
+++ b/eit.h
@@ -13,80 +13,127 @@
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
- * $Id: eit.h 1.1 2000/09/03 10:23:24 kls Exp $
+ * $Id: eit.h 1.2 2000/10/29 10:21:56 kls Exp $
***************************************************************************/
#ifndef __EIT_H
#define __EIT_H
-#include <dvb_v4l.h>
+#include "thread.h"
+#include "tools.h"
-typedef struct eit_event {
+class cEventInfo : public cListObject {
+ friend class cSchedule;
+ friend class cEIT;
+private:
+ unsigned short uServiceID; // Service ID of program for that event
+ bool bIsFollowing; // true if this is the next event on this channel
+ bool bIsPresent; // true if this is the present event running
+ char *pExtendedDescription; // Extended description of this event
+ char *pSubtitle; // Subtitle of event
+ char *pTitle; // Title of event
+ unsigned short uEventID; // Event ID of this event
+ long lDuration; // duration of event in seconds
+ time_t tTime; // Start time
+ u_char cExtendedDescriptorNumber; // current extended descriptor number that has to be inserted
+ int nChannelNumber; // the actual channel number from VDR's channel list (used in cMenuSchedule for sorting by channel number)
+protected:
+ void SetFollowing(bool foll);
+ void SetPresent(bool pres);
+ bool SetTitle(char *string);
+ void SetServiceID(unsigned short servid);
+ void SetEventID(unsigned short evid);
+ void SetDuration(long l);
+ void SetTime(time_t t);
+ bool AddExtendedDescription(char *string);
+ bool SetSubtitle(char *string);
+ void IncreaseExtendedDescriptorNumber(void);
+ cEventInfo(unsigned short serviceid, unsigned short eventid);
+public:
+ ~cEventInfo();
+ const char *GetTimeString(void) const;
+ const char *GetEndTimeString(void) const;
+ const char *GetDate(void) const;
+ bool IsFollowing(void) const;
+ bool IsPresent(void) const;
+ const char *GetExtendedDescription(void) const;
+ const char *GetSubtitle(void) const;
+ const char *GetTitle(void) const;
+ unsigned short GetEventID(void) const;
+ long GetDuration(void) const;
+ time_t GetTime(void) const;
+ u_char GetExtendedDescriptorNumber(void) const;
+ unsigned short GetServiceID(void) const;
+ int GetChannelNumber(void) const { return nChannelNumber; }
+ void SetChannelNumber(int ChannelNumber) const { ((cEventInfo *)this)->nChannelNumber = ChannelNumber; } // doesn't modify the EIT data, so it's ok to make it 'const'
+ };
+
+class cSchedule : public cListObject {
+ friend class cSchedules;
+ friend class cEIT;
+private:
+ cEventInfo *pPresent;
+ cEventInfo *pFollowing;
+ unsigned short uServiceID;
+ cList<cEventInfo> Events;
+protected:
+ void SetServiceID(unsigned short servid);
+ bool SetFollowingEvent(cEventInfo *pEvent);
+ bool SetPresentEvent(cEventInfo *pEvent);
+ void Cleanup(time_t tTime);
+ void Cleanup(void);
+ cSchedule(unsigned short servid = 0);
+public:
+ ~cSchedule();
+ const cEventInfo *GetPresentEvent(void) const;
+ const cEventInfo *GetFollowingEvent(void) const;
+ unsigned short GetServiceID(void) const;
+ const cEventInfo *GetEvent(unsigned short uEventID) const;
+ const cEventInfo *GetEvent(time_t tTime) const;
+ const cEventInfo *GetEventNumber(int n) const { return Events.Get(n); }
+ int NumEvents(void) const { return Events.Count(); }
+ };
- bool bIsValid;
- char szTitle[512];
- char szSubTitle[512];
- char szDate[12];
- char szTime[12];
+class cSchedules : public cList<cSchedule> {
+ friend class cSIProcessor;
+private:
+ const cSchedule *pCurrentSchedule;
+ unsigned short uCurrentServiceID;
+protected:
+ bool SetCurrentServiceID(unsigned short servid);
+ void Cleanup();
+public:
+ cSchedules(void);
+ ~cSchedules();
+ const cSchedule *GetSchedule(unsigned short servid) const;
+ const cSchedule *GetSchedule(void) const;
+};
-}eit_event;
+typedef struct sip_filter {
-/**
- *@author Robert Schneider
- */
+ u_char pid;
+ u_char tid;
+ int handle;
+ bool inuse;
-class cEIT {
-public:
- cEIT();
- ~cEIT();
- /** */
- int GetEIT();
- /** */
- int SetProgramNumber(unsigned short pnr);
- /** Retrieves the string representing the time of the current event */
- char * GetRunningTime();
- /** Retrieves the string representing the date of the current event */
- char * GetRunningDate();
- /** Retrieves the string for the running subtitle */
- char * GetRunningSubtitle();
- /** retrieves the string for the running title */
- char * GetRunningTitle();
- /** Retrieves the string representing the time of the next event */
- char * GetNextTime();
- /** Retrieves the string representing the date of the next event */
- char * GetNextDate();
- /** Retrieves the string for the next subtitle */
- char * GetNextSubtitle();
- /** retrieves the string for the next title */
- char * GetNextTitle();
- /** */
- bool IsValid();
+}SIP_FILTER;
-protected: // Protected attributes
- /** Device name of VBI device */
- const char * cszBitFilter;
-protected: // Protected attributes
- /** handle to VBI device (usually /dev/vbi) */
+class cSIProcessor : public cThread {
+private:
+ cSchedules *schedules;
+ bool useTStime;
+ SIP_FILTER *filters;
int fsvbi;
- /** Describes the event next on */
- eit_event evtNext;
- /** Describes the running event */
- eit_event evtRunning;
-protected: // Protected methods
- /** Set the bitfilter in vbi device to return
-correct tables */
- int SetBitFilter(unsigned short pid, unsigned short section, unsigned short mode);
- /** */
- int GetSection(unsigned char *buf, ushort PID, unsigned char sec);
- /** */
- int CloseFilter(unsigned short handle);
- /** */
- char * mjd2string(unsigned short mjd);
- /** */
- int strdvbcpy(unsigned char *dst, unsigned char *src, int max);
-public: // Public attributes
- /** */
- unsigned short uProgramNumber;
-};
+ bool RefreshFilters(void);
+ void Action(void);
+public:
+ cSIProcessor(const char *FileName);
+ ~cSIProcessor();
+ bool SetUseTSTime(bool use);
+ bool AddFilter(u_char pid, u_char tid);
+ bool ShutDownFilters(void);
+ bool SetCurrentServiceID(unsigned short servid);
+ const cSchedules *Schedules(void) { return schedules; }
+ };
#endif