1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
/*
* service.h: EPG2VDR plugin for the Video Disk Recorder
*
* See the README file for copyright information and how to reach the author.
*
*/
#ifndef _SERVICE_H_
#define _SERVICE_H_
#include <vdr/timers.h>
#include <vdr/epg.h>
#include <list>
#include <map>
//***************************************************************************
// Event - Skin Interface
//***************************************************************************
class cEpgEvent_Interface_V1 : public cEvent
{
public:
cEpgEvent_Interface_V1(tEventID EventID) : cEvent(EventID) {}
const char* getValue(const char* name) { return epg2vdrData[name].c_str(); }
const std::map<std::string,std::string>* getValues() const { return &epg2vdrData; }
protected:
std::map<std::string,std::string> epg2vdrData;
};
//***************************************************************************
// Timer - Skin Interface
//***************************************************************************
class cEpgTimer_Interface_V1 : public cTimer
{
public:
cEpgTimer_Interface_V1(bool Instant = false, bool Pause = false, const cChannel* Channel = 0)
#if defined (APIVERSNUM) && (APIVERSNUM >= 20301)
: cTimer(Instant, Pause, Channel) {}
#else
: cTimer(Instant, Pause, (cChannel*)Channel) {}
#endif
long TimerId() const { return timerid; }
long EventId() const { return eventid; }
const char* VdrName() const { return vdrName ? vdrName : ""; }
const char* VdrUuid() const { return vdrUuid ? vdrUuid : ""; }
int isVdrRunning() const { return vdrRunning; }
int isLocal() const { return local; }
int isRemote() const { return !isLocal(); }
char State() const { return state; }
int hasState(char s) const { return state == s; }
const char* StateInfo() const { return stateInfo ? stateInfo : ""; }
char Action() const { return action; }
protected:
long timerid;
long eventid;
char* vdrName;
char* vdrUuid;
int local;
int vdrRunning;
char state;
char* stateInfo;
char action;
};
//***************************************************************************
// Timer Service Interfaces
//***************************************************************************
struct cEpgTimer_Service_V1
{
std::list<cEpgTimer_Interface_V1*> epgTimers;
};
#define EPG2VDR_TIMER_UPDATED "Epg2Vdr_Timer_Updated-v1.0"
#define EPG2VDR_TIMER_SERVICE "Epg2Vdr_Timer_Service-v1.0"
//***************************************************************************
// Event Service Interfaces
//***************************************************************************
struct cEpgEvent_Service_V1
{
const cEvent* in;
cEpgEvent_Interface_V1* out;
};
#define EPG2VDR_EVENT_SERVICE "Epg2Vdr_Event_Service-v1.0"
#ifdef EPG2VDR
//***************************************************************************
//***************************************************************************
//***************************************************************************
// Internal Stuff
//***************************************************************************
//***************************************************************************
// Class cEpgEvent
//***************************************************************************
class cEpgEvent : public cEpgEvent_Interface_V1
{
public:
cEpgEvent(tEventID EventID);
virtual ~cEpgEvent() {}
bool Read(FILE *f);
void setValue(const char* name, const char* value) { epg2vdrData[name] = value; }
void setValue(const char* name, long value) { epg2vdrData[name] = std::to_string(value); }
};
//***************************************************************************
// Class cEpgTimer
//***************************************************************************
class cEpgTimer : public cEpgTimer_Interface_V1
{
public:
cEpgTimer(bool Instant = false, bool Pause = false, const cChannel* Channel = 0);
virtual ~cEpgTimer();
void setTimerId(long id) { timerid = id; }
void setEventId(long id) { eventid = id; }
void setState(char s, const char* info);
void setAction(char a);
void setVdr(const char* name, const char* uuid = 0, int running = 0);
};
#endif // EPG2VDR
//***************************************************************************
#endif // _SERVICE_H_
|