~ubuntu-branches/ubuntu/natty/w-scan/natty-proposed

« back to all changes in this revision

Viewing changes to .pc/remove-unused-header-to-fix-FTBFS.patch/countries.c

  • Committer: Bazaar Package Importer
  • Author(s): Daniel T Chen
  • Date: 2011-07-24 13:16:33 UTC
  • Revision ID: james.westby@ubuntu.com-20110724131633-59e216sziv0hpjqv
Tags: 20101001-1ubuntu0.2
Remove unused inclusion of <linux/videodev.h> from countries.c,
thereby resolving a FTBFS due to newer kernels not shipping that
file. This change first appeared in upstream version 20110306.
(LP: #815500)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Simple MPEG/DVB parser to achieve network/service information without initial tuning data
 
3
 *
 
4
 * Copyright (C) 2006, 2007, 2008, 2009 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
 * The author can be reached at: handygewinnspiel AT gmx DOT de
 
22
 *
 
23
 * The project's page is http://wirbel.htpc-forum.de/w_scan/index2.html
 
24
 * country.c/h, added 20090101
 
25
 * last update 20091230
 
26
 */
 
27
 
 
28
#include "countries.h"
 
29
#include "scan.h"
 
30
#include <stdio.h>
 
31
#include <string.h>
 
32
#include <unistd.h>
 
33
#include <stdlib.h>
 
34
#include <linux/videodev.h>
 
35
#include <linux/dvb/frontend.h>
 
36
 
 
37
#ifdef VDRVERSNUM
 
38
namespace COUNTRY {
 
39
#endif
 
40
 
 
41
/**************************************************************************************************
 
42
 * FREQUENCY CALCULATION SCHEME:
 
43
 * each frequency used by w_scan is calculated as follows:
 
44
 * 
 
45
 * frequency(channellist, channel, frequency_offset_index) = 
 
46
 *      base_offset(channel, channellist) +
 
47
 *      channel * freq_step(channel, channellist) +
 
48
 *      freq_offset(channel, channellist, frequency_offset_index);
 
49
 *
 
50
 *
 
51
 * - channellist is choosen by user, if not choosen defaults are used.
 
52
 * - channel = 0..133 (might be extended if needed)
 
53
 * - frequency_offset_index = 0 (no offset) -> 1 (pos offset) -> 2 (neg offset)
 
54
 *
 
55
 * if base_offset(channel, channellist) returns -1 this channel will be skipped.
 
56
 * if freq_offset(channel, channellist, frequency_offset_index) returns -1 this offset will be skipped.
 
57
 *
 
58
 * example:
 
59
 * channellist = 4; channel = 12
 
60
 *
 
61
 * base_offset(12, 4) = 142500000
 
62
 * freq_step(12, 4) = 7000000
 
63
 * freq_offset(12, 4, 0) = 0
 
64
 * freq_offset(12, 4, 1) = -1
 
65
 * freq_offset(12, 4, 2) = -1
 
66
 * 
 
67
 * frequency = 142500000 + 12 * 7000000 = 226500000
 
68
 * since freq_offset returns -1 for frequency_offset_index = (1,2) no frequency offset is applied.
 
69
 *
 
70
 * 20090101 -wk
 
71
 **************************************************************************************************/
 
72
 
 
73
 
 
74
 
 
75
/*
 
76
 * User selects a country specific channellist.
 
77
 * therefore we know
 
78
 *      - frontend type DVB or ATSC
 
79
 *      - used frequency list (base_offsets, freq_step)
 
80
 *      - other country-specific things (transmission mode, frequency offsets from center..)
 
81
 * use two letter uppercase for 'country', as defined by ISO 3166-1
 
82
 */
 
83
int choose_country (const char * country,
 
84
                        int * atsc,
 
85
                        int * dvb,
 
86
                        uint16_t * frontend_type,
 
87
                        int * channellist) {
 
88
        verbose("%s atsc%d dvb%d frontend%d\n",
 
89
                country, *atsc, *dvb, *frontend_type);
 
90
        if (strcasecmp(country_to_short_name(txt_to_country(country)), country)) {
 
91
                warning("\n\nCOUNTRY CODE IS NOT DEFINED. FALLING BACK TO \"DE\"\n\n");
 
92
                sleep(10);
 
93
                }
 
94
        info("using settings for %s\n", country_to_full_name(txt_to_country(country)));
 
95
 
 
96
        /*
 
97
         * choose DVB or ATSC frontend type
 
98
         */
 
99
        switch(txt_to_country(country)) {
 
100
                
 
101
                case    AT:     //      AUSTRIA
 
102
                case    BE:     //      BELGIUM
 
103
                case    CH:     //      SWITZERLAND
 
104
                case    CZ:     //      CZECH REPUBLIC
 
105
                case    DE:     //      GERMANY
 
106
                case    DK:     //      DENMARK
 
107
                case    ES:     //      SPAIN
 
108
                case    FR:     //      FRANCE
 
109
                case    FI:     //      FINLAND
 
110
                case    GB:     //      UNITED KINGDOM
 
111
                case    GR:     //      GREECE
 
112
                case    HR:     //      CROATIA 
 
113
                case    HK:     //      HONG KONG
 
114
                case    IS:     //      ICELAND
 
115
                case    IT:     //      ITALY
 
116
                case    LU:     //      LUXEMBOURG
 
117
                case    LV:     //      LATVIA
 
118
                case    NL:     //      NETHERLANDS
 
119
                case    NO:     //      NORWAY
 
120
                case    NZ:     //      NEW ZEALAND
 
121
                case    PL:     //      POLAND
 
122
                case    SE:     //      SWEDEN
 
123
                case    SK:     //      SLOVAKIA
 
124
                case    TW:     //      TAIWAN, DVB-T w. ATSC freq list (thanks for freqlist to mkrufky)
 
125
                case    AU:     //      AUSTRALIA, DVB-T w. 7MHz step
 
126
                        switch(*dvb) {  
 
127
                                case FE_QAM:
 
128
                                        *frontend_type = FE_QAM;
 
129
                                        info("DVB cable\n");
 
130
                                        break;
 
131
                                default:
 
132
                                        *frontend_type = FE_OFDM;
 
133
                                        info("DVB aerial\n");
 
134
                                        break;                     
 
135
                                }
 
136
                        break;
 
137
                
 
138
                case    US:     //      UNITED STATES
 
139
                case    CA:     //      CANADA
 
140
                        *frontend_type = FE_ATSC;
 
141
                        info("ATSC\n");
 
142
                        break;
 
143
                                
 
144
                default:
 
145
                        info("Country identifier %s not defined. Using defaults.\n", country);
 
146
                        return -1;
 
147
                        break;
 
148
                }
 
149
 
 
150
 
 
151
        /*
 
152
         * choose channellist name
 
153
         */
 
154
        switch(txt_to_country(country)) {
 
155
                //**********DVB freq lists*******************************************//
 
156
                case    AT:     //      AUSTRIA
 
157
                case    BE:     //      BELGIUM
 
158
                case    CH:     //      SWITZERLAND
 
159
                case    DE:     //      GERMANY
 
160
                case    DK:     //      DENMARK
 
161
                case    ES:     //      SPAIN
 
162
                case    GR:     //      GREECE
 
163
                case    HR:     //      CROATIA
 
164
                case    HK:     //      HONG KONG
 
165
                case    IS:     //      ICELAND
 
166
                case    IT:     //      ITALY
 
167
                case    LU:     //      LUXEMBOURG
 
168
                case    LV:     //      LATVIA
 
169
                case    NL:     //      NETHERLANDS
 
170
                case    NO:     //      NORWAY
 
171
                case    NZ:     //      NEW ZEALAND
 
172
                case    PL:     //      POLAND
 
173
                case    SE:     //      SWEDEN
 
174
                case    SK:     //      SLOVAKIA        
 
175
                        switch(*dvb) {  
 
176
                                case FE_QAM:
 
177
                                        *channellist = DVBC_QAM;
 
178
                                        info("DVB-C\n");
 
179
                                        break;
 
180
                                default:
 
181
                                        *channellist = DVBT_DE;
 
182
                                        info("DVB-T Europe\n");
 
183
                                        break;                     
 
184
                                }
 
185
                        break;
 
186
                case    CZ:     //      CZECH REPUBLIC
 
187
                case    FI:     //      FINLAND
 
188
                        switch(*dvb) {  
 
189
                                case FE_QAM:
 
190
                                        *channellist = DVBC_FI;
 
191
                                        info("DVB-C FI\n");
 
192
                                        break;
 
193
                                default:
 
194
                                        *channellist = DVBT_DE;
 
195
                                        info("DVB-T Europe\n");
 
196
                                        break;                     
 
197
                                }
 
198
                        break;
 
199
                case    FR:     //      FRANCE
 
200
                        switch(*dvb) {  
 
201
                                case FE_QAM:
 
202
                                        *channellist = DVBC_FR;
 
203
                                        info("DVB-C FR\n");
 
204
                                        break;
 
205
                                default:
 
206
                                        *channellist = DVBT_FR;
 
207
                                        info("DVB-T FR\n");
 
208
                                        break;                     
 
209
                                }
 
210
                        break;
 
211
                case    GB:     //      UNITED KINGDOM
 
212
                        switch(*dvb) {  
 
213
                                case FE_QAM:
 
214
                                        *channellist = DVBC_QAM;
 
215
                                        info("DVB-C\n");
 
216
                                        break;
 
217
                                default:
 
218
                                        *channellist = DVBT_GB;
 
219
                                        info("DVB-T GB\n");
 
220
                                        break;                     
 
221
                                }
 
222
                        break;
 
223
                case    AU:     //      AUSTRALIA
 
224
                        switch(*dvb) {  
 
225
                                case FE_QAM:
 
226
                                        info("cable australia not yet defined.\n");
 
227
                                        break;
 
228
                                default:
 
229
                                        *channellist = DVBT_AU;
 
230
                                        info("DVB-T AU\n");
 
231
                                        break;                     
 
232
                                }
 
233
                        break;
 
234
                //**********ATSC freq lists******************************************// 
 
235
                case    US:     //      UNITED STATES
 
236
                case    CA:     //      CANADA
 
237
                case    TW:     //      TAIWAN, DVB-T w. ATSC freq list 
 
238
                        if (atsc_is_vsb(*atsc)) {
 
239
                                *channellist = ATSC_VSB;
 
240
                                info("VSB US/CA, DVB-T TW\n");
 
241
                                }
 
242
                        if (atsc_is_qam(*atsc)) {
 
243
                                *channellist = ATSC_QAM;
 
244
                                info("QAM US/CA\n");    
 
245
                                }
 
246
                        break;
 
247
                //******************************************************************//  
 
248
                default:
 
249
                        info("Country identifier %s not defined. Using default freq lists.\n", country);
 
250
                        return -1;
 
251
                        break;
 
252
                }
 
253
        return 0; // success            
 
254
}
 
255
 
 
256
/*
 
257
 * return the base offsets for specified channellist and channel.
 
258
 */
 
259
int base_offset(int channel, int channellist) {
 
260
switch (channellist) {
 
261
        case ATSC_QAM: //ATSC cable, US EIA/NCTA Std Cable center freqs + IRC list
 
262
                switch (channel) {
 
263
                        case 02 ... 04:   return   45000000;
 
264
                        case 05 ... 06:   return   49000000;
 
265
                        case 07 ... 13:   return  135000000;
 
266
                        case 14 ... 22:   return   39000000;
 
267
                        case 23 ... 94:   return   81000000;
 
268
                        case 95 ... 99:   return -477000000;
 
269
                        case 100 ... 133: return   51000000;
 
270
                        default:          return SKIP_CHANNEL; 
 
271
                        }
 
272
        case ATSC_VSB: //ATSC terrestrial, US NTSC center freqs
 
273
                switch (channel) {
 
274
                        case 02 ... 04: return   45000000;
 
275
                        case 05 ... 06: return   49000000;
 
276
                        case 07 ... 13: return  135000000;
 
277
                        case 14 ... 69: return  389000000;
 
278
                        default:        return  SKIP_CHANNEL;
 
279
                        }
 
280
        case DVBT_AU: //AUSTRALIA, 7MHz step list
 
281
                switch (channel) {
 
282
                        case 05 ... 12: return  142500000;
 
283
                        case 21 ... 69: return  333500000;
 
284
                        default:        return  SKIP_CHANNEL;
 
285
                        }
 
286
        case DVBT_DE: //GERMANY
 
287
        case DVBT_FR: //FRANCE, +/- offset
 
288
        case DVBT_GB: //UNITED KINGDOM, +/- offset
 
289
                switch (channel) {
 
290
                        case 05 ... 12: return  142500000;
 
291
                        case 21 ... 69: return  306000000;
 
292
                        default:        return  SKIP_CHANNEL;
 
293
                        }
 
294
        case DVBC_QAM: //EUROPE
 
295
                switch (channel) {
 
296
                        case  0 ... 1:  
 
297
                        case  5 ... 12: return   73000000;
 
298
                        case 22 ... 90: return  138000000;
 
299
                        default:        return  SKIP_CHANNEL;
 
300
                        }
 
301
        case DVBC_FI: //FINLAND, QAM128
 
302
                switch (channel) {
 
303
                        case  1 ... 90: return  138000000;
 
304
                        default:        return  SKIP_CHANNEL;
 
305
                        }
 
306
        case DVBC_FR: //FRANCE, needs user response.
 
307
                switch (channel) {
 
308
                        case  1 ... 39: return  107000000;
 
309
                        case 40 ... 89: return  138000000;
 
310
                        default:        return  SKIP_CHANNEL;
 
311
                        }
 
312
        default:
 
313
                fatal("%s: undefined channellist %d\n", __FUNCTION__, channellist);
 
314
                return SKIP_CHANNEL;
 
315
        }
 
316
}
 
317
 
 
318
/*
 
319
 * return the freq step size for specified channellist
 
320
 */
 
321
int freq_step(int channel, int channellist) {
 
322
switch (channellist) {
 
323
        case ATSC_QAM:
 
324
        case ATSC_VSB:  return  6000000; // atsc, 6MHz step
 
325
        case DVBT_AU:           return  7000000; // dvb-t australia, 7MHz step
 
326
        case DVBT_DE:
 
327
        case DVBT_FR:
 
328
        case DVBT_GB:   switch (channel) {// dvb-t europe, 7MHz VHF ch5..12, all other 8MHz
 
329
                                                                        case 05 ... 12: return 7000000;
 
330
                                                                        case 21 ... 69: return 8000000;
 
331
                                                                        default:        return 8000000; // should be never reached.
 
332
                                                                        }
 
333
        case DVBC_QAM:
 
334
        case DVBC_FI:
 
335
        case DVBC_FR:           return  8000000; // dvb-c, 8MHz step
 
336
        default:
 
337
                fatal("%s: undefined channellist %d\n", __FUNCTION__, channellist);
 
338
                return SKIP_CHANNEL;
 
339
        }
 
340
}
 
341
 
 
342
 
 
343
int bandwidth(int channel, int channellist) {
 
344
switch(freq_step(channel, channellist)) {
 
345
        case 8000000:   return BANDWIDTH_8_MHZ;
 
346
        case 7000000:   return BANDWIDTH_7_MHZ;
 
347
        case 6000000:   return BANDWIDTH_6_MHZ;
 
348
        #ifdef BANDWIDTH_5_MHZ
 
349
        //missing in Linux DVB API
 
350
        case 5000000:   return BANDWIDTH_5_MHZ;
 
351
        #endif
 
352
        default:
 
353
                fatal("%s: undefined result\n", __FUNCTION__);
 
354
                return SKIP_CHANNEL;
 
355
        }
 
356
}
 
357
 
 
358
/*
 
359
 * some countries use constant offsets around center frequency.
 
360
 * define them here.
 
361
 */
 
362
int freq_offset(int channel, int channellist, int index) {
 
363
switch (channellist) {
 
364
        case ATSC_QAM:
 
365
                switch (channel) {
 
366
                        case 14 ... 16:
 
367
                        case 25 ... 53:
 
368
                        case 98 ... 99:
 
369
                                switch (index) {
 
370
                                        case NO_OFFSET:         return 0;                       //Incrementally Related Carriers (IRC)
 
371
                                        case POS_OFFSET:        return 12500;   //US EIA/NCTA Standard Cable center frequencies
 
372
                                        default:                return STOP_OFFSET_LOOP;
 
373
                                        }
 
374
                        default: // IRC = standard cable center
 
375
                                switch (index) {
 
376
                                        case NO_OFFSET: return 0;       //center freq
 
377
                                        default:        return STOP_OFFSET_LOOP;
 
378
                                        }
 
379
                        }
 
380
        case DVBT_FR:
 
381
        case DVBT_GB:
 
382
                switch (channel) {
 
383
                        case 05 ... 12: //VHF channels
 
384
                                switch (index) {
 
385
                                        case NO_OFFSET:         return 0;       //no offset
 
386
                                        default:                return STOP_OFFSET_LOOP;
 
387
                                        }
 
388
                        default: //UHF channels
 
389
                                switch (index) {
 
390
                                        case NO_OFFSET:         return 0;                               //center freq
 
391
                                        case POS_OFFSET:        return +167000; //center+offset
 
392
                                        case NEG_OFFSET:        return -167000; //center-offset
 
393
                                        default:                return STOP_OFFSET_LOOP;
 
394
                                        }
 
395
                        }
 
396
        case DVBT_AU:
 
397
                switch (index) {
 
398
                        case NO_OFFSET:         return 0;                               //center freq
 
399
                        case POS_OFFSET:        return +125000; //center+offset
 
400
                        default:                return STOP_OFFSET_LOOP;
 
401
                        }
 
402
        case DVBC_FR:
 
403
                switch (channel) {
 
404
                        case 1 ... 39:
 
405
                                switch (index) {
 
406
                                        case NO_OFFSET:         return 0;                               //center freq
 
407
                                        case POS_OFFSET:        return +125000; //center+offset
 
408
                                        default:                return STOP_OFFSET_LOOP;
 
409
                                        }
 
410
                        case 40 ... 89:
 
411
                        default:
 
412
                                switch (index) {
 
413
                                        case NO_OFFSET:         return 0;
 
414
                                        default:                return STOP_OFFSET_LOOP;
 
415
                                        }
 
416
                        }
 
417
 
 
418
        default:
 
419
                switch (index) {
 
420
                        case NO_OFFSET:         return 0;
 
421
                        default:                return STOP_OFFSET_LOOP;
 
422
                        }
 
423
        }
 
424
}
 
425
 
 
426
 
 
427
/*
 
428
 * DVB-T: default value if transmission mode AUTO
 
429
 * not supported
 
430
 */
 
431
int dvbt_transmission_mode(int channel, int channellist) {
 
432
switch (channellist) {
 
433
        // GB seems to use 8k since 12/2009
 
434
        default:        return TRANSMISSION_MODE_8K;  
 
435
        }
 
436
}
 
437
 
 
438
 
 
439
/*
 
440
 * start/stop values for dvbc qam loop
 
441
 * 0 == QAM_64, 1 == QAM_256, 2 == QAM_128
 
442
 */
 
443
int dvbc_qam_max(int channel, int channellist) {
 
444
switch(channellist) {
 
445
        case DVBC_FI:   return 2; //QAM128
 
446
        case DVBC_FR:
 
447
        case DVBC_QAM:  return 1; //QAM256
 
448
        default:        return 0; //no qam loop
 
449
        }
 
450
}
 
451
 
 
452
        
 
453
int dvbc_qam_min(int channel, int channellist) {
 
454
switch(channellist) {
 
455
        case DVBC_FI:
 
456
        case DVBC_FR:
 
457
        case DVBC_QAM:  return 0; //QAM64
 
458
        default:        return 0; //no qam loop
 
459
        }
 
460
}
 
461
 
 
462
int atsc_is_vsb(int atsc) {
 
463
        return (atsc & ATSC_VSB);
 
464
};
 
465
 
 
466
int atsc_is_qam(int atsc) {
 
467
        return (atsc & ATSC_QAM);
 
468
};
 
469
 
 
470
/* 
 
471
 * two letters constants from ISO 3166-1.
 
472
 * sorted alphabetically by long country name
 
473
 */
 
474
 
 
475
struct cCountry country_list[] = {
 
476
/*- ISO 3166-1 - unique id - long country name */ 
 
477
       {"AF",     AF ,   "AFGHANISTAN"}, 
 
478
       {"AX",     AX ,   "�LAND ISLANDS"},
 
479
       {"AL",     AL ,   "ALBANIA"},
 
480
       {"DZ",     DZ ,   "ALGERIA"},
 
481
       {"AS",     AS ,   "AMERICAN SAMOA"},
 
482
       {"AD",     AD ,   "ANDORRA"},
 
483
       {"AO",     AO ,   "ANGOLA"},
 
484
       {"AI",     AI ,   "ANGUILLA"},
 
485
       {"AQ",     AQ ,   "ANTARCTICA"},
 
486
       {"AG",     AG ,   "ANTIGUA AND BARBUDA"},
 
487
       {"AR",     AR ,   "ARGENTINA"},
 
488
       {"AM",     AM ,   "ARMENIA"},
 
489
       {"AW",     AW ,   "ARUBA"},
 
490
       {"AU",     AU ,   "AUSTRALIA"},
 
491
       {"AT",     AT ,   "AUSTRIA"},
 
492
       {"AZ",     AZ ,   "AZERBAIJAN"},
 
493
       {"BS",     BS ,   "BAHAMAS"},
 
494
       {"BH",     BH ,   "BAHRAIN"},
 
495
       {"BD",     BD ,   "BANGLADESH"},
 
496
       {"BB",     BB ,   "BARBADOS"},
 
497
       {"BY",     BY ,   "BELARUS"},
 
498
       {"BE",     BE ,   "BELGIUM"},
 
499
       {"BZ",     BZ ,   "BELIZE"},
 
500
       {"BJ",     BJ ,   "BENIN"},
 
501
       {"BM",     BM ,   "BERMUDA"},
 
502
       {"BT",     BT ,   "BHUTAN"},
 
503
       {"BO",     BO ,   "BOLIVIA"},
 
504
       {"BA",     BA ,   "BOSNIA AND HERZEGOVINA"},
 
505
       {"BW",     BW ,   "BOTSWANA"},
 
506
       {"BV",     BV ,   "BOUVET ISLAND"},
 
507
       {"BR",     BR ,   "BRAZIL"},
 
508
       {"IO",     IO ,   "BRITISH INDIAN OCEAN TERRITORY"},
 
509
       {"BN",     BN ,   "BRUNEI DARUSSALAM"},
 
510
       {"BG",     BG ,   "BULGARIA"},
 
511
       {"BF",     BF ,   "BURKINA FASO"},
 
512
       {"BI",     BI ,   "BURUNDI"},
 
513
       {"KH",     KH ,   "CAMBODIA"},
 
514
       {"CM",     CM ,   "CAMEROON"},
 
515
       {"CA",     CA ,   "CANADA"},
 
516
       {"CV",     CV ,   "CAPE VERDE"},
 
517
       {"KY",     KY ,   "CAYMAN ISLANDS"},
 
518
       {"CF",     CF ,   "CENTRAL AFRICAN REPUBLIC"},
 
519
       {"TD",     TD ,   "CHAD"},
 
520
       {"CL",     CL ,   "CHILE"},
 
521
       {"CN",     CN ,   "CHINA"},
 
522
       {"CX",     CX ,   "CHRISTMAS ISLAND"},
 
523
       {"CC",     CC ,   "COCOS (KEELING) ISLANDS"},
 
524
       {"CO",     CO ,   "COLOMBIA"},
 
525
       {"KM",     KM ,   "COMOROS"},
 
526
       {"CG",     CG ,   "CONGO"},
 
527
       {"CD",     CD ,   "CONGO, THE DEMOCRATIC REPUBLIC OF THE"},
 
528
       {"CK",     CK ,   "COOK ISLANDS"},
 
529
       {"CR",     CR ,   "COSTA RICA"},
 
530
       {"CI",     CI ,   "C�TE D'IVOIRE"},
 
531
       {"HR",     HR ,   "CROATIA"},
 
532
       {"CU",     CU ,   "CUBA"},
 
533
       {"CY",     CY ,   "CYPRUS"},
 
534
       {"CZ",     CZ ,   "CZECH REPUBLIC"},
 
535
       {"DK",     DK ,   "DENMARK"},
 
536
       {"DJ",     DJ ,   "DJIBOUTI"},
 
537
       {"DM",     DM ,   "DOMINICA"},
 
538
       {"DO",     DO ,   "DOMINICAN REPUBLIC"},
 
539
       {"EC",     EC ,   "ECUADOR"},
 
540
       {"EG",     EG ,   "EGYPT"},
 
541
       {"SV",     SV ,   "EL SALVADOR"},
 
542
       {"GQ",     GQ ,   "EQUATORIAL GUINEA"},
 
543
       {"ER",     ER ,   "ERITREA"},
 
544
       {"EE",     EE ,   "ESTONIA"},
 
545
       {"ET",     ET ,   "ETHIOPIA"},
 
546
       {"FK",     FK ,   "FALKLAND ISLANDS (MALVINAS)"},
 
547
       {"FO",     FO ,   "FAROE ISLANDS"},
 
548
       {"FJ",     FJ ,   "FIJI"},
 
549
       {"FI",     FI ,   "FINLAND"},
 
550
       {"FR",     FR ,   "FRANCE"},
 
551
       {"GF",     GF ,   "FRENCH GUIANA"},
 
552
       {"PF",     PF ,   "FRENCH POLYNESIA"},
 
553
       {"TF",     TF ,   "FRENCH SOUTHERN TERRITORIES"},
 
554
       {"GA",     GA ,   "GABON"},
 
555
       {"GM",     GM ,   "GAMBIA"},
 
556
       {"GE",     GE ,   "GEORGIA"},
 
557
       {"DE",     DE ,   "GERMANY"},
 
558
       {"GH",     GH ,   "GHANA"},
 
559
       {"GI",     GI ,   "GIBRALTAR"},
 
560
       {"GR",     GR ,   "GREECE"},
 
561
       {"GL",     GL ,   "GREENLAND"},
 
562
       {"GD",     GD ,   "GRENADA"},
 
563
       {"GP",     GP ,   "GUADELOUPE"},
 
564
       {"GU",     GU ,   "GUAM"},
 
565
       {"GT",     GT ,   "GUATEMALA"},
 
566
       {"GG",     GG ,   "GUERNSEY"},
 
567
       {"GN",     GN ,   "GUINEA"},
 
568
       {"GW",     GW ,   "GUINEA-BISSAU"},
 
569
       {"GY",     GY ,   "GUYANA"},
 
570
       {"HT",     HT ,   "HAITI"},
 
571
       {"HM",     HM ,   "HEARD ISLAND AND MCDONALD ISLANDS"},
 
572
       {"VA",     VA ,   "HOLY SEE (VATICAN CITY STATE)"},
 
573
       {"HN",     HN ,   "HONDURAS"},
 
574
       {"HK",     HK ,   "HONG KONG"},
 
575
       {"HU",     HU ,   "HUNGARY"},
 
576
       {"IS",     IS ,   "ICELAND"},
 
577
       {"IN",     IN ,   "INDIA"},
 
578
       {"ID",     ID ,   "INDONESIA"},
 
579
       {"IR",     IR ,   "IRAN, ISLAMIC REPUBLIC OF"},
 
580
       {"IQ",     IQ ,   "IRAQ"},
 
581
       {"IE",     IE ,   "IRELAND"},
 
582
       {"IM",     IM ,   "ISLE OF MAN"},
 
583
       {"IL",     IL ,   "ISRAEL"},
 
584
       {"IT",     IT ,   "ITALY"},
 
585
       {"JM",     JM ,   "JAMAICA"},
 
586
       {"JP",     JP ,   "JAPAN"},
 
587
       {"JE",     JE ,   "JERSEY"},
 
588
       {"JO",     JO ,   "JORDAN"},
 
589
       {"KZ",     KZ ,   "KAZAKHSTAN"},
 
590
       {"KE",     KE ,   "KENYA"},
 
591
       {"KI",     KI ,   "KIRIBATI"},
 
592
       {"KP",     KP ,   "KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF"},
 
593
       {"KR",     KR ,   "KOREA, REPUBLIC OF"},
 
594
       {"KW",     KW ,   "KUWAIT"},
 
595
       {"KG",     KG ,   "KYRGYZSTAN"},
 
596
       {"LA",     LA ,   "LAO PEOPLE'S DEMOCRATIC REPUBLIC"},
 
597
       {"LV",     LV ,   "LATVIA"},
 
598
       {"LB",     LB ,   "LEBANON"},
 
599
       {"LS",     LS ,   "LESOTHO"},
 
600
       {"LR",     LR ,   "LIBERIA"},
 
601
       {"LY",     LY ,   "LIBYAN ARAB JAMAHIRIYA"},
 
602
       {"LI",     LI ,   "LIECHTENSTEIN"},
 
603
       {"LT",     LT ,   "LITHUANIA"},
 
604
       {"LU",     LU ,   "LUXEMBOURG"},
 
605
       {"MO",     MO ,   "MACAO"},
 
606
       {"MK",     MK ,   "MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF"},
 
607
       {"MG",     MG ,   "MADAGASCAR"},
 
608
       {"MW",     MW ,   "MALAWI"},
 
609
       {"MY",     MY ,   "MALAYSIA"},
 
610
       {"MV",     MV ,   "MALDIVES"},
 
611
       {"ML",     ML ,   "MALI"},
 
612
       {"MT",     MT ,   "MALTA"},
 
613
       {"MH",     MH ,   "MARSHALL ISLANDS"},
 
614
       {"MQ",     MQ ,   "MARTINIQUE"},
 
615
       {"MR",     MR ,   "MAURITANIA"},
 
616
       {"MU",     MU ,   "MAURITIUS"},
 
617
       {"YT",     YT ,   "MAYOTTE"},
 
618
       {"MX",     MX ,   "MEXICO"},
 
619
       {"FM",     FM ,   "MICRONESIA, FEDERATED STATES OF"},
 
620
       {"MD",     MD ,   "MOLDOVA"},
 
621
       {"MC",     MC ,   "MONACO"},
 
622
       {"MN",     MN ,   "MONGOLIA"},
 
623
       {"ME",     ME ,   "MONTENEGRO"},
 
624
       {"MS",     MS ,   "MONTSERRAT"},
 
625
       {"MA",     MA ,   "MOROCCO"},
 
626
       {"MZ",     MZ ,   "MOZAMBIQUE"},
 
627
       {"MM",     MM ,   "MYANMAR"},
 
628
       {"NA",     NA ,   "NAMIBIA"},
 
629
       {"NR",     NR ,   "NAURU"},
 
630
       {"NP",     NP ,   "NEPAL"},
 
631
       {"NL",     NL ,   "NETHERLANDS"},
 
632
       {"AN",     AN ,   "NETHERLANDS ANTILLES"},
 
633
       {"NC",     NC ,   "NEW CALEDONIA"},
 
634
       {"NZ",     NZ ,   "NEW ZEALAND"},
 
635
       {"NI",     NI ,   "NICARAGUA"},
 
636
       {"NE",     NE ,   "NIGER"},
 
637
       {"NG",     NG ,   "NIGERIA"},
 
638
       {"NU",     NU ,   "NIUE"},
 
639
       {"NF",     NF ,   "NORFOLK ISLAND"},
 
640
       {"MP",     MP ,   "NORTHERN MARIANA ISLANDS"},
 
641
       {"NO",     NO ,   "NORWAY"},
 
642
       {"OM",     OM ,   "OMAN"},
 
643
       {"PK",     PK ,   "PAKISTAN"},
 
644
       {"PW",     PW ,   "PALAU"},
 
645
       {"PS",     PS ,   "PALESTINIAN TERRITORY, OCCUPIED"},
 
646
       {"PA",     PA ,   "PANAMA"},
 
647
       {"PG",     PG ,   "PAPUA NEW GUINEA"},
 
648
       {"PY",     PY ,   "PARAGUAY"},
 
649
       {"PE",     PE ,   "PERU"},
 
650
       {"PH",     PH ,   "PHILIPPINES"},
 
651
       {"PN",     PN ,   "PITCAIRN"},
 
652
       {"PL",     PL ,   "POLAND"},
 
653
       {"PT",     PT ,   "PORTUGAL"},
 
654
       {"PR",     PR ,   "PUERTO RICO"},
 
655
       {"QA",     QA ,   "QATA"},
 
656
       {"RE",     RE ,   "R�UNION"},
 
657
       {"RO",     RO ,   "ROMANIA"},
 
658
       {"RU",     RU ,   "RUSSIAN FEDERATION"},
 
659
       {"RW",     RW ,   "RWANDA"},
 
660
       {"BL",     BL ,   "SAINT BARTH�LEMY"},
 
661
       {"SH",     SH ,   "SAINT HELENA"},
 
662
       {"KN",     KN ,   "SAINT KITTS AND NEVIS"},
 
663
       {"LC",     LC ,   "SAINT LUCIA"},
 
664
       {"MF",     MF ,   "SAINT MARTIN"},
 
665
       {"PM",     PM ,   "SAINT PIERRE AND MIQUELON"},
 
666
       {"VC",     VC ,   "SAINT VINCENT AND THE GRENADINES"},
 
667
       {"WS",     WS ,   "SAMOA"},
 
668
       {"SM",     SM ,   "SAN MARINO"},
 
669
       {"ST",     ST ,   "SAO TOME AND PRINCIPE"},
 
670
       {"SA",     SA ,   "SAUDI ARABIA"},
 
671
       {"SN",     SN ,   "SENEGAL"},
 
672
       {"RS",     RS ,   "SERBIA"},
 
673
       {"SC",     SC ,   "SEYCHELLES"},
 
674
       {"SL",     SL ,   "SIERRA LEONE"},
 
675
       {"SG",     SG ,   "SINGAPORE"},
 
676
       {"SK",     SK ,   "SLOVAKIA"},
 
677
       {"SI",     SI ,   "SLOVENIA"},
 
678
       {"SB",     SB ,   "SOLOMON ISLANDS"},
 
679
       {"SO",     SO ,   "SOMALIA"},
 
680
       {"ZA",     ZA ,   "SOUTH AFRICA"},
 
681
       {"GS",     GS ,   "SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS"},
 
682
       {"ES",     ES ,   "SPAIN"},
 
683
       {"LK",     LK ,   "SRI LANKA"},
 
684
       {"SD",     SD ,   "SUDAN"},
 
685
       {"SR",     SR ,   "SURINAME"},
 
686
       {"SJ",     SJ ,   "SVALBARD AND JAN MAYEN"},
 
687
       {"SZ",     SZ ,   "SWAZILAND"},
 
688
       {"SE",     SE ,   "SWEDEN"},
 
689
       {"CH",     CH ,   "SWITZERLAND"},
 
690
       {"SY",     SY ,   "SYRIAN ARAB REPUBLIC"},
 
691
       {"TW",     TW ,   "TAIWAN"},
 
692
       {"TJ",     TJ ,   "TAJIKISTAN"},
 
693
       {"TZ",     TZ ,   "TANZANIA, UNITED REPUBLIC OF"},
 
694
       {"TH",     TH ,   "THAILAND"},
 
695
       {"TL",     TL ,   "TIMOR-LESTE"},
 
696
       {"TG",     TG ,   "TOGO"},
 
697
       {"TK",     TK ,   "TOKELAU"},
 
698
       {"TO",     TO ,   "TONGA"},
 
699
       {"TT",     TT ,   "TRINIDAD AND TOBAGO"},
 
700
       {"TN",     TN ,   "TUNISIA"},
 
701
       {"TR",     TR ,   "TURKEY"},
 
702
       {"TM",     TM ,   "TURKMENISTAN"},
 
703
       {"TC",     TC ,   "TURKS AND CAICOS ISLANDS"},
 
704
       {"TV",     TV ,   "TUVALU"},
 
705
       {"UG",     UG ,   "UGANDA"},
 
706
       {"UA",     UA ,   "UKRAINE"},
 
707
       {"AE",     AE ,   "UNITED ARAB EMIRATES"},
 
708
       {"GB",     GB ,   "UNITED KINGDOM"},
 
709
       {"US",     US ,   "UNITED STATES"},
 
710
       {"UM",     UM ,   "UNITED STATES MINOR OUTLYING ISLANDS"},
 
711
       {"UY",     UY ,   "URUGUAY"},
 
712
       {"UZ",     UZ ,   "UZBEKISTAN"},
 
713
       {"VU",     VU ,   "VANUATU"},
 
714
       {"VE",     VE ,   "VENEZUELA"},
 
715
       {"VN",     VN ,   "VIET NAM"},
 
716
       {"VG",     VG ,   "VIRGIN ISLANDS, BRITISH"},
 
717
       {"VI",     VI ,   "VIRGIN ISLANDS, U.S."},
 
718
       {"WF",     WF ,   "WALLIS AND FUTUNA"},
 
719
       {"EH",     EH ,   "WESTERN SAHARA"},
 
720
       {"YE",     YE ,   "YEMEN"},
 
721
       {"ZM",     ZM ,   "ZAMBIA"},
 
722
};
 
723
 
 
724
 
 
725
/* convert ISO 3166-1 two-letter constant
 
726
 * to index number
 
727
 */
 
728
int txt_to_country(const char * id) {
 
729
unsigned int i;
 
730
for (i = 0; i < COUNTRY_COUNT(country_list); i++)
 
731
   if (! strcasecmp(id,country_list[i].short_name))
 
732
      return country_list[i].id;
 
733
return DE; // w_scan defaults to DVB-t de_DE
 
734
}
 
735
 
 
736
 
 
737
/* convert index number
 
738
 * to ISO 3166-1 two-letter constant
 
739
 */
 
740
const char * country_to_short_name(int idx) {
 
741
unsigned int i;
 
742
for (i = 0; i < COUNTRY_COUNT(country_list); i++)
 
743
   if (idx == country_list[i].id)
 
744
      return country_list[i].short_name;
 
745
return "DE"; // w_scan defaults to DVB-t de_DE
 
746
}
 
747
 
 
748
/* convert index number
 
749
 * to country name
 
750
 */
 
751
const char * country_to_full_name(int idx) {
 
752
unsigned int i;
 
753
for (i = 0; i < COUNTRY_COUNT(country_list); i++)
 
754
   if (idx == country_list[i].id)
 
755
      return country_list[i].full_name;
 
756
warning("COUNTRY CODE NOT DEFINED. PLEASE RE-CHECK WETHER YOU TYPED CORRECTLY.\n");
 
757
usleep(5000000);
 
758
return "GERMANY"; // w_scan defaults to DVB-t de_DE
 
759
}
 
760
 
 
761
void print_countries(void) {
 
762
unsigned int i;
 
763
for (i = 0; i < COUNTRY_COUNT(country_list); i++)
 
764
        info("\t%s\t\t%s\n", country_list[i].short_name, country_list[i].full_name);
 
765
}
 
766
 
 
767
int country_count() {
 
768
  return COUNTRY_COUNT(country_list);
 
769
}
 
770
 
 
771
#ifdef VDRVERSNUM
 
772
} // end namespace COUNTRY
 
773
#endif