import of enigma2
[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;
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         };
42         int flags;
43 };
44
45 class iDVBSectionReader: public virtual iObject
46 {
47 public:
48         virtual RESULT start(const eDVBSectionFilterMask &mask)=0;
49         virtual RESULT stop()=0;
50         virtual RESULT connectRead(const Slot1<void,const __u8*> &read, ePtr<eConnection> &conn)=0;
51 };
52
53 #endif