add support for private epg
[enigma2.git] / lib / dvb / isection.h
1 #ifndef __dvb_isection_h
2 #define __dvb_isection_h
3
4 #include <lib/dvb/idvb.h>
5
6 #ifndef DMX_FILTER_SIZE
7 #define DMX_FILTER_SIZE   16
8 #endif
9
10 struct eDVBSectionFilterMask
11 {
12         int pid;
13                 /* mode is 0 for positive, 1 for negative filtering */
14         __u8 data[DMX_FILTER_SIZE], mask[DMX_FILTER_SIZE], mode[DMX_FILTER_SIZE];
15         enum {
16                 rfCRC=1,
17                 rfNoAbort=2
18         };
19         int flags;
20 };
21
22 struct eDVBTableSpec
23 {
24         int pid, tid, tidext, tid_mask, tidext_mask;
25         int version;
26         int timeout;        /* timeout in ms */
27         enum
28         {
29                 tfInOrder=1,
30                 /*
31                         tfAnyVersion      filter ANY version
32                         0                 filter all EXCEPT given version (negative filtering)
33                         tfThisVersion     filter only THIS version
34                 */
35                 tfAnyVersion=2,
36                 tfThisVersion=4,
37                 tfHaveTID=8,
38                 tfHaveTIDExt=16,
39                 tfCheckCRC=32,
40                 tfHaveTimeout=64,
41                 tfHaveTIDMask=128,
42                 tfHaveTIDExtMask=256
43         };
44         int flags;
45 };
46
47 class iDVBSectionReader: public iObject
48 {
49 public:
50         virtual RESULT start(const eDVBSectionFilterMask &mask)=0;
51         virtual RESULT stop()=0;
52         virtual RESULT connectRead(const Slot1<void,const __u8*> &read, ePtr<eConnection> &conn)=0;
53         virtual ~iDVBSectionReader() { };
54 };
55
56 #endif