1 /*
2  * Copyright (C) 2006, 2007, 2008, 2009 Winfried Koehler
3  * Copyright (C) 2014 Akihiro Tsukada
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU Lesser General Public License as published by
7  * the Free Software Foundation version 2.1 of the License.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with this program. if not, see <http://www.gnu.org/licenses/>.
16  *
17  */
18 
19 /**
20  * @file countries.h
21  * @ingroup ancillary
22  * @brief Provides ancillary code to convert ISO 3166-1 country codes
23  * @copyright GNU Lesser General Public License version 2.1 (LGPLv2.1)
24  * @author Winfried Koehler
25  * @author Akihiro Tsukada
26  *
27  * @par Bug Report
28  * Please submit bug reports and patches to linux-media@vger.kernel.org
29  */
30 
31 #ifndef _COUNTRIES_H_
32 #define _COUNTRIES_H_
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
38 /**
39  * @enum dvb_country_t
40  * @brief ISO-3166-1 alpha-2 country code
41  * @ingroup ancillary
42  *
43  * @var COUNTRY_UNKNOWN
44  *	@brief (Unknown Country)
45  * @var AD
46  *	@brief Andorra
47  * @var AE
48  *	@brief United Arab Emirates
49  * @var AF
50  *	@brief Afghanistan
51  * @var AG
52  *	@brief Antigua and Barbuda
53  * @var AI
54  *	@brief Anguilla
55  * @var AL
56  *	@brief Albania
57  * @var AM
58  *	@brief Armenia
59  * @var AO
60  *	@brief Angola
61  * @var AQ
62  *	@brief Antarctica
63  * @var AR
64  *	@brief Argentina
65  * @var AS
66  *	@brief American Samoa
67  * @var AT
68  *	@brief Austria
69  * @var AU
70  *	@brief Australia
71  * @var AW
72  *	@brief Aruba
73  * @var AX
74  *	@brief Aland Islands
75  * @var AZ
76  *	@brief Azerbaijan
77  * @var BA
78  *	@brief Bosnia and Herzegovina
79  * @var BB
80  *	@brief Barbados
81  * @var BD
82  *	@brief Bangladesh
83  * @var BE
84  *	@brief Belgium
85  * @var BF
86  *	@brief Burkina Faso
87  * @var BG
88  *	@brief Bulgaria
89  * @var BH
90  *	@brief Bahrain
91  * @var BI
92  *	@brief Burundi
93  * @var BJ
94  *	@brief Benin
95  * @var BL
96  *	@brief Saint Barthelemy
97  * @var BM
98  *	@brief Bermuda
99  * @var BN
100  *	@brief Brunei Darussalam
101  * @var BO
102  *	@brief Plurinational State of Bolivia
103  * @var BQ
104  *	@brief Bonaire, Saint Eustatius and Saba
105  * @var BR
106  *	@brief Brazil
107  * @var BS
108  *	@brief Bahamas
109  * @var BT
110  *	@brief Bhutan
111  * @var BV
112  *	@brief Bouvet Island
113  * @var BW
114  *	@brief Botswana
115  * @var BY
116  *	@brief Belarus
117  * @var BZ
118  *	@brief Belize
119  * @var CA
120  *	@brief Canada
121  * @var CC
122  *	@brief Cocos (Keeling) Islands
123  * @var CD
124  *	@brief The Democratic Republic of the Congo
125  * @var CF
126  *	@brief Central African Republic
127  * @var CG
128  *	@brief Congo
129  * @var CH
130  *	@brief Switzerland
131  * @var CI
132  *	@brief Cote d'Ivoire
133  * @var CK
134  *	@brief Cook Islands
135  * @var CL
136  *	@brief Chile
137  * @var CM
138  *	@brief Cameroon
139  * @var CN
140  *	@brief China
141  * @var CO
142  *	@brief Colombia
143  * @var CR
144  *	@brief Costa Rica
145  * @var CU
146  *	@brief Cuba
147  * @var CV
148  *	@brief Cape Verde
149  * @var CW
150  *	@brief Curacao
151  * @var CX
152  *	@brief Christmas Island
153  * @var CY
154  *	@brief Cyprus
155  * @var CZ
156  *	@brief Czech Republic
157  * @var DE
158  *	@brief Germany
159  * @var DJ
160  *	@brief Djibouti
161  * @var DK
162  *	@brief Denmark
163  * @var DM
164  *	@brief Dominica
165  * @var DO
166  *	@brief Dominican Republic
167  * @var DZ
168  *	@brief Algeria
169  * @var EC
170  *	@brief Ecuador
171  * @var EE
172  *	@brief Estonia
173  * @var EG
174  *	@brief Egypt
175  * @var EH
176  *	@brief Western Sahara
177  * @var ER
178  *	@brief Eritrea
179  * @var ES
180  *	@brief Spain
181  * @var ET
182  *	@brief Ethiopia
183  * @var FI
184  *	@brief Finland
185  * @var FJ
186  *	@brief Fiji
187  * @var FK
188  *	@brief Falkland Islands (Malvinas)
189  * @var FM
190  *	@brief Federated States of Micronesia
191  * @var FO
192  *	@brief Faroe Islands
193  * @var FR
194  *	@brief France
195  * @var GA
196  *	@brief Gabon
197  * @var GB
198  *	@brief United Kingdom
199  * @var GD
200  *	@brief Grenada
201  * @var GE
202  *	@brief Georgia
203  * @var GF
204  *	@brief French Guiana
205  * @var GG
206  *	@brief Guernsey
207  * @var GH
208  *	@brief Ghana
209  * @var GI
210  *	@brief Gibraltar
211  * @var GL
212  *	@brief Greenland
213  * @var GM
214  *	@brief Gambia
215  * @var GN
216  *	@brief Guinea
217  * @var GP
218  *	@brief Guadeloupe
219  * @var GQ
220  *	@brief Equatorial Guinea
221  * @var GR
222  *	@brief Greece
223  * @var GS
224  *	@brief South Georgia and the South Sandwich Islands
225  * @var GT
226  *	@brief Guatemala
227  * @var GU
228  *	@brief Guam
229  * @var GW
230  *	@brief Guinea-Bissau
231  * @var GY
232  *	@brief Guyana
233  * @var HK
234  *	@brief Hong Kong
235  * @var HM
236  *	@brief Heard Island and McDonald Islands
237  * @var HN
238  *	@brief Honduras
239  * @var HR
240  *	@brief Croatia
241  * @var HT
242  *	@brief Haiti
243  * @var HU
244  *	@brief Hungary
245  * @var ID
246  *	@brief Indonesia
247  * @var IE
248  *	@brief Ireland
249  * @var IL
250  *	@brief Israel
251  * @var IM
252  *	@brief Isle of Man
253  * @var IN
254  *	@brief India
255  * @var IO
256  *	@brief British Indian Ocean Territory
257  * @var IQ
258  *	@brief Iraq
259  * @var IR
260  *	@brief Islamic Republic of Iran
261  * @var IS
262  *	@brief Iceland
263  * @var IT
264  *	@brief Italy
265  * @var JE
266  *	@brief Jersey
267  * @var JM
268  *	@brief Jamaica
269  * @var JO
270  *	@brief Jordan
271  * @var JP
272  *	@brief Japan
273  * @var KE
274  *	@brief Kenya
275  * @var KG
276  *	@brief Kyrgyzstan
277  * @var KH
278  *	@brief Cambodia
279  * @var KI
280  *	@brief Kiribati
281  * @var KM
282  *	@brief Comoros
283  * @var KN
284  *	@brief Saint Kitts and Nevis
285  * @var KP
286  *	@brief Democratic People's Republic of Korea
287  * @var KR
288  *	@brief Republic of Korea
289  * @var KW
290  *	@brief Kuwait
291  * @var KY
292  *	@brief Cayman Islands
293  * @var KZ
294  *	@brief Kazakhstan
295  * @var LA
296  *	@brief Lao People's Democratic Republic
297  * @var LB
298  *	@brief Lebanon
299  * @var LC
300  *	@brief Saint Lucia
301  * @var LI
302  *	@brief Liechtenstein
303  * @var LK
304  *	@brief Sri Lanka
305  * @var LR
306  *	@brief Liberia
307  * @var LS
308  *	@brief Lesotho
309  * @var LT
310  *	@brief Lithuania
311  * @var LU
312  *	@brief Luxembourg
313  * @var LV
314  *	@brief Latvia
315  * @var LY
316  *	@brief Libyan Arab Jamahiriya
317  * @var MA
318  *	@brief Morocco
319  * @var MC
320  *	@brief Monaco
321  * @var MD
322  *	@brief Republic of Moldova
323  * @var ME
324  *	@brief Montenegro
325  * @var MF
326  *	@brief Saint Martin (French part)
327  * @var MG
328  *	@brief Madagascar
329  * @var MH
330  *	@brief Marshall Islands
331  * @var MK
332  *	@brief The Former Yugoslav Republic of Macedonia
333  * @var ML
334  *	@brief Mali
335  * @var MM
336  *	@brief Myanmar
337  * @var MN
338  *	@brief Mongolia
339  * @var MO
340  *	@brief Macao
341  * @var MP
342  *	@brief Northern Mariana Islands
343  * @var MQ
344  *	@brief Martinique
345  * @var MR
346  *	@brief Mauritania
347  * @var MS
348  *	@brief Montserrat
349  * @var MT
350  *	@brief Malta
351  * @var MU
352  *	@brief Mauritius
353  * @var MV
354  *	@brief Maldives
355  * @var MW
356  *	@brief Malawi
357  * @var MX
358  *	@brief Mexico
359  * @var MY
360  *	@brief Malaysia
361  * @var MZ
362  *	@brief Mozambique
363  * @var NA
364  *	@brief Namibia
365  * @var NC
366  *	@brief New Caledonia
367  * @var NE
368  *	@brief Niger
369  * @var NF
370  *	@brief Norfolk Island
371  * @var NG
372  *	@brief Nigeria
373  * @var NI
374  *	@brief Nicaragua
375  * @var NL
376  *	@brief Netherlands
377  * @var NO
378  *	@brief Norway
379  * @var NP
380  *	@brief Nepal
381  * @var NR
382  *	@brief Nauru
383  * @var NU
384  *	@brief Niue
385  * @var NZ
386  *	@brief New Zealand
387  * @var OM
388  *	@brief Oman
389  * @var PA
390  *	@brief Panama
391  * @var PE
392  *	@brief Peru
393  * @var PF
394  *	@brief French Polynesia
395  * @var PG
396  *	@brief Papua New Guinea
397  * @var PH
398  *	@brief Philippines
399  * @var PK
400  *	@brief Pakistan
401  * @var PL
402  *	@brief Poland
403  * @var PM
404  *	@brief Saint Pierre and Miquelon
405  * @var PN
406  *	@brief Pitcairn
407  * @var PR
408  *	@brief Puerto Rico
409  * @var PS
410  *	@brief Occupied Palestinian Territory
411  * @var PT
412  *	@brief Portugal
413  * @var PW
414  *	@brief Palau
415  * @var PY
416  *	@brief Paraguay
417  * @var QA
418  *	@brief Qatar
419  * @var RE
420  *	@brief Reunion
421  * @var RO
422  *	@brief Romania
423  * @var RS
424  *	@brief Serbia
425  * @var RU
426  *	@brief Russian Federation
427  * @var RW
428  *	@brief Rwanda
429  * @var SA
430  *	@brief Saudi Arabia
431  * @var SB
432  *	@brief Solomon Islands
433  * @var SC
434  *	@brief Seychelles
435  * @var SD
436  *	@brief Sudan
437  * @var SE
438  *	@brief Sweden
439  * @var SG
440  *	@brief Singapore
441  * @var SH
442  *	@brief Saint Helena, Ascension and Tristan da Cunha
443  * @var SI
444  *	@brief Slovenia
445  * @var SJ
446  *	@brief Svalbard and Jan Mayen
447  * @var SK
448  *	@brief Slovakia
449  * @var SL
450  *	@brief Sierra Leone
451  * @var SM
452  *	@brief San Marino
453  * @var SN
454  *	@brief Senegal
455  * @var SO
456  *	@brief Somalia
457  * @var SR
458  *	@brief Suriname
459  * @var SS
460  *	@brief South Sudan
461  * @var ST
462  *	@brief Sao Tome and Principe
463  * @var SV
464  *	@brief El Salvador
465  * @var SX
466  *	@brief Sint Maarten (Dutch part)
467  * @var SY
468  *	@brief Syrian Arab Republic
469  * @var SZ
470  *	@brief Swaziland
471  * @var TC
472  *	@brief Turks and Caicos Islands
473  * @var TD
474  *	@brief Chad
475  * @var TF
476  *	@brief French Southern Territories
477  * @var TG
478  *	@brief Togo
479  * @var TH
480  *	@brief Thailand
481  * @var TJ
482  *	@brief Tajikistan
483  * @var TK
484  *	@brief Tokelau
485  * @var TL
486  *	@brief Timor-Leste
487  * @var TM
488  *	@brief Turkmenistan
489  * @var TN
490  *	@brief Tunisia
491  * @var TO
492  *	@brief Tonga
493  * @var TR
494  *	@brief Turkey
495  * @var TT
496  *	@brief Trinidad and Tobago
497  * @var TV
498  *	@brief Tuvalu
499  * @var TW
500  *	@brief Taiwan, Province of China
501  * @var TZ
502  *	@brief United Republic of Tanzania
503  * @var UA
504  *	@brief Ukraine
505  * @var UG
506  *	@brief Uganda
507  * @var UM
508  *	@brief United States Minor Outlying Islands
509  * @var US
510  *	@brief United States
511  * @var UY
512  *	@brief Uruguay
513  * @var UZ
514  *	@brief Uzbekistan
515  * @var VA
516  *	@brief Holy See (Vatican City State)
517  * @var VC
518  *	@brief Saint Vincent and The Grenadines
519  * @var VE
520  *	@brief Bolivarian Republic of Venezuela
521  * @var VG
522  *	@brief British Virgin Islands
523  * @var VI
524  *	@brief U.S. Virgin Islands
525  * @var VN
526  *	@brief Viet Nam
527  * @var VU
528  *	@brief Vanuatu
529  * @var WF
530  *	@brief Wallis and Futuna
531  * @var WS
532  *	@brief Samoa
533  * @var YE
534  *	@brief Yemen
535  * @var YT
536  *	@brief Mayotte
537  * @var ZA
538  *	@brief South Africa
539  * @var ZM
540  *	@brief Zambia
541  * @var ZW
542  *	@brief Zimbabwe
543  */
544 enum dvb_country_t {
545     COUNTRY_UNKNOWN,
546 
547     AD,
548     AE,
549     AF,
550     AG,
551     AI,
552     AL,
553     AM,
554     AO,
555     AQ,
556     AR,
557     AS,
558     AT,
559     AU,
560     AW,
561     AX,
562     AZ,
563     BA,
564     BB,
565     BD,
566     BE,
567     BF,
568     BG,
569     BH,
570     BI,
571     BJ,
572     BL,
573     BM,
574     BN,
575     BO,
576     BQ,
577     BR,
578     BS,
579     BT,
580     BV,
581     BW,
582     BY,
583     BZ,
584     CA,
585     CC,
586     CD,
587     CF,
588     CG,
589     CH,
590     CI,
591     CK,
592     CL,
593     CM,
594     CN,
595     CO,
596     CR,
597     CU,
598     CV,
599     CW,
600     CX,
601     CY,
602     CZ,
603     DE,
604     DJ,
605     DK,
606     DM,
607     DO,
608     DZ,
609     EC,
610     EE,
611     EG,
612     EH,
613     ER,
614     ES,
615     ET,
616     FI,
617     FJ,
618     FK,
619     FM,
620     FO,
621     FR,
622     GA,
623     GB,
624     GD,
625     GE,
626     GF,
627     GG,
628     GH,
629     GI,
630     GL,
631     GM,
632     GN,
633     GP,
634     GQ,
635     GR,
636     GS,
637     GT,
638     GU,
639     GW,
640     GY,
641     HK,
642     HM,
643     HN,
644     HR,
645     HT,
646     HU,
647     ID,
648     IE,
649     IL,
650     IM,
651     IN,
652     IO,
653     IQ,
654     IR,
655     IS,
656     IT,
657     JE,
658     JM,
659     JO,
660     JP,
661     KE,
662     KG,
663     KH,
664     KI,
665     KM,
666     KN,
667     KP,
668     KR,
669     KW,
670     KY,
671     KZ,
672     LA,
673     LB,
674     LC,
675     LI,
676     LK,
677     LR,
678     LS,
679     LT,
680     LU,
681     LV,
682     LY,
683     MA,
684     MC,
685     MD,
686     ME,
687     MF,
688     MG,
689     MH,
690     MK,
691     ML,
692     MM,
693     MN,
694     MO,
695     MP,
696     MQ,
697     MR,
698     MS,
699     MT,
700     MU,
701     MV,
702     MW,
703     MX,
704     MY,
705     MZ,
706     NA,
707     NC,
708     NE,
709     NF,
710     NG,
711     NI,
712     NL,
713     NO,
714     NP,
715     NR,
716     NU,
717     NZ,
718     OM,
719     PA,
720     PE,
721     PF,
722     PG,
723     PH,
724     PK,
725     PL,
726     PM,
727     PN,
728     PR,
729     PS,
730     PT,
731     PW,
732     PY,
733     QA,
734     RE,
735     RO,
736     RS,
737     RU,
738     RW,
739     SA,
740     SB,
741     SC,
742     SD,
743     SE,
744     SG,
745     SH,
746     SI,
747     SJ,
748     SK,
749     SL,
750     SM,
751     SN,
752     SO,
753     SR,
754     SS,
755     ST,
756     SV,
757     SX,
758     SY,
759     SZ,
760     TC,
761     TD,
762     TF,
763     TG,
764     TH,
765     TJ,
766     TK,
767     TL,
768     TM,
769     TN,
770     TO,
771     TR,
772     TT,
773     TV,
774     TW,
775     TZ,
776     UA,
777     UG,
778     UM,
779     US,
780     UY,
781     UZ,
782     VA,
783     VC,
784     VE,
785     VG,
786     VI,
787     VN,
788     VU,
789     WF,
790     WS,
791     YE,
792     YT,
793     ZA,
794     ZM,
795     ZW,
796 };
797 
798 /**
799  * @brief Converts an Unix-like 2-letter Country code into enum dvb_country_t
800  * @ingroup ancillary
801  *
802  * @param name	two-letter Country code.
803  *
804  * @return It returns the corresponding enum dvb_country_t ID. If not found,
805  * 		returns COUNTRY_UNKNOWN.
806  */
807 enum dvb_country_t dvb_country_a2_to_id(const char *name);
808 
809 /**
810  * @brief Converts a 3-letter Country code as used by MPEG-TS tables into
811  *	  enum dvb_country_t
812  * @ingroup ancillary
813  *
814  * @param name	three-letter Country code.
815  *
816  * @return It returns the corresponding enum dvb_country_t ID. If not found,
817  * 		returns COUNTRY_UNKNOWN.
818  */
819 enum dvb_country_t dvb_country_a3_to_id(const char *name);
820 
821 /**
822  * @brief Converts an enum dvb_country_t into Unix-like 2-letter Country code
823  * @ingroup ancillary
824  *
825  * @param id	enum dvb_country_t ID.
826  *
827  * @return It returns the 2-letter country code string that corresponts to the
828  *	   Country. If not found, returns NULL.
829  */
830 const char *dvb_country_to_2letters(int id);
831 
832 /**
833  * @brief Converts an enum dvb_country_t into a 3-letter Country code
834  * 	  as used by MPEG-TS tables
835  * @ingroup ancillary
836  *
837  * @param id	enum dvb_country_t ID.
838  *
839  * @return It returns the 3-letter country code string that corresponts to the
840  *	   Country. If not found, returns NULL.
841  */
842 const char *dvb_country_to_3letters(int id);
843 
844 /**
845  * @brief Converts an enum dvb_country_t into a Country name
846  * 	  as used by MPEG-TS tables
847  * @ingroup ancillary
848  *
849  * @param id	enum dvb_country_t ID.
850  *
851  * @return It returns a string with the Country name that corresponts to the
852  *	   country. If not found, returns NULL.
853  */
854 const char *dvb_country_to_name(int id);
855 
856 /**
857  * @brief Guess the country code from the Unix environment variables
858  * @ingroup ancillary
859  *
860  * @return It returns the corresponding enum dvb_country_t ID. If not found,
861  * 		returns COUNTRY_UNKNOWN.
862  */
863 enum dvb_country_t dvb_guess_user_country(void);
864 
865 #ifdef __cplusplus
866 }
867 #endif
868 
869 #endif
870