1 /*
2  * Simple MPEG/DVB parser to achieve network/service information without initial tuning data
3  *
4  * Copyright (C) 2006-2014 Winfried Koehler
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  * Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20  */
21 
22 /* this file is shared between w_scan2 and the VDR plugin wirbelscan.
23  * For details on the latter see http://wirbel.htpc-forum.de
24  */
25 
26 #ifndef _EXTENDED_DVBFRONTEND_H_
27 #define _EXTENDED_DVBFRONTEND_H_
28 
29 #include <linux/dvb/frontend.h>
30 #include <linux/dvb/version.h>
31 
32 #define DVB_API ( 10 * DVB_API_VERSION + DVB_API_VERSION_MINOR )
33 
34 /******************************************************************************
35  * definitions which are missing in <linux/dvb/frontend.h>
36  *
37  *****************************************************************************/
38 
39 #ifndef fe_polarization		// 300468 v181  6.2.13.2 Satellite delivery system descriptor
40 typedef enum fe_polarization {
41 	POLARIZATION_HORIZONTAL,
42 	POLARIZATION_VERTICAL,
43 	POLARIZATION_CIRCULAR_LEFT,
44 	POLARIZATION_CIRCULAR_RIGHT,
45 } fe_polarization_t;
46 #endif
47 
48 #ifndef fe_west_east_flag	// 300468 v181  6.2.13.2 Satellite delivery system descriptor
49 typedef enum fe_west_east_flag {
50 	EAST_FLAG,
51 	WEST_FLAG,
52 } fe_west_east_flag_t;
53 #endif
54 
55 #ifndef fe_interleave		// 300468 v181  6.2.13.4 Terrestrial delivery system descriptor
56 typedef enum fe_interleaver {
57 	INTERLEAVE_NATIVE,
58 	INTERLEAVE_IN_DEPTH,
59 	INTERLEAVE_AUTO,
60 } fe_interleave_t;
61 #endif
62 
63 #ifndef fe_alpha		// 300468 v181  6.2.13.4 Terrestrial delivery system descriptor
64 typedef enum fe_alpha {
65 	ALPHA_1,
66 	ALPHA_2,
67 	ALPHA_4,
68 	ALPHA_AUTO,
69 } fe_alpha_t;
70 #endif
71 
72 typedef enum fe_siso_miso {
73 	SISO,
74 	MISO,
75 	SISO_MISO_RESERVED1,
76 	SISO_MISO_RESERVED2,
77 } fe_siso_miso_t;
78 
79 #ifndef SYS_DVBC2		//// \BEGIN   FIX_ME: _REALLY_ DIRTY HACK. JUST FOR TESTING THIS CODE. REMOVE LATER!!!!!
80 #define SYS_DVBC2 (63U)		/* max value in use: 18U */
81 #ifndef QAM_512
82 #define QAM_512   (61U)		/* max value in use: 13U */
83 #endif
84 #ifndef QAM_1024
85 #define QAM_1024  (62U)		/* max value in use: 13U */
86 #endif
87 #ifndef QAM_4096
88 #define QAM_4096  (63U)		/* max value in use: 13U */
89 #endif
90 #ifndef GUARD_INTERVAL_1_64
91 #define GUARD_INTERVAL_1_64 (127U)	/* max value in use: 10U */
92 #endif
93 #endif //// \END     REMOVE UP TO HERE!!!
94 
95 #ifndef SYS_TURBO		// remove later.
96 #define SYS_TURBO (SYS_DVBT2 + 1)	/* correct in any case. */
97 #endif
98 
99 #ifndef DTV_ENUM_DELSYS		// remove later.
100 #define DTV_ENUM_DELSYS 44
101 #endif
102 
103 #if !defined DTV_STREAM_ID && defined DTV_DVBT2_PLP_ID
104 #define DTV_STREAM_ID DTV_DVBT2_PLP_ID
105 #endif
106 
107 typedef enum {
108 	DATA_SLICE_TUNING_FREQUENCY,
109 	C2_SYSTEM_CENTER_FREQUENCY,
110 	INITIAL_TUNING_FOR_STATIC_DATA_SLICE,
111 } fe_frequency_type_t;
112 
113 typedef enum {
114 	FFT_4K_8MHZ,
115 	FFT_4K_6MHZ,
116 } fe_ofdm_symbol_duration_t;
117 
118 /* don't use FE_OFDM, FE_QAM, FE_QPSK, FE_ATSC any longer.
119  *
120  * With evolving delivery systems, cable uses also ofdm (DVB-C2), satellites doesnt
121  * use only qpsk (DVB-S2), 2nd gen terrestrial and cable use physical layer pipes.
122  * Use of delivery_system doesnt fit for me either, since i dont want to distinguish
123  * between DVB-S <-> DVB-S2 or DVB-C <-> DVB-C2 or DVB-T <-> DVB-T2.
124  * Therefore, name it on physical path for now.
125  * 20120107 wirbel
126  */
127 typedef enum {
128 	SCAN_UNDEFINED,
129 	SCAN_SATELLITE,
130 	SCAN_CABLE,
131 	SCAN_TERRESTRIAL,
132 	SCAN_TERRCABLE_ATSC,	/* I dislike this mixture of terr and cable. fix later, as it leads to problems now. */
133 } scantype_t;
134 
135 #endif
136