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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
#include <stdio.h>
#include <linux/dvb/frontend.h>
#include "dump-zap.h"
static const char *inv_name [] = {
"INVERSION_OFF",
"INVERSION_ON",
"INVERSION_AUTO"
};
static const char *fec_name [] = {
"FEC_NONE",
"FEC_1_2",
"FEC_2_3",
"FEC_3_4",
"FEC_4_5",
"FEC_5_6",
"FEC_6_7",
"FEC_7_8",
"FEC_8_9",
"FEC_AUTO"
};
static const char *qam_name [] = {
"QPSK",
"QAM_16",
"QAM_32",
"QAM_64",
"QAM_128",
"QAM_256",
"QAM_AUTO",
"8VSB",
"16VSB",
};
static const char *bw_name [] = {
"BANDWIDTH_8_MHZ",
"BANDWIDTH_7_MHZ",
"BANDWIDTH_6_MHZ",
"BANDWIDTH_AUTO"
};
static const char *mode_name [] = {
"TRANSMISSION_MODE_2K",
"TRANSMISSION_MODE_8K",
"TRANSMISSION_MODE_AUTO"
};
static const char *guard_name [] = {
"GUARD_INTERVAL_1_32",
"GUARD_INTERVAL_1_16",
"GUARD_INTERVAL_1_8",
"GUARD_INTERVAL_1_4",
"GUARD_INTERVAL_AUTO"
};
static const char *hierarchy_name [] = {
"HIERARCHY_NONE",
"HIERARCHY_1",
"HIERARCHY_2",
"HIERARCHY_4",
"HIERARCHY_AUTO"
};
void zap_dump_dvb_parameters (FILE *f, fe_type_t type, struct dvb_frontend_parameters *p, char polarity, int sat_number)
{
switch (type) {
case FE_QPSK:
fprintf (f, "%i:", p->frequency / 1000); /* channels.conf wants MHz */
fprintf (f, "%c:", polarity);
fprintf (f, "%d:", sat_number);
fprintf (f, "%i", p->u.qpsk.symbol_rate / 1000); /* channels.conf wants kBaud */
/*fprintf (f, "%s", fec_name[p->u.qpsk.fec_inner]);*/
break;
case FE_QAM:
fprintf (f, "%i:", p->frequency);
fprintf (f, "%s:", inv_name[p->inversion]);
fprintf (f, "%i:", p->u.qpsk.symbol_rate);
fprintf (f, "%s:", fec_name[p->u.qpsk.fec_inner]);
fprintf (f, "%s", qam_name[p->u.qam.modulation]);
break;
case FE_OFDM:
fprintf (f, "%i:", p->frequency);
fprintf (f, "%s:", inv_name[p->inversion]);
fprintf (f, "%s:", bw_name[p->u.ofdm.bandwidth]);
fprintf (f, "%s:", fec_name[p->u.ofdm.code_rate_HP]);
fprintf (f, "%s:", fec_name[p->u.ofdm.code_rate_LP]);
fprintf (f, "%s:", qam_name[p->u.ofdm.constellation]);
fprintf (f, "%s:", mode_name[p->u.ofdm.transmission_mode]);
fprintf (f, "%s:", guard_name[p->u.ofdm.guard_interval]);
fprintf (f, "%s", hierarchy_name[p->u.ofdm.hierarchy_information]);
break;
case FE_ATSC:
fprintf (f, "%i:", p->frequency);
fprintf (f, "%s", qam_name[p->u.vsb.modulation]);
break;
default:
;
};
}
void zap_dump_service_parameter_set (FILE *f,
const char *service_name,
fe_type_t type,
struct dvb_frontend_parameters *p,
char polarity,
int sat_number,
uint16_t video_pid,
uint16_t *audio_pid,
uint16_t service_id)
{
fprintf (f, "%s:", service_name);
zap_dump_dvb_parameters (f, type, p, polarity, sat_number);
fprintf (f, ":%i:%i:%i", video_pid, audio_pid[0], service_id);
fprintf (f, "\n");
}
|