summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitar Petrovski <dimeptr@gmail.com>2011-08-29 10:40:26 +0200
committerDimitar Petrovski <dimeptr@gmail.com>2011-08-29 10:40:26 +0200
commit42656ea682424e78b6f07fa43e22dc3207386ece (patch)
tree02de15aa02d1bee8a63e957ecf178f60bd0547fa
parent17413902bd820c9971fb3e4227e45f2eb732cdbd (diff)
downloadvdr-plugin-eepg-42656ea682424e78b6f07fa43e22dc3207386ece.tar.gz
vdr-plugin-eepg-42656ea682424e78b6f07fa43e22dc3207386ece.tar.bz2
add dish bev format and make sure it is always on for test
-rw-r--r--eepg.c32
-rw-r--r--eepg.h35
2 files changed, 45 insertions, 22 deletions
diff --git a/eepg.c b/eepg.c
index 1aa3044..d2278b4 100644
--- a/eepg.c
+++ b/eepg.c
@@ -3346,7 +3346,11 @@ void cFilterEEPG::ProcessNextFormat (bool FirstTime = false)
if (UnprocessedFormat[i]) {
isyslog ("EEPG: %s Extended EPG detected on pid %x.", FormatName[i], UnprocessedFormat[i]);
Format = i;
- } //highest format is processed first this way;; TODO make sure that CONT protocols like Premiere, Freesat are processed AFTER ONCE protocols like MHW, SKY and NAGRA
+ // highest format is processed first this way
+ // make sure that CONT protocols like Premiere, Freesat are processed
+ // AFTER ONCE protocols like MHW, SKY and NAGRA
+ break;
+ }
if (Format == -1) { //there are no formats left to process
isyslog ("EEPG: Ended all processing");
@@ -3387,16 +3391,15 @@ void cFilterEEPG::ProcessNextFormat (bool FirstTime = false)
AddFilter (pid, 0x60, 0xf0); //event info, other TS, schedule(0x60)/schedule for future days(0x6X)
AddFilter (0x39, 0x50, 0xf0); //event info, actual TS, Viasat
AddFilter (0x39, 0x60, 0xf0); //event info, other TS, Viasat
-
+ break;
+ case NAGRA:
+ AddFilter (pid, 0xb0); //perhaps TID is equal to first data byte?
+ break;
+ case DISH_BEV:
AddFilter (0x0300, 0x50, 0xf0); // Dish Network EEPG
AddFilter (0x0300, 0x60, 0xf0); // Dish Network EEPG
AddFilter (0x0441, 0x50, 0xf0); // Bell ExpressVU EEPG
AddFilter (0x0441, 0x60, 0xf0); // Bell ExpressVU EEPG
-
- break;
- case NAGRA:
- // isyslog ("EEPG: NagraGuide Extended EPG detected.");
- AddFilter (pid, 0xb0); //perhaps TID is equal to first data byte?
break;
default:
break;
@@ -3407,7 +3410,8 @@ void cFilterEEPG::Process (u_short Pid, u_char Tid, const u_char * Data, int Len
{
int now = time (0);
LogD(2, prep("Pid: 0x%02x Tid: %d Length: %d PMT pid: 0x%04x"), Pid, Tid, Length, pmtpid);
- LogD(2, prep("Source: %d Transponder: %d"), Source () , Transponder ());
+// LogD(2, prep("Source: %d Transponder: %d"), Source () , Transponder ());
+
if (Pid == 0 && Tid == SI::TableIdPAT) {
if (!pmtnext || now > pmtnext) {
if (pmtpid)
@@ -3449,7 +3453,9 @@ void cFilterEEPG::Process (u_short Pid, u_char Tid, const u_char * Data, int Len
SI::PMT::Stream stream;
for (SI::Loop::Iterator it; pmt.streamLoop.getNext (stream, it);) {
LogD(2, prep("StreamType: 0x%02x"), stream.getStreamType ());
- if (stream.getStreamType () == 0x05 || stream.getStreamType () == 0xc1) { //0x05 = Premiere, SKY, Freeview, Nagra 0xc1 = MHW1,MHW2
+ if (stream.getStreamType () == 0x05 || stream.getStreamType () == 0xc1
+ /*|| stream.getStreamType () == 0x04 || stream.getStreamType () == 0x02
+ || stream.getStreamType () == 0xd1*/) { //0x05 = Premiere, SKY, Freeview, Nagra 0xc1 = MHW1,MHW2; 0x04 DISH BEV ?
SI::CharArray data = stream.getData ();
if ((data[1] & 0xE0) == 0xE0 && (data[3] & 0xF0) == 0xF0) {
bool prvData = false, usrData = false;
@@ -3531,8 +3537,12 @@ void cFilterEEPG::Process (u_short Pid, u_char Tid, const u_char * Data, int Len
UnprocessedFormat[FREEVIEW] = stream.getPid ();
if (prvData && usrData)
UnprocessedFormat[PREMIERE] = stream.getPid ();
- } //if data[1] && data [3]
- } //if streamtype
+ //TODO DPE this is not good since the DISH/BEV filters are always on, but have to test somehow.
+ if (!UnprocessedFormat[DISH_BEV]) {
+ UnprocessedFormat[DISH_BEV] = stream.getPid ();
+ }
+ } //if data[1] && data [3]
+ } //if streamtype
/*if (Format != PREMIERE) //any format found
break; //break out for loop */
} //for loop that walks through streams
diff --git a/eepg.h b/eepg.h
index 0cda8cc..77577f8 100644
--- a/eepg.h
+++ b/eepg.h
@@ -10,21 +10,34 @@
#define MAX_EQUIVALENCES 8 //the number of equivalences one channel can have
//Formats (need to be consecutively numbered):
-//First all CONTinuous protocols, so they will be processed LAST:
-#define PREMIERE 0
-#define FREEVIEW 1
-//Then all batchmode, load ONCE protocols:
-#define MHW1 2
-#define MHW2 3
-#define SKY_IT 4
-#define SKY_UK 5
-#define NAGRA 6
-#define HIGHEST_FORMAT 6 //the highest number of EPG-formats that is supported by this plugin
+//#define PREMIERE 0
+//#define FREEVIEW 1
+//#define MHW1 2
+//#define MHW2 3
+//#define SKY_IT 4
+//#define SKY_UK 5
+//#define NAGRA 6
+//#define HIGHEST_FORMAT 6
+
+enum EFormat {
+//First all batchmode, load ONCE protocols:
+ MHW1 = 0,
+ MHW2 ,
+ SKY_IT ,
+ SKY_UK ,
+ NAGRA ,
+//Than all CONTinuous protocols, so they will be processed LAST:
+ PREMIERE ,
+ FREEVIEW ,
+ DISH_BEV ,
+//the highest number of EPG-formats that is supported by this plugin
+ HIGHEST_FORMAT = DISH_BEV
+} Format;
#define NAGRA_TABLE_ID 0x55 //the lower the table Id, the more "current" it is; table_id 0x00 never gets overwritten, now/next are at 0x4e or 0x4f!
#define DEFAULT_TABLE_ID 0x30
-const char *FormatName[]= {"Premiere","FreeView","MediaHighWay 1","MediaHighWay 2","Sky Italy","Sky UK","NagraGuide"};
+const char *FormatName[]= {"Premiere","FreeView","MediaHighWay 1","MediaHighWay 2","Sky Italy","Sky UK","NagraGuide","Dish/Bev"};
struct sNode
{