diff options
author | Dimitar Petrovski <dimeptr@gmail.com> | 2011-08-29 10:40:26 +0200 |
---|---|---|
committer | Dimitar Petrovski <dimeptr@gmail.com> | 2011-08-29 10:40:26 +0200 |
commit | 42656ea682424e78b6f07fa43e22dc3207386ece (patch) | |
tree | 02de15aa02d1bee8a63e957ecf178f60bd0547fa | |
parent | 17413902bd820c9971fb3e4227e45f2eb732cdbd (diff) | |
download | vdr-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.c | 32 | ||||
-rw-r--r-- | eepg.h | 35 |
2 files changed, 45 insertions, 22 deletions
@@ -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 @@ -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 { |