line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package Linux::DVB::DVBT::Freq ; |
2
|
|
|
|
|
|
|
|
3
|
|
|
|
|
|
|
=head1 NAME |
4
|
|
|
|
|
|
|
|
5
|
|
|
|
|
|
|
Linux::DVB::DVBT::Freq - DVBT frequency scanning |
6
|
|
|
|
|
|
|
|
7
|
|
|
|
|
|
|
=head1 SYNOPSIS |
8
|
|
|
|
|
|
|
|
9
|
|
|
|
|
|
|
use Linux::DVB::DVBT::Freq ; |
10
|
|
|
|
|
|
|
|
11
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
=head1 DESCRIPTION |
13
|
|
|
|
|
|
|
|
14
|
|
|
|
|
|
|
Module provides routines that create a list of frequencies to scan based on the country. The tables are based on the information in w_scan. |
15
|
|
|
|
|
|
|
|
16
|
|
|
|
|
|
|
=cut |
17
|
|
|
|
|
|
|
|
18
|
|
|
|
|
|
|
|
19
|
10
|
|
|
10
|
|
39
|
use strict ; |
|
10
|
|
|
|
|
11
|
|
|
10
|
|
|
|
|
14908
|
|
20
|
|
|
|
|
|
|
|
21
|
|
|
|
|
|
|
our $VERSION = '1.01' ; |
22
|
|
|
|
|
|
|
our $DEBUG = 0 ; |
23
|
|
|
|
|
|
|
|
24
|
|
|
|
|
|
|
|
25
|
|
|
|
|
|
|
our %CHANNEL_TYPE = ( |
26
|
|
|
|
|
|
|
'NOT_USED' => 0, |
27
|
|
|
|
|
|
|
'DVBT_AU' => 1, |
28
|
|
|
|
|
|
|
'DVBT_DE' => 2, |
29
|
|
|
|
|
|
|
'DVBT_FR' => 3, |
30
|
|
|
|
|
|
|
'DVBT_GB' => 4, |
31
|
|
|
|
|
|
|
) ; |
32
|
|
|
|
|
|
|
|
33
|
|
|
|
|
|
|
our %COUNTRY_LIST = ( |
34
|
|
|
|
|
|
|
"AD" => [ "NOT_USED", "ANDORRA"], |
35
|
|
|
|
|
|
|
"AE" => [ "NOT_USED", "UNITED ARAB EMIRATES"], |
36
|
|
|
|
|
|
|
"AF" => [ "NOT_USED", "AFGHANISTAN"], |
37
|
|
|
|
|
|
|
"AG" => [ "NOT_USED", "ANTIGUA AND BARBUDA"], |
38
|
|
|
|
|
|
|
"AI" => [ "NOT_USED", "ANGUILLA"], |
39
|
|
|
|
|
|
|
"AL" => [ "NOT_USED", "ALBANIA"], |
40
|
|
|
|
|
|
|
"AM" => [ "NOT_USED", "ARMENIA"], |
41
|
|
|
|
|
|
|
"AO" => [ "NOT_USED", "ANGOLA"], |
42
|
|
|
|
|
|
|
"AQ" => [ "NOT_USED", "ANTARCTICA"], |
43
|
|
|
|
|
|
|
"AR" => [ "NOT_USED", "ARGENTINA"], |
44
|
|
|
|
|
|
|
"AS" => [ "NOT_USED", "AMERICAN SAMOA"], |
45
|
|
|
|
|
|
|
"AT" => [ "DVBT_DE", "AUSTRIA"], |
46
|
|
|
|
|
|
|
"AU" => [ "DVBT_AU", "AUSTRALIA"], |
47
|
|
|
|
|
|
|
"AW" => [ "NOT_USED", "ARUBA"], |
48
|
|
|
|
|
|
|
"AX" => [ "NOT_USED", "ÅLAND ISLANDS"], |
49
|
|
|
|
|
|
|
"AZ" => [ "NOT_USED", "AZERBAIJAN"], |
50
|
|
|
|
|
|
|
"BA" => [ "NOT_USED", "BOSNIA AND HERZEGOVINA"], |
51
|
|
|
|
|
|
|
"BB" => [ "NOT_USED", "BARBADOS"], |
52
|
|
|
|
|
|
|
"BD" => [ "NOT_USED", "BANGLADESH"], |
53
|
|
|
|
|
|
|
"BE" => [ "DVBT_DE", "BELGIUM"], |
54
|
|
|
|
|
|
|
"BF" => [ "NOT_USED", "BURKINA FASO"], |
55
|
|
|
|
|
|
|
"BG" => [ "NOT_USED", "BULGARIA"], |
56
|
|
|
|
|
|
|
"BH" => [ "NOT_USED", "BAHRAIN"], |
57
|
|
|
|
|
|
|
"BI" => [ "NOT_USED", "BURUNDI"], |
58
|
|
|
|
|
|
|
"BJ" => [ "NOT_USED", "BENIN"], |
59
|
|
|
|
|
|
|
"BL" => [ "NOT_USED", "SAINT BARTHÉLEMY"], |
60
|
|
|
|
|
|
|
"BM" => [ "NOT_USED", "BERMUDA"], |
61
|
|
|
|
|
|
|
"BN" => [ "NOT_USED", "BRUNEI DARUSSALAM"], |
62
|
|
|
|
|
|
|
"BO" => [ "NOT_USED", "BOLIVIA"], |
63
|
|
|
|
|
|
|
"BQ" => [ "NOT_USED", "BONAIRE"], |
64
|
|
|
|
|
|
|
"BR" => [ "NOT_USED", "BRAZIL"], |
65
|
|
|
|
|
|
|
"BS" => [ "NOT_USED", "BAHAMAS"], |
66
|
|
|
|
|
|
|
"BT" => [ "NOT_USED", "BHUTAN"], |
67
|
|
|
|
|
|
|
"BV" => [ "NOT_USED", "BOUVET ISLAND"], |
68
|
|
|
|
|
|
|
"BW" => [ "NOT_USED", "BOTSWANA"], |
69
|
|
|
|
|
|
|
"BY" => [ "NOT_USED", "BELARUS"], |
70
|
|
|
|
|
|
|
"BZ" => [ "NOT_USED", "BELIZE"], |
71
|
|
|
|
|
|
|
"CA" => [ "NOT_USED", "CANADA"], |
72
|
|
|
|
|
|
|
"CC" => [ "NOT_USED", "COCOS (KEELING) ISLANDS"], |
73
|
|
|
|
|
|
|
"CD" => [ "NOT_USED", "CONGO, THE DEMOCRATIC REPUBLIC OF THE"], |
74
|
|
|
|
|
|
|
"CF" => [ "NOT_USED", "CENTRAL AFRICAN REPUBLIC"], |
75
|
|
|
|
|
|
|
"CG" => [ "NOT_USED", "CONGO"], |
76
|
|
|
|
|
|
|
"CH" => [ "DVBT_DE", "SWITZERLAND"], |
77
|
|
|
|
|
|
|
"CI" => [ "NOT_USED", "CÔTE D'IVOIRE"], |
78
|
|
|
|
|
|
|
"CK" => [ "NOT_USED", "COOK ISLANDS"], |
79
|
|
|
|
|
|
|
"CL" => [ "NOT_USED", "CHILE"], |
80
|
|
|
|
|
|
|
"CM" => [ "NOT_USED", "CAMEROON"], |
81
|
|
|
|
|
|
|
"CN" => [ "NOT_USED", "CHINA"], |
82
|
|
|
|
|
|
|
"CO" => [ "NOT_USED", "COLOMBIA"], |
83
|
|
|
|
|
|
|
"CR" => [ "NOT_USED", "COSTA RICA"], |
84
|
|
|
|
|
|
|
"CU" => [ "NOT_USED", "CUBA"], |
85
|
|
|
|
|
|
|
"CV" => [ "NOT_USED", "CAPE VERDE"], |
86
|
|
|
|
|
|
|
"CW" => [ "NOT_USED", "CURAÇAO"], |
87
|
|
|
|
|
|
|
"CX" => [ "NOT_USED", "CHRISTMAS ISLAND"], |
88
|
|
|
|
|
|
|
"CY" => [ "NOT_USED", "CYPRUS"], |
89
|
|
|
|
|
|
|
"CZ" => [ "DVBT_DE", "CZECH REPUBLIC"], |
90
|
|
|
|
|
|
|
"DE" => [ "DVBT_DE", "GERMANY"], |
91
|
|
|
|
|
|
|
"DJ" => [ "NOT_USED", "DJIBOUTI"], |
92
|
|
|
|
|
|
|
"DK" => [ "DVBT_DE", "DENMARK"], |
93
|
|
|
|
|
|
|
"DM" => [ "NOT_USED", "DOMINICA"], |
94
|
|
|
|
|
|
|
"DO" => [ "NOT_USED", "DOMINICAN REPUBLIC"], |
95
|
|
|
|
|
|
|
"DZ" => [ "NOT_USED", "ALGERIA"], |
96
|
|
|
|
|
|
|
"EC" => [ "NOT_USED", "ECUADOR"], |
97
|
|
|
|
|
|
|
"EE" => [ "NOT_USED", "ESTONIA"], |
98
|
|
|
|
|
|
|
"EG" => [ "NOT_USED", "EGYPT"], |
99
|
|
|
|
|
|
|
"EH" => [ "NOT_USED", "WESTERN SAHARA"], |
100
|
|
|
|
|
|
|
"ER" => [ "NOT_USED", "ERITREA"], |
101
|
|
|
|
|
|
|
"ES" => [ "DVBT_DE", "SPAIN"], |
102
|
|
|
|
|
|
|
"ET" => [ "NOT_USED", "ETHIOPIA"], |
103
|
|
|
|
|
|
|
"FI" => [ "DVBT_DE", "FINLAND"], |
104
|
|
|
|
|
|
|
"FJ" => [ "NOT_USED", "FIJI"], |
105
|
|
|
|
|
|
|
"FK" => [ "NOT_USED", "FALKLAND ISLANDS (MALVINAS)"], |
106
|
|
|
|
|
|
|
"FM" => [ "NOT_USED", "MICRONESIA, FEDERATED STATES OF"], |
107
|
|
|
|
|
|
|
"FO" => [ "NOT_USED", "FAROE ISLANDS"], |
108
|
|
|
|
|
|
|
"FR" => [ "DVBT_FR", "FRANCE"], |
109
|
|
|
|
|
|
|
"GA" => [ "NOT_USED", "GABON"], |
110
|
|
|
|
|
|
|
"GB" => [ "DVBT_GB", "UNITED KINGDOM"], |
111
|
|
|
|
|
|
|
"GD" => [ "NOT_USED", "GRENADA"], |
112
|
|
|
|
|
|
|
"GE" => [ "NOT_USED", "GEORGIA"], |
113
|
|
|
|
|
|
|
"GF" => [ "NOT_USED", "FRENCH GUIANA"], |
114
|
|
|
|
|
|
|
"GG" => [ "NOT_USED", "GUERNSEY"], |
115
|
|
|
|
|
|
|
"GH" => [ "NOT_USED", "GHANA"], |
116
|
|
|
|
|
|
|
"GI" => [ "NOT_USED", "GIBRALTAR"], |
117
|
|
|
|
|
|
|
"GL" => [ "NOT_USED", "GREENLAND"], |
118
|
|
|
|
|
|
|
"GM" => [ "NOT_USED", "GAMBIA"], |
119
|
|
|
|
|
|
|
"GN" => [ "NOT_USED", "GUINEA"], |
120
|
|
|
|
|
|
|
"GP" => [ "NOT_USED", "GUADELOUPE"], |
121
|
|
|
|
|
|
|
"GQ" => [ "NOT_USED", "EQUATORIAL GUINEA"], |
122
|
|
|
|
|
|
|
"GR" => [ "DVBT_DE", "GREECE"], |
123
|
|
|
|
|
|
|
"GS" => [ "NOT_USED", "SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS"], |
124
|
|
|
|
|
|
|
"GT" => [ "NOT_USED", "GUATEMALA"], |
125
|
|
|
|
|
|
|
"GU" => [ "NOT_USED", "GUAM"], |
126
|
|
|
|
|
|
|
"GW" => [ "NOT_USED", "GUINEA-BISSAU"], |
127
|
|
|
|
|
|
|
"GY" => [ "NOT_USED", "GUYANA"], |
128
|
|
|
|
|
|
|
"HK" => [ "DVBT_DE", "HONG KONG"], |
129
|
|
|
|
|
|
|
"HM" => [ "NOT_USED", "HEARD ISLAND AND MCDONALD ISLANDS"], |
130
|
|
|
|
|
|
|
"HN" => [ "NOT_USED", "HONDURAS"], |
131
|
|
|
|
|
|
|
"HR" => [ "DVBT_DE", "CROATIA"], |
132
|
|
|
|
|
|
|
"HT" => [ "NOT_USED", "HAITI"], |
133
|
|
|
|
|
|
|
"HU" => [ "NOT_USED", "HUNGARY"], |
134
|
|
|
|
|
|
|
"ID" => [ "NOT_USED", "INDONESIA"], |
135
|
|
|
|
|
|
|
"IE" => [ "NOT_USED", "IRELAND"], |
136
|
|
|
|
|
|
|
"IL" => [ "NOT_USED", "ISRAEL"], |
137
|
|
|
|
|
|
|
"IM" => [ "NOT_USED", "ISLE OF MAN"], |
138
|
|
|
|
|
|
|
"IN" => [ "NOT_USED", "INDIA"], |
139
|
|
|
|
|
|
|
"IO" => [ "NOT_USED", "BRITISH INDIAN OCEAN TERRITORY"], |
140
|
|
|
|
|
|
|
"IQ" => [ "NOT_USED", "IRAQ"], |
141
|
|
|
|
|
|
|
"IR" => [ "NOT_USED", "IRAN, ISLAMIC REPUBLIC OF"], |
142
|
|
|
|
|
|
|
"IS" => [ "DVBT_DE", "ICELAND"], |
143
|
|
|
|
|
|
|
"IT" => [ "DVBT_DE", "ITALY"], |
144
|
|
|
|
|
|
|
"JE" => [ "NOT_USED", "JERSEY"], |
145
|
|
|
|
|
|
|
"JM" => [ "NOT_USED", "JAMAICA"], |
146
|
|
|
|
|
|
|
"JO" => [ "NOT_USED", "JORDAN"], |
147
|
|
|
|
|
|
|
"JP" => [ "NOT_USED", "JAPAN"], |
148
|
|
|
|
|
|
|
"KE" => [ "NOT_USED", "KENYA"], |
149
|
|
|
|
|
|
|
"KG" => [ "NOT_USED", "KYRGYZSTAN"], |
150
|
|
|
|
|
|
|
"KH" => [ "NOT_USED", "CAMBODIA"], |
151
|
|
|
|
|
|
|
"KI" => [ "NOT_USED", "KIRIBATI"], |
152
|
|
|
|
|
|
|
"KM" => [ "NOT_USED", "COMOROS"], |
153
|
|
|
|
|
|
|
"KN" => [ "NOT_USED", "SAINT KITTS AND NEVIS"], |
154
|
|
|
|
|
|
|
"KP" => [ "NOT_USED", "KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF"], |
155
|
|
|
|
|
|
|
"KR" => [ "NOT_USED", "KOREA, REPUBLIC OF"], |
156
|
|
|
|
|
|
|
"KW" => [ "NOT_USED", "KUWAIT"], |
157
|
|
|
|
|
|
|
"KY" => [ "NOT_USED", "CAYMAN ISLANDS"], |
158
|
|
|
|
|
|
|
"KZ" => [ "NOT_USED", "KAZAKHSTAN"], |
159
|
|
|
|
|
|
|
"LA" => [ "NOT_USED", "LAO PEOPLE'S DEMOCRATIC REPUBLIC"], |
160
|
|
|
|
|
|
|
"LB" => [ "NOT_USED", "LEBANON"], |
161
|
|
|
|
|
|
|
"LC" => [ "NOT_USED", "SAINT LUCIA"], |
162
|
|
|
|
|
|
|
"LI" => [ "NOT_USED", "LIECHTENSTEIN"], |
163
|
|
|
|
|
|
|
"LK" => [ "NOT_USED", "SRI LANKA"], |
164
|
|
|
|
|
|
|
"LR" => [ "NOT_USED", "LIBERIA"], |
165
|
|
|
|
|
|
|
"LS" => [ "NOT_USED", "LESOTHO"], |
166
|
|
|
|
|
|
|
"LT" => [ "NOT_USED", "LITHUANIA"], |
167
|
|
|
|
|
|
|
"LU" => [ "DVBT_DE", "LUXEMBOURG"], |
168
|
|
|
|
|
|
|
"LV" => [ "DVBT_DE", "LATVIA"], |
169
|
|
|
|
|
|
|
"LY" => [ "NOT_USED", "LIBYAN ARAB JAMAHIRIYA"], |
170
|
|
|
|
|
|
|
"MA" => [ "NOT_USED", "MOROCCO"], |
171
|
|
|
|
|
|
|
"MC" => [ "NOT_USED", "MONACO"], |
172
|
|
|
|
|
|
|
"MD" => [ "NOT_USED", "MOLDOVA"], |
173
|
|
|
|
|
|
|
"ME" => [ "NOT_USED", "MONTENEGRO"], |
174
|
|
|
|
|
|
|
"MF" => [ "NOT_USED", "SAINT MARTIN"], |
175
|
|
|
|
|
|
|
"MG" => [ "NOT_USED", "MADAGASCAR"], |
176
|
|
|
|
|
|
|
"MH" => [ "NOT_USED", "MARSHALL ISLANDS"], |
177
|
|
|
|
|
|
|
"MK" => [ "NOT_USED", "MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF"], |
178
|
|
|
|
|
|
|
"ML" => [ "NOT_USED", "MALI"], |
179
|
|
|
|
|
|
|
"MM" => [ "NOT_USED", "MYANMAR"], |
180
|
|
|
|
|
|
|
"MN" => [ "NOT_USED", "MONGOLIA"], |
181
|
|
|
|
|
|
|
"MO" => [ "NOT_USED", "MACAO"], |
182
|
|
|
|
|
|
|
"MP" => [ "NOT_USED", "NORTHERN MARIANA ISLANDS"], |
183
|
|
|
|
|
|
|
"MQ" => [ "NOT_USED", "MARTINIQUE"], |
184
|
|
|
|
|
|
|
"MR" => [ "NOT_USED", "MAURITANIA"], |
185
|
|
|
|
|
|
|
"MS" => [ "NOT_USED", "MONTSERRAT"], |
186
|
|
|
|
|
|
|
"MT" => [ "NOT_USED", "MALTA"], |
187
|
|
|
|
|
|
|
"MU" => [ "NOT_USED", "MAURITIUS"], |
188
|
|
|
|
|
|
|
"MV" => [ "NOT_USED", "MALDIVES"], |
189
|
|
|
|
|
|
|
"MW" => [ "NOT_USED", "MALAWI"], |
190
|
|
|
|
|
|
|
"MX" => [ "NOT_USED", "MEXICO"], |
191
|
|
|
|
|
|
|
"MY" => [ "NOT_USED", "MALAYSIA"], |
192
|
|
|
|
|
|
|
"MZ" => [ "NOT_USED", "MOZAMBIQUE"], |
193
|
|
|
|
|
|
|
"NA" => [ "NOT_USED", "NAMIBIA"], |
194
|
|
|
|
|
|
|
"NC" => [ "NOT_USED", "NEW CALEDONIA"], |
195
|
|
|
|
|
|
|
"NE" => [ "NOT_USED", "NIGER"], |
196
|
|
|
|
|
|
|
"NF" => [ "NOT_USED", "NORFOLK ISLAND"], |
197
|
|
|
|
|
|
|
"NG" => [ "NOT_USED", "NIGERIA"], |
198
|
|
|
|
|
|
|
"NI" => [ "NOT_USED", "NICARAGUA"], |
199
|
|
|
|
|
|
|
"NL" => [ "DVBT_DE", "NETHERLANDS"], |
200
|
|
|
|
|
|
|
"NO" => [ "DVBT_DE", "NORWAY"], |
201
|
|
|
|
|
|
|
"NP" => [ "NOT_USED", "NEPAL"], |
202
|
|
|
|
|
|
|
"NR" => [ "NOT_USED", "NAURU"], |
203
|
|
|
|
|
|
|
"NU" => [ "NOT_USED", "NIUE"], |
204
|
|
|
|
|
|
|
"NZ" => [ "DVBT_DE", "NEW ZEALAND"], |
205
|
|
|
|
|
|
|
"OM" => [ "NOT_USED", "OMAN"], |
206
|
|
|
|
|
|
|
"PA" => [ "NOT_USED", "PANAMA"], |
207
|
|
|
|
|
|
|
"PE" => [ "NOT_USED", "PERU"], |
208
|
|
|
|
|
|
|
"PF" => [ "NOT_USED", "FRENCH POLYNESIA"], |
209
|
|
|
|
|
|
|
"PG" => [ "NOT_USED", "PAPUA NEW GUINEA"], |
210
|
|
|
|
|
|
|
"PH" => [ "NOT_USED", "PHILIPPINES"], |
211
|
|
|
|
|
|
|
"PK" => [ "NOT_USED", "PAKISTAN"], |
212
|
|
|
|
|
|
|
"PL" => [ "DVBT_DE", "POLAND"], |
213
|
|
|
|
|
|
|
"PM" => [ "NOT_USED", "SAINT PIERRE AND MIQUELON"], |
214
|
|
|
|
|
|
|
"PN" => [ "NOT_USED", "PITCAIRN"], |
215
|
|
|
|
|
|
|
"PR" => [ "NOT_USED", "PUERTO RICO"], |
216
|
|
|
|
|
|
|
"PS" => [ "NOT_USED", "PALESTINIAN TERRITORY, OCCUPIED"], |
217
|
|
|
|
|
|
|
"PT" => [ "NOT_USED", "PORTUGAL"], |
218
|
|
|
|
|
|
|
"PW" => [ "NOT_USED", "PALAU"], |
219
|
|
|
|
|
|
|
"PY" => [ "NOT_USED", "PARAGUAY"], |
220
|
|
|
|
|
|
|
"QA" => [ "NOT_USED", "QATA"], |
221
|
|
|
|
|
|
|
"RE" => [ "NOT_USED", "RÉUNION"], |
222
|
|
|
|
|
|
|
"RO" => [ "NOT_USED", "ROMANIA"], |
223
|
|
|
|
|
|
|
"RS" => [ "NOT_USED", "SERBIA"], |
224
|
|
|
|
|
|
|
"RU" => [ "NOT_USED", "RUSSIAN FEDERATION"], |
225
|
|
|
|
|
|
|
"RW" => [ "NOT_USED", "RWANDA"], |
226
|
|
|
|
|
|
|
"SA" => [ "NOT_USED", "SAUDI ARABIA"], |
227
|
|
|
|
|
|
|
"SB" => [ "NOT_USED", "SOLOMON ISLANDS"], |
228
|
|
|
|
|
|
|
"SC" => [ "NOT_USED", "SEYCHELLES"], |
229
|
|
|
|
|
|
|
"SD" => [ "NOT_USED", "SUDAN"], |
230
|
|
|
|
|
|
|
"SE" => [ "DVBT_DE", "SWEDEN"], |
231
|
|
|
|
|
|
|
"SG" => [ "NOT_USED", "SINGAPORE"], |
232
|
|
|
|
|
|
|
"SH" => [ "NOT_USED", "SAINT HELENA"], |
233
|
|
|
|
|
|
|
"SI" => [ "NOT_USED", "SLOVENIA"], |
234
|
|
|
|
|
|
|
"SJ" => [ "NOT_USED", "SVALBARD AND JAN MAYEN"], |
235
|
|
|
|
|
|
|
"SK" => [ "DVBT_DE", "SLOVAKIA"], |
236
|
|
|
|
|
|
|
"SL" => [ "NOT_USED", "SIERRA LEONE"], |
237
|
|
|
|
|
|
|
"SM" => [ "NOT_USED", "SAN MARINO"], |
238
|
|
|
|
|
|
|
"SN" => [ "NOT_USED", "SENEGAL"], |
239
|
|
|
|
|
|
|
"SO" => [ "NOT_USED", "SOMALIA"], |
240
|
|
|
|
|
|
|
"SR" => [ "NOT_USED", "SURINAME"], |
241
|
|
|
|
|
|
|
"ST" => [ "NOT_USED", "SAO TOME AND PRINCIPE"], |
242
|
|
|
|
|
|
|
"SV" => [ "NOT_USED", "EL SALVADOR"], |
243
|
|
|
|
|
|
|
"SX" => [ "NOT_USED", "SINT MAARTEN"], |
244
|
|
|
|
|
|
|
"SY" => [ "NOT_USED", "SYRIAN ARAB REPUBLIC"], |
245
|
|
|
|
|
|
|
"SZ" => [ "NOT_USED", "SWAZILAND"], |
246
|
|
|
|
|
|
|
"TC" => [ "NOT_USED", "TURKS AND CAICOS ISLANDS"], |
247
|
|
|
|
|
|
|
"TD" => [ "NOT_USED", "CHAD"], |
248
|
|
|
|
|
|
|
"TF" => [ "NOT_USED", "FRENCH SOUTHERN TERRITORIES"], |
249
|
|
|
|
|
|
|
"TG" => [ "NOT_USED", "TOGO"], |
250
|
|
|
|
|
|
|
"TH" => [ "NOT_USED", "THAILAND"], |
251
|
|
|
|
|
|
|
"TJ" => [ "NOT_USED", "TAJIKISTAN"], |
252
|
|
|
|
|
|
|
"TK" => [ "NOT_USED", "TOKELAU"], |
253
|
|
|
|
|
|
|
"TL" => [ "NOT_USED", "TIMOR-LESTE"], |
254
|
|
|
|
|
|
|
"TM" => [ "NOT_USED", "TURKMENISTAN"], |
255
|
|
|
|
|
|
|
"TN" => [ "NOT_USED", "TUNISIA"], |
256
|
|
|
|
|
|
|
"TO" => [ "NOT_USED", "TONGA"], |
257
|
|
|
|
|
|
|
"TR" => [ "NOT_USED", "TURKEY"], |
258
|
|
|
|
|
|
|
"TT" => [ "NOT_USED", "TRINIDAD AND TOBAGO"], |
259
|
|
|
|
|
|
|
"TV" => [ "NOT_USED", "TUVALU"], |
260
|
|
|
|
|
|
|
"TW" => [ "NOT_USED", "TAIWAN"], |
261
|
|
|
|
|
|
|
"TZ" => [ "NOT_USED", "TANZANIA, UNITED REPUBLIC OF"], |
262
|
|
|
|
|
|
|
"UA" => [ "NOT_USED", "UKRAINE"], |
263
|
|
|
|
|
|
|
"UG" => [ "NOT_USED", "UGANDA"], |
264
|
|
|
|
|
|
|
"UM" => [ "NOT_USED", "UNITED STATES MINOR OUTLYING ISLANDS"], |
265
|
|
|
|
|
|
|
"US" => [ "NOT_USED", "UNITED STATES"], |
266
|
|
|
|
|
|
|
"UY" => [ "NOT_USED", "URUGUAY"], |
267
|
|
|
|
|
|
|
"UZ" => [ "NOT_USED", "UZBEKISTAN"], |
268
|
|
|
|
|
|
|
"VA" => [ "NOT_USED", "HOLY SEE (VATICAN CITY STATE)"], |
269
|
|
|
|
|
|
|
"VC" => [ "NOT_USED", "SAINT VINCENT AND THE GRENADINES"], |
270
|
|
|
|
|
|
|
"VE" => [ "NOT_USED", "VENEZUELA"], |
271
|
|
|
|
|
|
|
"VG" => [ "NOT_USED", "VIRGIN ISLANDS, BRITISH"], |
272
|
|
|
|
|
|
|
"VI" => [ "NOT_USED", "VIRGIN ISLANDS, U.S."], |
273
|
|
|
|
|
|
|
"VN" => [ "NOT_USED", "VIET NAM"], |
274
|
|
|
|
|
|
|
"VU" => [ "NOT_USED", "VANUATU"], |
275
|
|
|
|
|
|
|
"WF" => [ "NOT_USED", "WALLIS AND FUTUNA"], |
276
|
|
|
|
|
|
|
"WS" => [ "NOT_USED", "SAMOA"], |
277
|
|
|
|
|
|
|
"YE" => [ "NOT_USED", "YEMEN"], |
278
|
|
|
|
|
|
|
"YT" => [ "NOT_USED", "MAYOTTE"], |
279
|
|
|
|
|
|
|
"ZA" => [ "NOT_USED", "SOUTH AFRICA"], |
280
|
|
|
|
|
|
|
"ZM" => [ "NOT_USED", "ZAMBIA"], |
281
|
|
|
|
|
|
|
"ZW" => [ "NOT_USED", "ZIMBABWE"], |
282
|
|
|
|
|
|
|
) ; |
283
|
|
|
|
|
|
|
|
284
|
|
|
|
|
|
|
|
285
|
|
|
|
|
|
|
our %BASE_FREQ = ( |
286
|
|
|
|
|
|
|
'NOT_USED' => [], |
287
|
|
|
|
|
|
|
'DVBT_AU' => [ |
288
|
|
|
|
|
|
|
{'min'=>5, 'max'=>12, 'freq'=> 142500000}, |
289
|
|
|
|
|
|
|
{'min'=>21, 'max'=>69, 'freq'=> 333500000}, |
290
|
|
|
|
|
|
|
], |
291
|
|
|
|
|
|
|
'DVBT_DE' => [ |
292
|
|
|
|
|
|
|
{'min'=>5, 'max'=>12, 'freq'=> 142500000}, |
293
|
|
|
|
|
|
|
{'min'=>21, 'max'=>69, 'freq'=> 306000000}, |
294
|
|
|
|
|
|
|
], |
295
|
|
|
|
|
|
|
'DVBT_FR' => [ |
296
|
|
|
|
|
|
|
{'min'=>5, 'max'=>12, 'freq'=> 142500000}, |
297
|
|
|
|
|
|
|
{'min'=>21, 'max'=>69, 'freq'=> 306000000}, |
298
|
|
|
|
|
|
|
], |
299
|
|
|
|
|
|
|
'DVBT_GB' => [ |
300
|
|
|
|
|
|
|
{'min'=>5, 'max'=>12, 'freq'=> 142500000}, |
301
|
|
|
|
|
|
|
{'min'=>21, 'max'=>69, 'freq'=> 306000000}, |
302
|
|
|
|
|
|
|
], |
303
|
|
|
|
|
|
|
) ; |
304
|
|
|
|
|
|
|
|
305
|
|
|
|
|
|
|
our %FREQ_STEP = ( |
306
|
|
|
|
|
|
|
'NOT_USED' => [], |
307
|
|
|
|
|
|
|
'DVBT_AU' => [ |
308
|
|
|
|
|
|
|
{'min'=>5, 'max'=>69, 'freq'=> 7000000, 'bw'=>7}, |
309
|
|
|
|
|
|
|
], |
310
|
|
|
|
|
|
|
'DVBT_DE' => [ |
311
|
|
|
|
|
|
|
{'min'=>5, 'max'=>12, 'freq'=> 7000000, 'bw'=>7}, |
312
|
|
|
|
|
|
|
{'min'=>21, 'max'=>69, 'freq'=> 8000000, 'bw'=>8}, |
313
|
|
|
|
|
|
|
], |
314
|
|
|
|
|
|
|
'DVBT_FR' => [ |
315
|
|
|
|
|
|
|
{'min'=>5, 'max'=>12, 'freq'=> 7000000, 'bw'=>7}, |
316
|
|
|
|
|
|
|
{'min'=>21, 'max'=>69, 'freq'=> 8000000, 'bw'=>8}, |
317
|
|
|
|
|
|
|
], |
318
|
|
|
|
|
|
|
'DVBT_GB' => [ |
319
|
|
|
|
|
|
|
{'min'=>5, 'max'=>12, 'freq'=> 7000000, 'bw'=>7}, |
320
|
|
|
|
|
|
|
{'min'=>21, 'max'=>69, 'freq'=> 8000000, 'bw'=>8}, |
321
|
|
|
|
|
|
|
], |
322
|
|
|
|
|
|
|
) ; |
323
|
|
|
|
|
|
|
|
324
|
|
|
|
|
|
|
|
325
|
|
|
|
|
|
|
our %FREQ_OFFSET = ( |
326
|
|
|
|
|
|
|
'NOT_USED' => [], |
327
|
|
|
|
|
|
|
'DVBT_AU' => [ |
328
|
|
|
|
|
|
|
{'min'=>5, 'max'=>69, 'offset_min'=> 0, 'offset_max'=>125000}, |
329
|
|
|
|
|
|
|
], |
330
|
|
|
|
|
|
|
'DVBT_DE' => [ |
331
|
|
|
|
|
|
|
{'min'=>5, 'max'=>69, 'offset_min'=> 0, 'offset_max'=>0}, |
332
|
|
|
|
|
|
|
], |
333
|
|
|
|
|
|
|
'DVBT_FR' => [ |
334
|
|
|
|
|
|
|
{'min'=>5, 'max'=>12, 'offset_min'=> 0, 'offset_max'=>0}, |
335
|
|
|
|
|
|
|
{'min'=>21, 'max'=>69, 'offset_min'=> -167000, 'offset_max'=>167000}, |
336
|
|
|
|
|
|
|
], |
337
|
|
|
|
|
|
|
'DVBT_GB' => [ |
338
|
|
|
|
|
|
|
{'min'=>5, 'max'=>12, 'offset_min'=> 0, 'offset_max'=>0}, |
339
|
|
|
|
|
|
|
{'min'=>21, 'max'=>69, 'offset_min'=> -167000, 'offset_max'=>167000}, |
340
|
|
|
|
|
|
|
], |
341
|
|
|
|
|
|
|
) ; |
342
|
|
|
|
|
|
|
|
343
|
|
|
|
|
|
|
|
344
|
|
|
|
|
|
|
|
345
|
|
|
|
|
|
|
#============================================================================================ |
346
|
|
|
|
|
|
|
|
347
|
|
|
|
|
|
|
=head2 Functions |
348
|
|
|
|
|
|
|
|
349
|
|
|
|
|
|
|
=over 4 |
350
|
|
|
|
|
|
|
|
351
|
|
|
|
|
|
|
=cut |
352
|
|
|
|
|
|
|
|
353
|
|
|
|
|
|
|
|
354
|
|
|
|
|
|
|
#----------------------------------------------------------------------------- |
355
|
|
|
|
|
|
|
|
356
|
|
|
|
|
|
|
=item B |
357
|
|
|
|
|
|
|
|
358
|
|
|
|
|
|
|
Returns TRUE if the specified ISO 3166-1 country code is for a country that has DVB-T |
359
|
|
|
|
|
|
|
|
360
|
|
|
|
|
|
|
=cut |
361
|
|
|
|
|
|
|
|
362
|
|
|
|
|
|
|
sub country_supported |
363
|
|
|
|
|
|
|
{ |
364
|
2
|
|
|
2
|
1
|
3
|
my ($iso3166) = @_ ; |
365
|
2
|
|
|
|
|
2
|
my $supported = 0 ; |
366
|
|
|
|
|
|
|
|
367
|
2
|
|
50
|
|
|
4
|
$iso3166 ||= "" ; |
368
|
2
|
|
|
|
|
3
|
$iso3166 = uc $iso3166 ; |
369
|
2
|
50
|
33
|
|
|
7
|
if ($iso3166 && exists($COUNTRY_LIST{$iso3166})) |
370
|
|
|
|
|
|
|
{ |
371
|
2
|
|
|
|
|
2
|
my ($chan_type, $country) = @{$COUNTRY_LIST{$iso3166}} ; |
|
2
|
|
|
|
|
4
|
|
372
|
2
|
50
|
|
|
|
4
|
if ($chan_type ne 'NOT_USED') |
373
|
|
|
|
|
|
|
{ |
374
|
2
|
|
|
|
|
2
|
$supported = 1 ; |
375
|
|
|
|
|
|
|
} |
376
|
|
|
|
|
|
|
} |
377
|
2
|
|
|
|
|
4
|
return $supported ; |
378
|
|
|
|
|
|
|
} |
379
|
|
|
|
|
|
|
|
380
|
|
|
|
|
|
|
#----------------------------------------------------------------------------- |
381
|
|
|
|
|
|
|
|
382
|
|
|
|
|
|
|
=item B |
383
|
|
|
|
|
|
|
|
384
|
|
|
|
|
|
|
Returns the array of countries which have DVB-T information. Each array entry consists of |
385
|
|
|
|
|
|
|
an array containing 2 elements: |
386
|
|
|
|
|
|
|
|
387
|
|
|
|
|
|
|
[0] => iso3166-1 country code (e.g. 'GB') |
388
|
|
|
|
|
|
|
[1] => country name (e.g. "UNITED KINGDOM") |
389
|
|
|
|
|
|
|
|
390
|
|
|
|
|
|
|
=cut |
391
|
|
|
|
|
|
|
|
392
|
|
|
|
|
|
|
sub country_list |
393
|
|
|
|
|
|
|
{ |
394
|
0
|
|
|
0
|
1
|
0
|
my @list ; |
395
|
0
|
|
|
|
|
0
|
foreach my $code (sort keys %COUNTRY_LIST) |
396
|
|
|
|
|
|
|
{ |
397
|
0
|
|
|
|
|
0
|
my ($chan_type, $country) = @{$COUNTRY_LIST{$code}} ; |
|
0
|
|
|
|
|
0
|
|
398
|
0
|
0
|
|
|
|
0
|
if ($chan_type ne 'NOT_USED') |
399
|
|
|
|
|
|
|
{ |
400
|
0
|
|
|
|
|
0
|
push @list, [$code, $country] ; |
401
|
|
|
|
|
|
|
} |
402
|
|
|
|
|
|
|
} |
403
|
0
|
|
|
|
|
0
|
return @list ; |
404
|
|
|
|
|
|
|
} |
405
|
|
|
|
|
|
|
|
406
|
|
|
|
|
|
|
|
407
|
|
|
|
|
|
|
#----------------------------------------------------------------------------- |
408
|
|
|
|
|
|
|
|
409
|
|
|
|
|
|
|
=item B |
410
|
|
|
|
|
|
|
|
411
|
|
|
|
|
|
|
Create a list of frequencies for the specified country code. |
412
|
|
|
|
|
|
|
|
413
|
|
|
|
|
|
|
Returns an array of frequencies (or an empty list). |
414
|
|
|
|
|
|
|
|
415
|
|
|
|
|
|
|
=cut |
416
|
|
|
|
|
|
|
|
417
|
|
|
|
|
|
|
sub freq_list |
418
|
|
|
|
|
|
|
{ |
419
|
1
|
|
|
1
|
1
|
385
|
my ($iso3166) = @_ ; |
420
|
|
|
|
|
|
|
|
421
|
1
|
|
|
|
|
1
|
my @freqs ; |
422
|
1
|
|
|
|
|
30
|
my @freq_list = chan_freq_list($iso3166) ; |
423
|
|
|
|
|
|
|
|
424
|
1
|
|
|
|
|
3
|
foreach my $href (@freq_list) |
425
|
|
|
|
|
|
|
{ |
426
|
106
|
|
|
|
|
73
|
push @freqs, $href->{'freq'} ; |
427
|
|
|
|
|
|
|
} |
428
|
|
|
|
|
|
|
|
429
|
1
|
|
|
|
|
23
|
return @freqs ; |
430
|
|
|
|
|
|
|
} |
431
|
|
|
|
|
|
|
|
432
|
|
|
|
|
|
|
#----------------------------------------------------------------------------- |
433
|
|
|
|
|
|
|
|
434
|
|
|
|
|
|
|
=item B |
435
|
|
|
|
|
|
|
|
436
|
|
|
|
|
|
|
Create a list of channel numbers and frequencies for the specified country code. |
437
|
|
|
|
|
|
|
|
438
|
|
|
|
|
|
|
Returns an array of HASHes, each hash containing: |
439
|
|
|
|
|
|
|
|
440
|
|
|
|
|
|
|
'chan' => channel number |
441
|
|
|
|
|
|
|
'freq' => frequency in Hz |
442
|
|
|
|
|
|
|
|
443
|
|
|
|
|
|
|
=cut |
444
|
|
|
|
|
|
|
|
445
|
|
|
|
|
|
|
sub chan_freq_list |
446
|
|
|
|
|
|
|
{ |
447
|
2
|
|
|
2
|
1
|
6
|
my ($iso3166) = @_ ; |
448
|
2
|
|
|
|
|
2
|
my @freqs ; |
449
|
|
|
|
|
|
|
|
450
|
2
|
50
|
|
|
|
3
|
if (country_supported($iso3166)) |
451
|
|
|
|
|
|
|
{ |
452
|
2
|
|
|
|
|
2
|
$iso3166 = uc $iso3166 ; |
453
|
2
|
|
|
|
|
2
|
my ($chan_type, $country) = @{$COUNTRY_LIST{$iso3166}} ; |
|
2
|
|
|
|
|
3
|
|
454
|
|
|
|
|
|
|
|
455
|
2
|
|
|
|
|
3
|
my $base_freq_list = $BASE_FREQ{$chan_type} ; |
456
|
2
|
|
|
|
|
2
|
my $freq_step_list = $FREQ_STEP{$chan_type} ; |
457
|
2
|
|
|
|
|
3
|
my $freq_offset_list = $FREQ_OFFSET{$chan_type} ; |
458
|
|
|
|
|
|
|
|
459
|
2
|
|
|
|
|
2
|
foreach my $freq_href (@$base_freq_list) |
460
|
|
|
|
|
|
|
{ |
461
|
4
|
|
|
|
|
5
|
my $base_freq = $freq_href->{'freq'} ; |
462
|
4
|
|
|
|
|
7
|
for (my $chan = $freq_href->{'min'}; $chan <= $freq_href->{'max'}; ++$chan) |
463
|
|
|
|
|
|
|
{ |
464
|
114
|
|
|
|
|
102
|
my ($freq_step, $bw) = _lookup_freq_step($chan, $freq_step_list) ; |
465
|
114
|
|
|
|
|
114
|
my ($offset_min, $offset_max) = _lookup_freq_offset($chan, $freq_offset_list) ; |
466
|
|
|
|
|
|
|
|
467
|
114
|
|
|
|
|
88
|
my @offsets = (0) ; |
468
|
114
|
100
|
|
|
|
145
|
unshift(@offsets, $offset_min) if ($offset_min < 0) ; |
469
|
114
|
50
|
|
|
|
120
|
push(@offsets, $offset_max) if ($offset_max < 0) ; |
470
|
|
|
|
|
|
|
|
471
|
114
|
|
|
|
|
81
|
foreach my $offset (@offsets) |
472
|
|
|
|
|
|
|
{ |
473
|
212
|
|
|
|
|
177
|
my $frequency = $base_freq + ($chan * $freq_step) + $offset ; |
474
|
212
|
|
|
|
|
437
|
push @freqs, { |
475
|
|
|
|
|
|
|
'chan' => $chan, |
476
|
|
|
|
|
|
|
'freq' => $frequency, |
477
|
|
|
|
|
|
|
'bw' => $bw, |
478
|
|
|
|
|
|
|
} ; |
479
|
|
|
|
|
|
|
} |
480
|
|
|
|
|
|
|
} |
481
|
|
|
|
|
|
|
} |
482
|
|
|
|
|
|
|
} |
483
|
|
|
|
|
|
|
|
484
|
2
|
|
|
|
|
25
|
return @freqs ; |
485
|
|
|
|
|
|
|
} |
486
|
|
|
|
|
|
|
|
487
|
|
|
|
|
|
|
#----------------------------------------------------------------------------- |
488
|
|
|
|
|
|
|
sub _lookup_freq_step |
489
|
|
|
|
|
|
|
{ |
490
|
114
|
|
|
114
|
|
86
|
my ($chan, $freq_step_list) = @_ ; |
491
|
114
|
|
|
|
|
58
|
my $freq_step = 8000000 ; |
492
|
114
|
|
|
|
|
70
|
my $bw = 8 ; |
493
|
|
|
|
|
|
|
|
494
|
114
|
|
|
|
|
93
|
foreach my $freq_href (@$freq_step_list) |
495
|
|
|
|
|
|
|
{ |
496
|
212
|
100
|
66
|
|
|
545
|
if ( ($chan >= $freq_href->{'min'}) && ($chan <= $freq_href->{'max'}) ) |
497
|
|
|
|
|
|
|
{ |
498
|
114
|
|
|
|
|
69
|
$freq_step = $freq_href->{'freq'} ; |
499
|
114
|
|
|
|
|
73
|
$bw = $freq_href->{'bw'} ; |
500
|
114
|
|
|
|
|
84
|
last ; |
501
|
|
|
|
|
|
|
} |
502
|
|
|
|
|
|
|
} |
503
|
114
|
50
|
|
|
|
139
|
return wantarray ? ($freq_step, $bw) : $freq_step ; |
504
|
|
|
|
|
|
|
} |
505
|
|
|
|
|
|
|
|
506
|
|
|
|
|
|
|
#----------------------------------------------------------------------------- |
507
|
|
|
|
|
|
|
sub _lookup_freq_offset |
508
|
|
|
|
|
|
|
{ |
509
|
114
|
|
|
114
|
|
71
|
my ($chan, $freq_offset_list) = @_ ; |
510
|
114
|
|
|
|
|
67
|
my $min = 0 ; |
511
|
114
|
|
|
|
|
69
|
my $max = 0 ; |
512
|
|
|
|
|
|
|
|
513
|
114
|
|
|
|
|
80
|
foreach my $freq_href (@$freq_offset_list) |
514
|
|
|
|
|
|
|
{ |
515
|
212
|
100
|
66
|
|
|
530
|
if ( ($chan >= $freq_href->{'min'}) && ($chan <= $freq_href->{'max'}) ) |
516
|
|
|
|
|
|
|
{ |
517
|
114
|
|
|
|
|
77
|
$min = $freq_href->{'offset_min'} ; |
518
|
114
|
|
|
|
|
54
|
$max = $freq_href->{'offset_max'} ; |
519
|
114
|
|
|
|
|
79
|
last ; |
520
|
|
|
|
|
|
|
} |
521
|
|
|
|
|
|
|
} |
522
|
114
|
|
|
|
|
108
|
return ($min, $max) ; |
523
|
|
|
|
|
|
|
} |
524
|
|
|
|
|
|
|
|
525
|
|
|
|
|
|
|
|
526
|
|
|
|
|
|
|
# ============================================================================================ |
527
|
|
|
|
|
|
|
# END OF PACKAGE |
528
|
|
|
|
|
|
|
|
529
|
|
|
|
|
|
|
=back |
530
|
|
|
|
|
|
|
|
531
|
|
|
|
|
|
|
=cut |
532
|
|
|
|
|
|
|
|
533
|
|
|
|
|
|
|
1; |
534
|
|
|
|
|
|
|
|