21 #define VALID_TIME (31536000 * 2) // two years
36 time_t Now = time(NULL);
53 bool Modified =
false;
54 time_t SegmentStart = 0;
55 time_t SegmentEnd = 0;
57 struct tm t = *localtime_r(&Now, &tm_r);
66 if (StartTime == 0 || StartTime > 0 && Duration == 0)
70 SegmentStart = StartTime;
71 SegmentEnd = StartTime + Duration;
75 if (!pEvent || handledExternally) {
76 if (OnlyRunningStatus)
85 if (!handledExternally)
114 if (OnlyRunningStatus) {
120 int LanguagePreferenceShort = -1;
121 int LanguagePreferenceExt = -1;
122 bool UseExtendedEventDescriptor =
false;
133 delete ExtendedEventDescriptors;
135 UseExtendedEventDescriptor =
true;
137 if (UseExtendedEventDescriptor) {
138 ExtendedEventDescriptors->
Add(eed);
142 UseExtendedEventDescriptor =
false;
148 delete ShortEventDescriptor;
149 ShortEventDescriptor = sed;
169 int LanguagePreferenceRating = -1;
174 int ParentalRating = (Rating.
getRating() & 0xFF);
175 switch (ParentalRating) {
177 case 0x01 ... 0x0F: ParentalRating += 3;
break;
179 case 0x11: ParentalRating = 10;
break;
180 case 0x12: ParentalRating = 12;
break;
181 case 0x13: ParentalRating = 16;
break;
182 default: ParentalRating = 0;
192 int month = t.tm_mon;
198 if (month == 11 && t.tm_mon == 0)
200 else if (month == 0 && t.tm_mon == 11)
202 time_t vps = mktime(&t);
223 bool hit = StartTime <= Now && Now < StartTime + Duration;
229 if (link != channel) {
233 link->
SetName(linkName,
"",
"");
258 if (1 <= Stream && Stream <= 6 && Type != 0) {
272 if (ShortEventDescriptor) {
281 if (ExtendedEventDescriptors) {
288 delete ExtendedEventDescriptors;
289 delete ShortEventDescriptor;
298 if (handledExternally)
307 if (Modified && !OnlyRunningStatus) {
317 #define MAX_TIME_DIFF 1 // number of seconds the local time may differ from dvb time before making any corrections
318 #define MAX_ADJ_DIFF 10 // number of seconds the local time may differ from dvb time to allow smooth adjustment
319 #define ADJ_DELTA 300 // number of seconds between calls for smooth time adjustment
333 :
SI::TDT(Data, false)
338 time_t loctim = time(NULL);
340 int diff = dvbtim - loctim;
344 if (stime(&dvbtim) == 0)
347 esyslog(
"ERROR while setting system time: %m");
354 if (adjtime(&delta, NULL) == 0)
357 esyslog(
"ERROR while adjusting system time: %m");
369 Set(0x12, 0x40, 0xC0);
388 if (Tid >= 0x4E && Tid <= 0x6F) {
401 cEIT EIT(Schedules,
Source(), Tid, Data,
true);