1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#ifndef _DVBFRONTEND_H_
27#define _DVBFRONTEND_H_
28
29#include <linux/types.h>
30
31enum fe_type {
32 FE_QPSK,
33 FE_QAM,
34 FE_OFDM,
35 FE_ATSC
36};
37
38enum fe_caps {
39 FE_IS_STUPID = 0,
40 FE_CAN_INVERSION_AUTO = 0x1,
41 FE_CAN_FEC_1_2 = 0x2,
42 FE_CAN_FEC_2_3 = 0x4,
43 FE_CAN_FEC_3_4 = 0x8,
44 FE_CAN_FEC_4_5 = 0x10,
45 FE_CAN_FEC_5_6 = 0x20,
46 FE_CAN_FEC_6_7 = 0x40,
47 FE_CAN_FEC_7_8 = 0x80,
48 FE_CAN_FEC_8_9 = 0x100,
49 FE_CAN_FEC_AUTO = 0x200,
50 FE_CAN_QPSK = 0x400,
51 FE_CAN_QAM_16 = 0x800,
52 FE_CAN_QAM_32 = 0x1000,
53 FE_CAN_QAM_64 = 0x2000,
54 FE_CAN_QAM_128 = 0x4000,
55 FE_CAN_QAM_256 = 0x8000,
56 FE_CAN_QAM_AUTO = 0x10000,
57 FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000,
58 FE_CAN_BANDWIDTH_AUTO = 0x40000,
59 FE_CAN_GUARD_INTERVAL_AUTO = 0x80000,
60 FE_CAN_HIERARCHY_AUTO = 0x100000,
61 FE_CAN_8VSB = 0x200000,
62 FE_CAN_16VSB = 0x400000,
63 FE_HAS_EXTENDED_CAPS = 0x800000,
64 FE_CAN_MULTISTREAM = 0x4000000,
65 FE_CAN_TURBO_FEC = 0x8000000,
66 FE_CAN_2G_MODULATION = 0x10000000,
67 FE_NEEDS_BENDING = 0x20000000,
68 FE_CAN_RECOVER = 0x40000000,
69 FE_CAN_MUTE_TS = 0x80000000
70};
71
72struct dvb_frontend_info {
73 char name[128];
74 enum fe_type type;
75 __u32 frequency_min;
76 __u32 frequency_max;
77 __u32 frequency_stepsize;
78 __u32 frequency_tolerance;
79 __u32 symbol_rate_min;
80 __u32 symbol_rate_max;
81 __u32 symbol_rate_tolerance;
82 __u32 notifier_delay;
83 enum fe_caps caps;
84};
85
86
87
88
89
90
91struct dvb_diseqc_master_cmd {
92 __u8 msg [6];
93 __u8 msg_len;
94};
95
96struct dvb_diseqc_slave_reply {
97 __u8 msg [4];
98 __u8 msg_len;
99 int timeout;
100};
101
102enum fe_sec_voltage {
103 SEC_VOLTAGE_13,
104 SEC_VOLTAGE_18,
105 SEC_VOLTAGE_OFF
106};
107
108enum fe_sec_tone_mode {
109 SEC_TONE_ON,
110 SEC_TONE_OFF
111};
112
113enum fe_sec_mini_cmd {
114 SEC_MINI_A,
115 SEC_MINI_B
116};
117
118
119
120
121
122
123
124
125
126
127
128
129enum fe_status {
130 FE_HAS_SIGNAL = 0x01,
131 FE_HAS_CARRIER = 0x02,
132 FE_HAS_VITERBI = 0x04,
133 FE_HAS_SYNC = 0x08,
134 FE_HAS_LOCK = 0x10,
135 FE_TIMEDOUT = 0x20,
136 FE_REINIT = 0x40,
137};
138
139enum fe_spectral_inversion {
140 INVERSION_OFF,
141 INVERSION_ON,
142 INVERSION_AUTO
143};
144
145enum fe_code_rate {
146 FEC_NONE = 0,
147 FEC_1_2,
148 FEC_2_3,
149 FEC_3_4,
150 FEC_4_5,
151 FEC_5_6,
152 FEC_6_7,
153 FEC_7_8,
154 FEC_8_9,
155 FEC_AUTO,
156 FEC_3_5,
157 FEC_9_10,
158 FEC_2_5,
159};
160
161enum fe_modulation {
162 QPSK,
163 QAM_16,
164 QAM_32,
165 QAM_64,
166 QAM_128,
167 QAM_256,
168 QAM_AUTO,
169 VSB_8,
170 VSB_16,
171 PSK_8,
172 APSK_16,
173 APSK_32,
174 DQPSK,
175 QAM_4_NR,
176};
177
178enum fe_transmit_mode {
179 TRANSMISSION_MODE_2K,
180 TRANSMISSION_MODE_8K,
181 TRANSMISSION_MODE_AUTO,
182 TRANSMISSION_MODE_4K,
183 TRANSMISSION_MODE_1K,
184 TRANSMISSION_MODE_16K,
185 TRANSMISSION_MODE_32K,
186 TRANSMISSION_MODE_C1,
187 TRANSMISSION_MODE_C3780,
188};
189
190enum fe_guard_interval {
191 GUARD_INTERVAL_1_32,
192 GUARD_INTERVAL_1_16,
193 GUARD_INTERVAL_1_8,
194 GUARD_INTERVAL_1_4,
195 GUARD_INTERVAL_AUTO,
196 GUARD_INTERVAL_1_128,
197 GUARD_INTERVAL_19_128,
198 GUARD_INTERVAL_19_256,
199 GUARD_INTERVAL_PN420,
200 GUARD_INTERVAL_PN595,
201 GUARD_INTERVAL_PN945,
202};
203
204enum fe_hierarchy {
205 HIERARCHY_NONE,
206 HIERARCHY_1,
207 HIERARCHY_2,
208 HIERARCHY_4,
209 HIERARCHY_AUTO
210};
211
212enum fe_interleaving {
213 INTERLEAVING_NONE,
214 INTERLEAVING_AUTO,
215 INTERLEAVING_240,
216 INTERLEAVING_720,
217};
218
219
220#define DTV_UNDEFINED 0
221#define DTV_TUNE 1
222#define DTV_CLEAR 2
223#define DTV_FREQUENCY 3
224#define DTV_MODULATION 4
225#define DTV_BANDWIDTH_HZ 5
226#define DTV_INVERSION 6
227#define DTV_DISEQC_MASTER 7
228#define DTV_SYMBOL_RATE 8
229#define DTV_INNER_FEC 9
230#define DTV_VOLTAGE 10
231#define DTV_TONE 11
232#define DTV_PILOT 12
233#define DTV_ROLLOFF 13
234#define DTV_DISEQC_SLAVE_REPLY 14
235
236
237#define DTV_FE_CAPABILITY_COUNT 15
238#define DTV_FE_CAPABILITY 16
239#define DTV_DELIVERY_SYSTEM 17
240
241
242#define DTV_ISDBT_PARTIAL_RECEPTION 18
243#define DTV_ISDBT_SOUND_BROADCASTING 19
244
245#define DTV_ISDBT_SB_SUBCHANNEL_ID 20
246#define DTV_ISDBT_SB_SEGMENT_IDX 21
247#define DTV_ISDBT_SB_SEGMENT_COUNT 22
248
249#define DTV_ISDBT_LAYERA_FEC 23
250#define DTV_ISDBT_LAYERA_MODULATION 24
251#define DTV_ISDBT_LAYERA_SEGMENT_COUNT 25
252#define DTV_ISDBT_LAYERA_TIME_INTERLEAVING 26
253
254#define DTV_ISDBT_LAYERB_FEC 27
255#define DTV_ISDBT_LAYERB_MODULATION 28
256#define DTV_ISDBT_LAYERB_SEGMENT_COUNT 29
257#define DTV_ISDBT_LAYERB_TIME_INTERLEAVING 30
258
259#define DTV_ISDBT_LAYERC_FEC 31
260#define DTV_ISDBT_LAYERC_MODULATION 32
261#define DTV_ISDBT_LAYERC_SEGMENT_COUNT 33
262#define DTV_ISDBT_LAYERC_TIME_INTERLEAVING 34
263
264#define DTV_API_VERSION 35
265
266#define DTV_CODE_RATE_HP 36
267#define DTV_CODE_RATE_LP 37
268#define DTV_GUARD_INTERVAL 38
269#define DTV_TRANSMISSION_MODE 39
270#define DTV_HIERARCHY 40
271
272#define DTV_ISDBT_LAYER_ENABLED 41
273
274#define DTV_STREAM_ID 42
275#define DTV_ISDBS_TS_ID_LEGACY DTV_STREAM_ID
276#define DTV_DVBT2_PLP_ID_LEGACY 43
277
278#define DTV_ENUM_DELSYS 44
279
280
281#define DTV_ATSCMH_FIC_VER 45
282#define DTV_ATSCMH_PARADE_ID 46
283#define DTV_ATSCMH_NOG 47
284#define DTV_ATSCMH_TNOG 48
285#define DTV_ATSCMH_SGN 49
286#define DTV_ATSCMH_PRC 50
287#define DTV_ATSCMH_RS_FRAME_MODE 51
288#define DTV_ATSCMH_RS_FRAME_ENSEMBLE 52
289#define DTV_ATSCMH_RS_CODE_MODE_PRI 53
290#define DTV_ATSCMH_RS_CODE_MODE_SEC 54
291#define DTV_ATSCMH_SCCC_BLOCK_MODE 55
292#define DTV_ATSCMH_SCCC_CODE_MODE_A 56
293#define DTV_ATSCMH_SCCC_CODE_MODE_B 57
294#define DTV_ATSCMH_SCCC_CODE_MODE_C 58
295#define DTV_ATSCMH_SCCC_CODE_MODE_D 59
296
297#define DTV_INTERLEAVING 60
298#define DTV_LNA 61
299
300
301#define DTV_STAT_SIGNAL_STRENGTH 62
302#define DTV_STAT_CNR 63
303#define DTV_STAT_PRE_ERROR_BIT_COUNT 64
304#define DTV_STAT_PRE_TOTAL_BIT_COUNT 65
305#define DTV_STAT_POST_ERROR_BIT_COUNT 66
306#define DTV_STAT_POST_TOTAL_BIT_COUNT 67
307#define DTV_STAT_ERROR_BLOCK_COUNT 68
308#define DTV_STAT_TOTAL_BLOCK_COUNT 69
309
310#define DTV_MAX_COMMAND DTV_STAT_TOTAL_BLOCK_COUNT
311
312enum fe_pilot {
313 PILOT_ON,
314 PILOT_OFF,
315 PILOT_AUTO,
316};
317
318enum fe_rolloff {
319 ROLLOFF_35,
320 ROLLOFF_20,
321 ROLLOFF_25,
322 ROLLOFF_AUTO,
323};
324
325enum fe_delivery_system {
326 SYS_UNDEFINED,
327 SYS_DVBC_ANNEX_A,
328 SYS_DVBC_ANNEX_B,
329 SYS_DVBT,
330 SYS_DSS,
331 SYS_DVBS,
332 SYS_DVBS2,
333 SYS_DVBH,
334 SYS_ISDBT,
335 SYS_ISDBS,
336 SYS_ISDBC,
337 SYS_ATSC,
338 SYS_ATSCMH,
339 SYS_DTMB,
340 SYS_CMMB,
341 SYS_DAB,
342 SYS_DVBT2,
343 SYS_TURBO,
344 SYS_DVBC_ANNEX_C,
345};
346
347
348#define SYS_DVBC_ANNEX_AC SYS_DVBC_ANNEX_A
349#define SYS_DMBTH SYS_DTMB
350
351
352
353enum atscmh_sccc_block_mode {
354 ATSCMH_SCCC_BLK_SEP = 0,
355 ATSCMH_SCCC_BLK_COMB = 1,
356 ATSCMH_SCCC_BLK_RES = 2,
357};
358
359enum atscmh_sccc_code_mode {
360 ATSCMH_SCCC_CODE_HLF = 0,
361 ATSCMH_SCCC_CODE_QTR = 1,
362 ATSCMH_SCCC_CODE_RES = 2,
363};
364
365enum atscmh_rs_frame_ensemble {
366 ATSCMH_RSFRAME_ENS_PRI = 0,
367 ATSCMH_RSFRAME_ENS_SEC = 1,
368};
369
370enum atscmh_rs_frame_mode {
371 ATSCMH_RSFRAME_PRI_ONLY = 0,
372 ATSCMH_RSFRAME_PRI_SEC = 1,
373 ATSCMH_RSFRAME_RES = 2,
374};
375
376enum atscmh_rs_code_mode {
377 ATSCMH_RSCODE_211_187 = 0,
378 ATSCMH_RSCODE_223_187 = 1,
379 ATSCMH_RSCODE_235_187 = 2,
380 ATSCMH_RSCODE_RES = 3,
381};
382
383#define NO_STREAM_ID_FILTER (~0U)
384#define LNA_AUTO (~0U)
385
386struct dtv_cmds_h {
387 char *name;
388
389 __u32 cmd;
390
391
392 __u32 set:1;
393 __u32 buffer:1;
394 __u32 reserved:30;
395};
396
397
398
399
400
401
402
403
404
405
406
407
408
409enum fecap_scale_params {
410 FE_SCALE_NOT_AVAILABLE = 0,
411 FE_SCALE_DECIBEL,
412 FE_SCALE_RELATIVE,
413 FE_SCALE_COUNTER
414};
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447struct dtv_stats {
448 __u8 scale;
449 union {
450 __u64 uvalue;
451 __s64 svalue;
452 };
453} __attribute__ ((packed));
454
455
456#define MAX_DTV_STATS 4
457
458struct dtv_fe_stats {
459 __u8 len;
460 struct dtv_stats stat[MAX_DTV_STATS];
461} __attribute__ ((packed));
462
463struct dtv_property {
464 __u32 cmd;
465 __u32 reserved[3];
466 union {
467 __u32 data;
468 struct dtv_fe_stats st;
469 struct {
470 __u8 data[32];
471 __u32 len;
472 __u32 reserved1[3];
473 void *reserved2;
474 } buffer;
475 } u;
476 int result;
477} __attribute__ ((packed));
478
479
480#define DTV_IOCTL_MAX_MSGS 64
481
482struct dtv_properties {
483 __u32 num;
484 struct dtv_property *props;
485};
486
487#if defined(__DVB_CORE__) || !defined (__KERNEL__)
488
489
490
491
492
493
494
495enum fe_bandwidth {
496 BANDWIDTH_8_MHZ,
497 BANDWIDTH_7_MHZ,
498 BANDWIDTH_6_MHZ,
499 BANDWIDTH_AUTO,
500 BANDWIDTH_5_MHZ,
501 BANDWIDTH_10_MHZ,
502 BANDWIDTH_1_712_MHZ,
503};
504
505
506typedef enum fe_sec_voltage fe_sec_voltage_t;
507typedef enum fe_caps fe_caps_t;
508typedef enum fe_type fe_type_t;
509typedef enum fe_sec_tone_mode fe_sec_tone_mode_t;
510typedef enum fe_sec_mini_cmd fe_sec_mini_cmd_t;
511typedef enum fe_status fe_status_t;
512typedef enum fe_spectral_inversion fe_spectral_inversion_t;
513typedef enum fe_code_rate fe_code_rate_t;
514typedef enum fe_modulation fe_modulation_t;
515typedef enum fe_transmit_mode fe_transmit_mode_t;
516typedef enum fe_bandwidth fe_bandwidth_t;
517typedef enum fe_guard_interval fe_guard_interval_t;
518typedef enum fe_hierarchy fe_hierarchy_t;
519typedef enum fe_pilot fe_pilot_t;
520typedef enum fe_rolloff fe_rolloff_t;
521typedef enum fe_delivery_system fe_delivery_system_t;
522
523struct dvb_qpsk_parameters {
524 __u32 symbol_rate;
525 fe_code_rate_t fec_inner;
526};
527
528struct dvb_qam_parameters {
529 __u32 symbol_rate;
530 fe_code_rate_t fec_inner;
531 fe_modulation_t modulation;
532};
533
534struct dvb_vsb_parameters {
535 fe_modulation_t modulation;
536};
537
538struct dvb_ofdm_parameters {
539 fe_bandwidth_t bandwidth;
540 fe_code_rate_t code_rate_HP;
541 fe_code_rate_t code_rate_LP;
542 fe_modulation_t constellation;
543 fe_transmit_mode_t transmission_mode;
544 fe_guard_interval_t guard_interval;
545 fe_hierarchy_t hierarchy_information;
546};
547
548struct dvb_frontend_parameters {
549 __u32 frequency;
550
551 fe_spectral_inversion_t inversion;
552 union {
553 struct dvb_qpsk_parameters qpsk;
554 struct dvb_qam_parameters qam;
555 struct dvb_ofdm_parameters ofdm;
556 struct dvb_vsb_parameters vsb;
557 } u;
558};
559
560struct dvb_frontend_event {
561 fe_status_t status;
562 struct dvb_frontend_parameters parameters;
563};
564#endif
565
566#define FE_SET_PROPERTY _IOW('o', 82, struct dtv_properties)
567#define FE_GET_PROPERTY _IOR('o', 83, struct dtv_properties)
568
569
570
571
572
573
574
575
576#define FE_TUNE_MODE_ONESHOT 0x01
577
578#define FE_GET_INFO _IOR('o', 61, struct dvb_frontend_info)
579
580#define FE_DISEQC_RESET_OVERLOAD _IO('o', 62)
581#define FE_DISEQC_SEND_MASTER_CMD _IOW('o', 63, struct dvb_diseqc_master_cmd)
582#define FE_DISEQC_RECV_SLAVE_REPLY _IOR('o', 64, struct dvb_diseqc_slave_reply)
583#define FE_DISEQC_SEND_BURST _IO('o', 65)
584
585#define FE_SET_TONE _IO('o', 66)
586#define FE_SET_VOLTAGE _IO('o', 67)
587#define FE_ENABLE_HIGH_LNB_VOLTAGE _IO('o', 68)
588
589#define FE_READ_STATUS _IOR('o', 69, fe_status_t)
590#define FE_READ_BER _IOR('o', 70, __u32)
591#define FE_READ_SIGNAL_STRENGTH _IOR('o', 71, __u16)
592#define FE_READ_SNR _IOR('o', 72, __u16)
593#define FE_READ_UNCORRECTED_BLOCKS _IOR('o', 73, __u32)
594
595#define FE_SET_FRONTEND _IOW('o', 76, struct dvb_frontend_parameters)
596#define FE_GET_FRONTEND _IOR('o', 77, struct dvb_frontend_parameters)
597#define FE_SET_FRONTEND_TUNE_MODE _IO('o', 81)
598#define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event)
599
600#define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80)
601
602#endif
603