removed thedoc's colors because of broken network setup
[enigma2.git] / lib / dvb_si / ait.h
1 /*
2  * $Id: ait.h,v 1.1 2003-10-17 15:36:38 tmbinc Exp $
3  *
4  * (C) 2002-2003 Andreas Oberritter <obi@saftware.de>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19  *
20  */
21
22 #ifndef __dvb_table_ait_h__
23 #define __dvb_table_ait_h__
24
25 #include <lib/dvb_si/container.h>
26 #include "long_crc_table.h"
27
28 class ApplicationIdentifier
29 {
30         protected:
31                 unsigned organisationId                         : 32;
32                 unsigned applicationId                          : 16;
33
34         public:
35                 ApplicationIdentifier(const uint8_t * const buffer);
36
37                 uint32_t getOrganisationId(void) const;
38                 uint16_t getApplicationId(void) const;
39 };
40
41 class ApplicationInformation : public DescriptorContainer
42 {
43         protected:
44                 ApplicationIdentifier *applicationIdentifier;
45                 unsigned applicationControlCode                 : 8;
46                 unsigned reserved                               : 4;
47                 unsigned applicationDescriptorsLoopLength       : 12;
48
49         public:
50                 ApplicationInformation(const uint8_t * const buffer);
51                 ~ApplicationInformation(void);
52
53                 const ApplicationIdentifier *getApplicationIdentifier(void) const;
54                 uint8_t getApplicationControlCode(void) const;
55
56         friend class ApplicationInformationTable;
57 };
58
59 typedef std::vector<ApplicationInformation *> ApplicationInformationVector;
60 typedef ApplicationInformationVector::iterator ApplicationInformationIterator;
61 typedef ApplicationInformationVector::const_iterator ApplicationInformationConstIterator;
62
63 class ApplicationInformationTable : public LongCrcTable, public DescriptorContainer
64 {
65         protected:
66                 unsigned reserved4                              : 4;
67                 unsigned commonDescriptorsLength                : 12;
68                 unsigned reserved5                              : 4;
69                 unsigned applicationLoopLength                  : 12;
70                 ApplicationInformationVector applicationInformation;
71
72         public:
73                 ApplicationInformationTable(const uint8_t * const buffer);
74                 ~ApplicationInformationTable(void);
75
76                 static const enum TableId TID = TID_AIT;
77                 static const uint32_t TIMEOUT = 12000;
78
79                 const ApplicationInformationVector *getApplicationInformation(void) const;
80 };
81
82 typedef std::vector<ApplicationInformationTable *> ApplicationInformationTableVector;
83 typedef ApplicationInformationTableVector::iterator ApplicationInformationTableIterator;
84 typedef ApplicationInformationTableVector::const_iterator ApplicationInformationTableConstIterator;
85
86 #endif /* __dvb_table_ait_h__ */