/*
 * Copyright (c) 2011, 2014 The Linux Foundation. All rights reserved.
 *
 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
 *
 *
 * Permission to use, copy, modify, and/or distribute this software for
 * any purpose with or without fee is hereby granted, provided that the
 * above copyright notice and this permission notice appear in all
 * copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 * PERFORMANCE OF THIS SOFTWARE.
 */

/*
 * This file was originally distributed by Qualcomm Atheros, Inc.
 * under proprietary terms before Copyright ownership was assigned
 * to the Linux Foundation.
 */

/*
 * Notifications and licenses are retained for attribution purposes only.
 */
/*
 * Copyright (c) 2002-2006 Sam Leffler, Errno Consulting
 * Copyright (c) 2005-2006 Atheros Communications, Inc.
 * Copyright (c) 2010, Atheros Communications Inc.
 *
 * Redistribution and use in source and binary forms are permitted
 * provided that the following conditions are met:
 * 1. The materials contained herein are unmodified and are used
 *    unmodified.
 * 2. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following NO
 *    ''WARRANTY'' disclaimer below (''Disclaimer''), without
 *    modification.
 * 3. Redistributions in binary form must reproduce at minimum a
 *    disclaimer similar to the Disclaimer below and any redistribution
 *    must be conditioned upon including a substantially similar
 *    Disclaimer requirement for further binary redistribution.
 * 4. Neither the names of the above-listed copyright holders nor the
 *    names of any contributors may be used to endorse or promote
 *    product derived from this software without specific prior written
 *    permission.
 *
 * NO WARRANTY
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT,
 * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE
 * FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGES.
 *
 * This module contains the regulatory domain private structure definitions .
 *
 */

#ifndef REGULATORY_H
#define REGULATORY_H

enum {
	CTRY_DEBUG = 0x1ff,     /* debug country code */
	CTRY_DEFAULT = 0        /* default country code */
};

#define BMLEN 2                 /* Use 2 64 bit uint for channel bitmask */

/*
 * The following table is the master list for all different freqeuncy
 * bands with the complete matrix of all possible flags and settings
 * for each band if it is used in ANY reg domain.
 */

#define DEF_REGDMN              FCC3_FCCA
#define    DEF_DMN_5            FCC1
#define    DEF_DMN_2            FCCA
#define    COUNTRY_ERD_FLAG     0x8000
#define WORLDWIDE_ROAMING_FLAG  0x4000
#define    SUPER_DOMAIN_MASK    0x0fff
#define    COUNTRY_CODE_MASK    0x3fff
#define CF_INTERFERENCE         (CHANNEL_CW_INT | CHANNEL_RADAR_INT)

/*
 * The following describe the bit masks for different passive scan
 * capability/requirements per regdomain.
 */
#define NO_PSCAN    0x0ULL
#define PSCAN_FCC   0x0000000000000001ULL
#define PSCAN_FCC_T 0x0000000000000002ULL
#define PSCAN_ETSI  0x0000000000000004ULL
#define PSCAN_MKK1  0x0000000000000008ULL
#define PSCAN_MKK2  0x0000000000000010ULL
#define PSCAN_MKKA  0x0000000000000020ULL
#define PSCAN_MKKA_G    0x0000000000000040ULL
#define PSCAN_ETSIA 0x0000000000000080ULL
#define PSCAN_ETSIB 0x0000000000000100ULL
#define PSCAN_ETSIC 0x0000000000000200ULL
#define PSCAN_WWR   0x0000000000000400ULL
#define PSCAN_MKKA1 0x0000000000000800ULL
#define PSCAN_MKKA1_G   0x0000000000001000ULL
#define PSCAN_MKKA2 0x0000000000002000ULL
#define PSCAN_MKKA2_G   0x0000000000004000ULL
#define PSCAN_MKK3  0x0000000000008000ULL
#define PSCAN_EXT_CHAN  0x0000000000010000ULL
#define PSCAN_DEFER 0x7FFFFFFFFFFFFFFFULL
#define IS_ECM_CHAN 0x8000000000000000ULL

/* define in ah_eeprom.h */
#define SD_NO_CTL       0xf0
#define NO_CTL          0xff
#define CTL_MODE_M      0x0f
#define CTL_11A         0
#define CTL_11B         1
#define CTL_11G         2
#define CTL_TURBO       3
#define CTL_108G        4
#define CTL_2GHT20      5
#define CTL_5GHT20      6
#define CTL_2GHT40      7
#define CTL_5GHT40      8
#define CTL_5GVHT80     9

#ifndef ATH_NO_5G_SUPPORT
#define REGDMN_MODE_11A_TURBO    REGDMN_MODE_108A
#define CHAN_11A_BMZERO BMZERO,
#define CHAN_11A_BM(_a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l) \
	BM(_a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l),
#else
/* remove 11a channel info if 11a is not supported */
#define CHAN_11A_BMZERO
#define CHAN_11A_BM(_a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l)
#endif
#ifndef ATH_REMOVE_2G_TURBO_RD_TABLE
#define REGDMN_MODE_11G_TURBO    REGDMN_MODE_108G
#define CHAN_TURBO_G_BMZERO BMZERO,
#define CHAN_TURBO_G_BM(_a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l)	\
	BM(_a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l),
#else
/* remove turbo-g channel info if turbo-g is not supported */
#define CHAN_TURBO_G(a, b)
#define CHAN_TURBO_G_BMZERO
#define CHAN_TURBO_G_BM(_a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l)
#endif

#define BMLEN 2                 /* Use 2 64 bit uint for channel bitmask
	                           NB: Must agree with macro below (BM) */
#define BMZERO {(uint64_t) 0, (uint64_t) 0} /* BMLEN zeros */

#ifndef SUPPRESS_SHIFT_WARNING
#define SUPPRESS_SHIFT_WARNING
#endif

/* Suppress MS warning "C4293: 'operator' : shift count negative or too big,
 * undefined behavior"
 * This is safe below because the the operand is properly range-checked, but
 * the compiler can't reason that out before it spits the warning.
 * Using suppress, so the warning can still be enabled globally to catch other
 * incorrect uses.
 */
#define BM(_fa, _fb, _fc, _fd, _fe, _ff, _fg, _fh, _fi, _fj, _fk, _fl) \
	SUPPRESS_SHIFT_WARNING \
	{((((_fa >= 0) && (_fa < 64)) ? (((uint64_t) 1) << _fa) : (uint64_t) 0) | \
	  (((_fb >= 0) && (_fb < 64)) ? (((uint64_t) 1) << _fb) : (uint64_t) 0) | \
	  (((_fc >= 0) && (_fc < 64)) ? (((uint64_t) 1) << _fc) : (uint64_t) 0) | \
	  (((_fd >= 0) && (_fd < 64)) ? (((uint64_t) 1) << _fd) : (uint64_t) 0) | \
	  (((_fe >= 0) && (_fe < 64)) ? (((uint64_t) 1) << _fe) : (uint64_t) 0) | \
	  (((_ff >= 0) && (_ff < 64)) ? (((uint64_t) 1) << _ff) : (uint64_t) 0) | \
	  (((_fg >= 0) && (_fg < 64)) ? (((uint64_t) 1) << _fg) : (uint64_t) 0) | \
	  (((_fh >= 0) && (_fh < 64)) ? (((uint64_t) 1) << _fh) : (uint64_t) 0) | \
	  (((_fi >= 0) && (_fi < 64)) ? (((uint64_t) 1) << _fi) : (uint64_t) 0) | \
	  (((_fj >= 0) && (_fj < 64)) ? (((uint64_t) 1) << _fj) : (uint64_t) 0) | \
	  (((_fk >= 0) && (_fk < 64)) ? (((uint64_t) 1) << _fk) : (uint64_t) 0) | \
	  (((_fl >= 0) && (_fl < 64)) ? (((uint64_t) 1) << _fl) : (uint64_t) 0) ) \
	 ,(((((_fa > 63) && (_fa < 128)) ? (((uint64_t) 1) << (_fa - 64)) : (uint64_t) 0) | \
	    (((_fb > 63) && (_fb < 128)) ? (((uint64_t) 1) << (_fb - 64)) : (uint64_t) 0) | \
	    (((_fc > 63) && (_fc < 128)) ? (((uint64_t) 1) << (_fc - 64)) : (uint64_t) 0) | \
	    (((_fd > 63) && (_fd < 128)) ? (((uint64_t) 1) << (_fd - 64)) : (uint64_t) 0) | \
	    (((_fe > 63) && (_fe < 128)) ? (((uint64_t) 1) << (_fe - 64)) : (uint64_t) 0) | \
	    (((_ff > 63) && (_ff < 128)) ? (((uint64_t) 1) << (_ff - 64)) : (uint64_t) 0) | \
	    (((_fg > 63) && (_fg < 128)) ? (((uint64_t) 1) << (_fg - 64)) : (uint64_t) 0) | \
	    (((_fh > 63) && (_fh < 128)) ? (((uint64_t) 1) << (_fh - 64)) : (uint64_t) 0) | \
	    (((_fi > 63) && (_fi < 128)) ? (((uint64_t) 1) << (_fi - 64)) : (uint64_t) 0) | \
	    (((_fj > 63) && (_fj < 128)) ? (((uint64_t) 1) << (_fj - 64)) : (uint64_t) 0) | \
	    (((_fk > 63) && (_fk < 128)) ? (((uint64_t) 1) << (_fk - 64)) : (uint64_t) 0) | \
	    (((_fl > 63) && (_fl < 128)) ? (((uint64_t) 1) << (_fl - 64)) : (uint64_t) 0)))}

/*
 * THE following table is the mapping of regdomain pairs specified by
 * an 8 bit regdomain value to the individual unitary reg domains
 */

typedef struct reg_dmn_pair_mapping {
	uint16_t regDmnEnum;    /* 16 bit reg domain pair */
	uint16_t regDmn5GHz;    /* 5GHz reg domain */
	uint16_t regDmn2GHz;    /* 2GHz reg domain */
	uint32_t flags5GHz;     /* Requirements flags (AdHoc
	                           disallow, noise floor cal needed,
	                           etc) */
	uint32_t flags2GHz;     /* Requirements flags (AdHoc
	                           disallow, noise floor cal needed,
	                           etc) */
	uint64_t pscanMask;     /* Passive Scan flags which
	                           can override unitary domain
	                           passive scan flags.  This
	                           value is used as a mask on
	                           the unitary flags */
	uint16_t singleCC;      /* Country code of single country if
	                           a one-on-one mapping exists */
} REG_DMN_PAIR_MAPPING;

typedef struct {
	uint16_t countryCode;
	uint16_t regDmnEnum;
	const char *isoName;
	const char *name;
	uint16_t allow11g : 1, allow11aTurbo : 1, allow11gTurbo : 1, allow11ng20 : 1, /* HT-20 allowed in 2GHz? */
		 allow11ng40 : 1, /* HT-40 allowed in 2GHz? */
		 allow11na20 : 1, /* HT-20 allowed in 5GHz? */
		 allow11na40 : 1, /* HT-40 VHT-40 allowed in 5GHz? */
		 allow11na80 : 1; /* VHT-80 allowed in 5GHz */
	uint16_t outdoorChanStart;
} COUNTRY_CODE_TO_ENUM_RD;

typedef struct RegDmnFreqBand {
	uint16_t lowChannel;    /* Low channel center in MHz */
	uint16_t highChannel;   /* High Channel center in MHz */
	uint8_t powerDfs;       /* Max power (dBm) for channel
	                           range when using DFS */
	uint8_t antennaMax;     /* Max allowed antenna gain */
	uint8_t channelBW;      /* Bandwidth of the channel */
	uint8_t channelSep;     /* Channel separation within
	                           the band */
	uint64_t useDfs;        /* Use DFS in the RegDomain
	                           if corresponding bit is set */
	uint64_t usePassScan;   /* Use Passive Scan in the RegDomain
	                           if corresponding bit is set */
	uint8_t regClassId;     /* Regulatory class id */
} REG_DMN_FREQ_BAND;

typedef struct reg_domain {
	uint16_t regDmnEnum;    /* value from EnumRd table */
	uint8_t conformance_test_limit;
	uint64_t dfsMask;       /* DFS bitmask for 5Ghz tables */
	uint64_t pscan;         /* Bitmask for passive scan */
	uint32_t flags;         /* Requirement flags (AdHoc disallow, noise
	                           floor cal needed, etc) */
	uint64_t chan11a[BMLEN];        /* 128 bit bitmask for channel/band selection */
	uint64_t chan11a_turbo[BMLEN];  /* 128 bit bitmask for channel/band select */
	uint64_t chan11a_dyn_turbo[BMLEN];      /* 128 bit mask for chan/band select */

	uint64_t chan11b[BMLEN];        /* 128 bit bitmask for channel/band selection */
	uint64_t chan11g[BMLEN];        /* 128 bit bitmask for channel/band selection */
	uint64_t chan11g_turbo[BMLEN];
} REG_DOMAIN;

struct cmode {
	uint32_t mode;
	uint32_t flags;
};

#define    YES    true
#define    NO    false

/* mapping of old skus to new skus for Japan */
typedef struct {
	uint16_t domain;
	uint16_t newdomain_pre53;       /* pre eeprom version 5.3 */
	uint16_t newdomain_post53;      /* post eeprom version 5.3 */
} JAPAN_SKUMAP;

/* mapping of countrycode to new skus for Japan */
typedef struct {
	uint16_t ccode;
	uint16_t newdomain_pre53;       /* pre eeprom version 5.3 */
	uint16_t newdomain_post53;      /* post eeprom version 5.3 */
} JAPAN_COUNTRYMAP;

/* check rd flags in eeprom for japan */
typedef struct {
	uint16_t freqbandbit;
	uint32_t eepromflagtocheck;
} JAPAN_BANDCHECK;

/* Common mode power table for 5Ghz */
typedef struct {
	uint16_t lchan;
	uint16_t hchan;
	uint8_t pwrlvl;
} COMMON_MODE_POWER;

typedef enum {
	COUNTRY_CODE_SET_BY_CORE,
	COUNTRY_CODE_SET_BY_DRIVER,
	COUNTRY_CODE_SET_BY_USER
} COUNTRY_CODE_SOURCE;

struct regulatory {
	uint32_t reg_domain;
	uint32_t eeprom_rd_ext;
	uint16_t country_code;
	uint8_t alpha2[3];
	uint8_t dfs_region;
	uint8_t ctl_2g;
	uint8_t ctl_5g;
	const void *regpair;
	COUNTRY_CODE_SOURCE cc_src;
	uint32_t reg_flags;
};
/* Multi-Device RegDomain Support */
typedef struct ath_hal_reg_dmn_tables {
	/* regDomainPairs: Map of 8-bit regdomain values to unitary reg domain */
	const REG_DMN_PAIR_MAPPING *regDomainPairs;
	/* allCountries: Master list of freq. bands (flags, settings) */
	const COUNTRY_CODE_TO_ENUM_RD *allCountries;
	/* regDomains: Array of supported reg domains */
	const REG_DOMAIN *regDomains;

	uint16_t regDomainPairsCt;      /* Num reg domain pair entries */
	uint16_t allCountriesCt;        /* Num country entries */
	uint16_t regDomainsCt;  /* Num reg domain entries */
} HAL_REG_DMN_TABLES;

/*
 * Country/Region Codes from MS WINNLS.H
 * Numbering from ISO 3166
 */
/**     @brief country code definitions
 *        - country definition: CTRY_DEBUG
 *            - country string: DB
 *            - country ID: 0
 *        - country definition: CTRY_DEFAULT
 *            - country string: NA
 *            - country ID: 0
 *        - country definition: CTRY_ALBANIA
 *            - country string: AL
 *            - country ID: 8
 *        - country definition: CTRY_ALGERIA
 *            - country string: DZ
 *            - country ID: 12
 *        - country definition: CTRY_ARGENTINA
 *            - country string: AR
 *            - country ID: 32
 *        - country definition: CTRY_ARMENIA
 *            - country string: AM
 *            - country ID: 51
 *        - country definition: CTRY_AUSTRALIA
 *            - country string: AU
 *            - country ID: 36
 *        - country definition: CTRY_AUSTRALIA2
 *            - country string: AU2
 *            - country ID: 5000
 *        - country definition: CTRY_AUSTRIA
 *            - country string: AT
 *            - country ID: 40
 *        - country definition: CTRY_AZERBAIJAN
 *            - country string: AZ
 *            - country ID: 31
 *        - country definition: CTRY_BAHAMAS
 *            - country string: BS
 *            - country ID: 44
 *        - country definition: CTRY_BAHRAIN
 *            - country string: BH
 *            - country ID: 48
 *        - country definition: CTRY_BELARUS
 *            - country string: BY
 *            - country ID: 112
 *        - country definition: CTRY_BELGIUM
 *            - country string: BE
 *            - country ID: 56
 *        - country definition: CTRY_BELIZE
 *            - country string: BZ
 *            - country ID: 84
 *        - country definition: CTRY_BERMUDA
 *            - country string: BM
 *            - country ID: 60
 *        - country definition: CTRY_BOLIVIA
 *            - country string: BO
 *            - country ID: 68
 *        - country definition: CTRY_BOSNIA_HERZEGOWINA
 *            - country string: 70
 *            - country ID: BA
 *        - country definition: CTRY_BRAZIL
 *            - country string: BR
 *            - country ID: 76
 *        - country definition: CTRY_BRUNEI_DARUSSALAM
 *            - country string: BN
 *            - country ID: 96
 *        - country definition: CTRY_BULGARIA
 *            - country string: BG
 *            - country ID: 100
 *        - country definition: CTRY_CANADA
 *            - country string: CA
 *            - country ID: 124
 *        - country definition: CTRY_CANADA2
 *            - country string: CA2
 *            - country ID: 5001
 *        - country definition: CTRY_CHILE
 *            - country string: CL
 *            - country ID: 152
 *        - country definition: CTRY_CHINA
 *            - country string: CN
 *            - country ID: 152
 *        - country definition: CTRY_COLOMBIA
 *            - country string: CO
 *            - country ID: 170
 *        - country definition: CTRY_COSTA_RICA
 *            - country string: CR
 *            - country ID: 191
 *        - country definition: CTRY_CROATIA
 *            - country string: HR
 *            - country ID: 191
 *        - country definition: CTRY_CYPRUS
 *            - country string: CY
 *            - country ID: 196
 *        - country definition: CTRY_CZECH
 *            - country string: CZ
 *            - country ID: 203
 *        - country definition: CTRY_DENMARK
 *            - country string: DK
 *            - country ID: 208
 *        - country definition: CTRY_DOMINICAN_REPUBLIC
 *            - country string: DO
 *            - country ID: 214
 *        - country definition: CTRY_ECUADOR
 *            - country string: EC
 *            - country ID: 218
 *        - country definition: CTRY_EGYPT
 *            - country string: EG
 *            - country ID: 818
 *        - country definition: CTRY_EL_SALVADOR
 *            - country string: SV
 *            - country ID: 222
 *        - country definition: CTRY_ESTONIA
 *            - country string: EE
 *            - country ID: 233
 *        - country definition: CTRY_FAEROE_ISLANDS
 *            - country string: FO
 *            - country ID: 234
 *        - country definition: CTRY_FINLAND
 *            - country string: FI
 *            - country ID: 246
 *        - country definition: CTRY_FRANCE
 *            - country string: FR
 *            - country ID: 250
 *        - country definition: CTRY_FRANCE2
 *            - country string: F2
 *            - country ID: 255
 *        - country definition: CTRY_GEORGIA
 *            - country string: GE
 *            - country ID: 268
 *        - country definition: CTRY_GERMANY
 *            - country string: DE
 *            - country ID: 276
 *        - country definition: CTRY_GREECE
 *            - country string: GR
 *            - country ID: 300
 *        - country definition: CTRY_GUATEMALA
 *            - country string: GT
 *            - country ID: 320
 *        - country definition: CTRY_HONDURAS
 *            - country string: HN
 *            - country ID: 340
 *        - country definition: CTRY_HONG_KONG
 *            - country string: HK
 *            - country ID: 344
 *        - country definition: CTRY_HUNGARY
 *            - country string: HU
 *            - country ID: 348
 *        - country definition: CTRY_ICELAND
 *            - country string: IS
 *            - country ID: 352
 *        - country definition: CTRY_INDIA
 *            - country string: IN
 *            - country ID: 356
 *        - country definition: CTRY_INDONESIA
 *            - country string: ID
 *            - country ID: 360
 *        - country definition: CTRY_IRAN
 *            - country string: IR
 *            - country ID: 364
 *        - country definition: CTRY_IRAQ
 *            - country string: IQ
 *            - country ID: 368
 *        - country definition: CTRY_IRELAND
 *            - country string: IE
 *            - country ID: 372
 *        - country definition: CTRY_ISRAEL
 *            - country string: IL
 *            - country ID: 376
 *        - country definition: CTRY_ITALY
 *            - country string: IT
 *            - country ID: 380
 *        - country definition: CTRY_JAMAICA
 *            - country string: JM
 *            - country ID: 388
 *        - country definition: CTRY_JAPAN
 *            - country string: JP
 *            - country ID: 392
 *        - country definition: CTRY_JAPAN1
 *            - country string: JP1
 *            - country ID: 393
 *        - country definition: CTRY_JAPAN2
 *            - country string: JP2
 *            - country ID: 394
 *        - country definition: CTRY_JAPAN3
 *            - country string: JP3
 *            - country ID: 395
 *        - country definition: CTRY_JAPAN4
 *            - country string: JP4
 *            - country ID: 396
 *        - country definition: CTRY_JAPAN5
 *            - country string: JP5
 *            - country ID: 397
 *        - country definition: CTRY_JAPAN6
 *            - country string: JP6
 *            - country ID: 399
 *        - country definition: CTRY_JAPAN7
 *            - country string: JP7
 *            - country ID: 4007
 *        - country definition: CTRY_JAPAN8
 *            - country string: JP8
 *            - country ID: 4008
 *        - country definition: CTRY_JAPAN9
 *            - country string: JP9
 *            - country ID: 4009
 *        - country definition: CTRY_JAPAN10
 *            - country string: JP10
 *            - country ID: 4010
 *        - country definition: CTRY_JAPAN11
 *            - country string: JP11
 *            - country ID: 4011
 *        - country definition: CTRY_JAPAN12
 *            - country string: JP12
 *            - country ID: 4012
 *        - country definition: CTRY_JAPAN13
 *            - country string: JP13
 *            - country ID: 4013
 *        - country definition: CTRY_JAPAN14
 *            - country string: JP14
 *            - country ID: 4014
 *        - country definition: CTRY_JAPAN15
 *            - country string: JP15
 *            - country ID: 4015
 *        - country definition: CTRY_JAPAN16
 *            - country string: JP16
 *            - country ID: 4016
 *        - country definition: CTRY_JAPAN17
 *            - country string: JP17
 *            - country ID: 4017
 *        - country definition: CTRY_JAPAN18
 *            - country string: JP18
 *            - country ID: 4018
 *        - country definition: CTRY_JAPAN19
 *            - country string: JP19
 *            - country ID: 4019
 *        - country definition: CTRY_JAPAN20
 *            - country string: JP20
 *            - country ID: 4020
 *        - country definition: CTRY_JAPAN21
 *            - country string: JP21
 *            - country ID: 4021
 *        - country definition: CTRY_JAPAN22
 *            - country string: JP22
 *            - country ID: 4022
 *        - country definition: CTRY_JAPAN23
 *            - country string: JP23
 *            - country ID: 4023
 *        - country definition: CTRY_JAPAN24
 *            - country string: JP24
 *            - country ID: 4024
 *        - country definition: CTRY_JAPAN25
 *            - country string: JP25
 *            - country ID: 4025
 *        - country definition: CTRY_JAPAN26
 *            - country string: JP26
 *            - country ID: 4026
 *        - country definition: CTRY_JAPAN27
 *            - country string: JP27
 *            - country ID: 4027
 *        - country definition: CTRY_JAPAN28
 *            - country string: JP28
 *            - country ID: 4028
 *        - country definition: CTRY_JAPAN29
 *            - country string: JP29
 *            - country ID: 4029
 *        - country definition: CTRY_JAPAN30
 *            - country string: JP30
 *            - country ID: 4030
 *        - country definition: CTRY_JAPAN31
 *            - country string: JP31
 *            - country ID: 4031
 *        - country definition: CTRY_JAPAN32
 *            - country string: JP32
 *            - country ID: 4032
 *        - country definition: CTRY_JAPAN33
 *            - country string: JP33
 *            - country ID: 4033
 *        - country definition: CTRY_JAPAN34
 *            - country string: JP34
 *            - country ID: 4034
 *        - country definition: CTRY_JAPAN35
 *            - country string: JP35
 *            - country ID: 4035
 *        - country definition: CTRY_JAPAN36
 *            - country string: JP36
 *            - country ID: 4036
 *        - country definition: CTRY_JAPAN37
 *            - country string: JP37
 *            - country ID: 4037
 *        - country definition: CTRY_JAPAN38
 *            - country string: JP38
 *            - country ID: 4038
 *        - country definition: CTRY_JAPAN39
 *            - country string: JP39
 *            - country ID: 4039
 *        - country definition: CTRY_JAPAN40
 *            - country string: JP40
 *            - country ID: 4040
 *        - country definition: CTRY_JAPAN41
 *            - country string: JP41
 *            - country ID: 4041
 *        - country definition: CTRY_JAPAN42
 *            - country string: JP42
 *            - country ID: 4042
 *        - country definition: CTRY_JAPAN43
 *            - country string: JP43
 *            - country ID: 4043
 *        - country definition: CTRY_JAPAN44
 *            - country string: JP44
 *            - country ID: 4044
 *        - country definition: CTRY_JAPAN45
 *            - country string: JP45
 *            - country ID: 4045
 *        - country definition: CTRY_JAPAN46
 *            - country string: JP46
 *            - country ID: 4046
 *        - country definition: CTRY_JAPAN47
 *            - country string: JP47
 *            - country ID: 4047
 *        - country definition: CTRY_JAPAN48
 *            - country string: JP48
 *            - country ID: 4048
 *        - country definition: CTRY_JAPAN49
 *            - country string: JP49
 *            - country ID: 4049
 *        - country definition: CTRY_JAPAN50
 *            - country string: JP50
 *            - country ID: 4050
 *        - country definition: CTRY_JAPAN51
 *            - country string: JP51
 *            - country ID: 4051
 *        - country definition: CTRY_JAPAN52
 *            - country string: JP52
 *            - country ID: 4052
 *        - country definition: CTRY_JAPAN53
 *            - country string: JP53
 *            - country ID: 4053
 *        - country definition: CTRY_JAPAN54
 *            - country string: JP54
 *            - country ID: 4054
 *        - country definition: CTRY_JAPAN55
 *            - country string: JP55
 *            - country ID: 4055
 *        - country definition: CTRY_JAPAN56
 *            - country string: JP56
 *            - country ID: 4056
 *        - country definition: CTRY_JORDAN
 *            - country string: JO
 *            - country ID: 400
 *        - country definition: CTRY_KAZAKHSTAN
 *            - country string: KZ
 *            - country ID: 398
 *        - country definition: CTRY_KENYA
 *            - country string: KE
 *            - country ID: 404
 *        - country definition: CTRY_KOREA_NORTH
 *            - country string: KP
 *            - country ID: 408
 *        - country definition: CTRY_KOREA_ROC
 *            - country string: KR
 *            - country ID: 410
 *        - country definition: CTRY_KOREA_ROC2
 *            - country string: KR2
 *            - country ID: 411
 *        - country definition: CTRY_KOREA_ROC3
 *            - country string: KR3
 *            - country ID: 412
 *        - country definition: CTRY_KUWAIT
 *            - country string: KW
 *            - country ID: 414
 *        - country definition: CTRY_LATVIA
 *            - country string: LV
 *            - country ID: 428
 *        - country definition: CTRY_LEBANON
 *            - country string: LB
 *            - country ID: 422
 *        - country definition: CTRY_LIBYA
 *            - country string: LY
 *            - country ID: 434
 *        - country definition: CTRY_LIECHTENSTEIN
 *            - country string: LI
 *            - country ID: 438
 *        - country definition: CTRY_LITHUANIA
 *            - country string: LT
 *            - country ID: 440
 *        - country definition: CTRY_LUXEMBOURG
 *            - country string: LU
 *            - country ID: 442
 *        - country definition: CTRY_MACAU
 *            - country string: MO
 *            - country ID: 446
 *        - country definition: CTRY_MACEDONIA
 *            - country string: MK
 *            - country ID: 807
 *        - country definition: CTRY_MALAYSIA
 *            - country string: MY
 *            - country ID: 458
 *        - country definition: CTRY_MALTA
 *            - country string: MT
 *            - country ID: 470
 *        - country definition: CTRY_MAURITIUS
 *            - country string: MU
 *            - country ID: 480
 *        - country definition: CTRY_MEXICO
 *            - country string: MX
 *            - country ID: 484
 *        - country definition: CTRY_MONACO
 *            - country string: MC
 *            - country ID: 492
 *        - country definition: CTRY_MOROCCO
 *            - country string: MA
 *            - country ID: 504
 *        - country definition: CTRY_NETHERLANDS
 *            - country string: NL
 *            - country ID: 528
 *        - country definition: CTRY_NEW_ZEALAND
 *            - country string: NZ
 *            - country ID: 554
 *        - country definition: CTRY_NICARAGUA
 *            - country string: NI
 *            - country ID: 558
 *        - country definition: CTRY_NORWAY
 *            - country string: NO
 *            - country ID: 578
 *        - country definition: CTRY_OMAN
 *            - country string: OM
 *            - country ID: 512
 *        - country definition: CTRY_PAKISTAN
 *            - country string: PK
 *            - country ID: 586
 *        - country definition: CTRY_PANAMA
 *            - country string: PA
 *            - country ID: 591
 *        - country definition: CTRY_PARAGUAY
 *            - country string: PY
 *            - country ID: 600
 *        - country definition: CTRY_PERU
 *            - country string: PE
 *            - country ID: 604
 *        - country definition: CTRY_PHILIPPINES
 *            - country string: PH
 *            - country ID: 608
 *        - country definition: CTRY_POLAND
 *            - country string: PL
 *            - country ID: 616
 *        - country definition: CTRY_PORTUGAL
 *            - country string: PT
 *            - country ID: 620
 *        - country definition: CTRY_PUERTO_RICO
 *            - country string: PR
 *            - country ID: 630
 *        - country definition: CTRY_QATAR
 *            - country string: QA
 *            - country ID: 634
 *        - country definition: CTRY_ROMANIA
 *            - country string: RO
 *            - country ID: 642
 *        - country definition: CTRY_RUSSIA
 *            - country string: RU
 *            - country ID: 643
 *        - country definition: CTRY_SAUDI_ARABIA
 *            - country string: SA
 *            - country ID: 682
 *        - country definition: CTRY_SERBIA
 *            - country string: RS
 *            - country ID: 688
 *        - country definition: CTRY_MONTENEGRO
 *            - country string: ME
 *            - country ID: 499
 *        - country definition: CTRY_SINGAPORE
 *            - country string: SG
 *            - country ID: 702
 *        - country definition: CTRY_SLOVAKIA
 *            - country string: SK
 *            - country ID: 703
 *        - country definition: CTRY_SLOVENIA
 *            - country string: SI
 *            - country ID: 705
 *        - country definition: CTRY_SOUTH_AFRICA
 *            - country string: ZA
 *            - country ID: 710
 *        - country definition: CTRY_SPAIN
 *            - country string: ES
 *            - country ID: 724
 *        - country definition: CTRY_SRI_LANKA
 *            - country string: LK
 *            - country ID: 144
 *        - country definition: CTRY_SWEDEN
 *            - country string: SE
 *            - country ID: 752
 *        - country definition: CTRY_SWITZERLAND
 *            - country string: CH
 *            - country ID: 756
 *        - country definition: CTRY_SYRIA
 *            - country string: SY
 *            - country ID: 760
 *        - country definition: CTRY_TAIWAN
 *            - country string: TW
 *            - country ID: 158
 *        - country definition: CTRY_TANZANIA
 *            - country string: TZ
 *            - country ID: 834
 *        - country definition: CTRY_THAILAND
 *            - country string: TH
 *            - country ID: 764
 *        - country definition: CTRY_TRINIDAD_Y_TOBAGO
 *            - country string: TT
 *            - country ID: 780
 *        - country definition: CTRY_TUNISIA
 *            - country string: TN
 *            - country ID: 788
 *        - country definition: CTRY_TURKEY
 *            - country string: TR
 *            - country ID: 792
 *        - country definition: CTRY_UAE
 *            - country string: AE
 *            - country ID: 784
 *        - country definition: CTRY_UKRAINE
 *            - country string: UA
 *            - country ID: 804
 *        - country definition: CTRY_UNITED_KINGDOM
 *            - country string: GB
 *            - country ID: 826
 *        - country definition: CTRY_UNITED_STATES
 *            - country string: US
 *            - country ID: 840
 *        - country definition: CTRY_UNITED_STATES_FCC49
 *            - country string: US
 *            - country ID: 842
 *        - country definition: CTRY_URUGUAY
 *            - country string: UY
 *            - country ID: 858
 *        - country definition: CTRY_UZBEKISTAN
 *            - country string: UZ
 *            - country ID: 860
 *        - country definition: CTRY_VENEZUELA
 *            - country string: VE
 *            - country ID: 862
 *        - country definition: CTRY_VIET_NAM
 *            - country string: VN
 *            - country ID: 704
 *        - country definition: CTRY_YEMEN
 *            - country string: YE
 *            - country ID: 887
 *        - country definition: CTRY_ZIMBABWE
 *            - country string: ZW
 *            - country ID: 716
 */
enum CountryCode {
	CTRY_ALBANIA = 8,       /* Albania */
	CTRY_ALGERIA = 12,      /* Algeria */
	CTRY_ARGENTINA = 32,    /* Argentina */
	CTRY_ARMENIA = 51,      /* Armenia */
	CTRY_AUSTRALIA = 36,    /* Australia */
	CTRY_AUSTRIA = 40,      /* Austria */
	CTRY_AZERBAIJAN = 31,   /* Azerbaijan */
	CTRY_BAHAMAS = 44,      /* Bahamas */
	CTRY_BAHRAIN = 48,      /* Bahrain */
	CTRY_BANGLADESH = 50,   /* Bangladesh */
	CTRY_BARBADOS = 52,     /* Barbados */
	CTRY_BELARUS = 112,     /* Belarus */
	CTRY_BELGIUM = 56,      /* Belgium */
	CTRY_BELIZE = 84,       /* Belize */
	CTRY_BERMUDA = 60,      /* Berumuda */
	CTRY_BOLIVIA = 68,      /* Bolivia */
	CTRY_BOSNIA_HERZ = 70,  /* Bosnia and Herzegowina */
	CTRY_BRAZIL = 76,       /* Brazil */
	CTRY_BRUNEI_DARUSSALAM = 96,    /* Brunei Darussalam */
	CTRY_BULGARIA = 100,    /* Bulgaria */
	CTRY_CAMBODIA = 116,    /* Cambodia */
	CTRY_CANADA = 124,      /* Canada */
	CTRY_CHILE = 152,       /* Chile */
	CTRY_CHINA = 156,       /* People's Republic of China */
	CTRY_COLOMBIA = 170,    /* Colombia */
	CTRY_COSTA_RICA = 188,  /* Costa Rica */
	CTRY_CROATIA = 191,     /* Croatia */
	CTRY_CYPRUS = 196,
	CTRY_CZECH = 203,       /* Czech Republic */
	CTRY_DENMARK = 208,     /* Denmark */
	CTRY_DOMINICAN_REPUBLIC = 214,  /* Dominican Republic */
	CTRY_ECUADOR = 218,     /* Ecuador */
	CTRY_EGYPT = 818,       /* Egypt */
	CTRY_EL_SALVADOR = 222, /* El Salvador */
	CTRY_ESTONIA = 233,     /* Estonia */
	CTRY_FAEROE_ISLANDS = 234,      /* Faeroe Islands */
	CTRY_FINLAND = 246,     /* Finland */
	CTRY_FRANCE = 250,      /* France */
	CTRY_GEORGIA = 268,     /* Georgia */
	CTRY_GERMANY = 276,     /* Germany */
	CTRY_GREECE = 300,      /* Greece */
	CTRY_GREENLAND = 304,   /* Greenland */
	CTRY_GRENADA = 308,     /* Grenada */
	CTRY_GUAM = 316,        /* Guam */
	CTRY_GUATEMALA = 320,   /* Guatemala */
	CTRY_HAITI = 332,       /* Haiti */
	CTRY_HONDURAS = 340,    /* Honduras */
	CTRY_HONG_KONG = 344,   /* Hong Kong S.A.R., P.R.C. */
	CTRY_HUNGARY = 348,     /* Hungary */
	CTRY_ICELAND = 352,     /* Iceland */
	CTRY_INDIA = 356,       /* India */
	CTRY_INDONESIA = 360,   /* Indonesia */
	CTRY_IRAN = 364,        /* Iran */
	CTRY_IRAQ = 368,        /* Iraq */
	CTRY_IRELAND = 372,     /* Ireland */
	CTRY_ISRAEL = 376,      /* Israel */
	CTRY_ITALY = 380,       /* Italy */
	CTRY_JAMAICA = 388,     /* Jamaica */
	CTRY_JAPAN = 392,       /* Japan */
	CTRY_JORDAN = 400,      /* Jordan */
	CTRY_KAZAKHSTAN = 398,  /* Kazakhstan */
	CTRY_KENYA = 404,       /* Kenya */
	CTRY_KOREA_NORTH = 408, /* North Korea */
	CTRY_KOREA_ROC = 410,   /* South Korea */
	CTRY_KOREA_ROC3 = 412,  /* South Korea */
	CTRY_KUWAIT = 414,      /* Kuwait */
	CTRY_LATVIA = 428,      /* Latvia */
	CTRY_LEBANON = 422,     /* Lebanon */
	CTRY_LIBYA = 434,       /* Libya */
	CTRY_LIECHTENSTEIN = 438,       /* Liechtenstein */
	CTRY_LITHUANIA = 440,   /* Lithuania */
	CTRY_LUXEMBOURG = 442,  /* Luxembourg */
	CTRY_MACAU = 446,       /* Macau SAR */
	CTRY_MACEDONIA = 807,   /* the Former Yugoslav Republic of Macedonia */
	CTRY_MALAYSIA = 458,    /* Malaysia */
	CTRY_MALDIVES = 462,    /* Maldives */
	CTRY_MALTA = 470,       /* Malta */
	CTRY_MAURITIUS = 480,   /* Mauritius */
	CTRY_MEXICO = 484,      /* Mexico */
	CTRY_MONACO = 492,      /* Principality of Monaco */
	CTRY_MOROCCO = 504,     /* Morocco */
	CTRY_NEPAL = 524,       /* Nepal */
	CTRY_NETHERLANDS = 528, /* Netherlands */
	CTRY_NETHERLANDS_ANTILLES = 530,        /* Netherlands-Antilles */
	CTRY_ARUBA = 533,       /* Aruba */
	CTRY_NEW_ZEALAND = 554, /* New Zealand */
	CTRY_NICARAGUA = 558,   /* Nicaragua */
	CTRY_NORWAY = 578,      /* Norway */
	CTRY_OMAN = 512,        /* Oman */
	CTRY_PAKISTAN = 586,    /* Islamic Republic of Pakistan */
	CTRY_PANAMA = 591,      /* Panama */
	CTRY_PAPUA_NEW_GUINEA = 598,    /* Papua New Guinea */
	CTRY_PARAGUAY = 600,    /* Paraguay */
	CTRY_PERU = 604,        /* Peru */
	CTRY_PHILIPPINES = 608, /* Republic of the Philippines */
	CTRY_POLAND = 616,      /* Poland */
	CTRY_PORTUGAL = 620,    /* Portugal */
	CTRY_PUERTO_RICO = 630, /* Puerto Rico */
	CTRY_QATAR = 634,       /* Qatar */
	CTRY_ROMANIA = 642,     /* Romania */
	CTRY_RUSSIA = 643,      /* Russia */
	CTRY_RWANDA = 646,      /* Rwanda */
	CTRY_SAUDI_ARABIA = 682,        /* Saudi Arabia */
	CTRY_SERBIA = 688,      /* Republic of Serbia */
	CTRY_MONTENEGRO = 499,  /* Montenegro */
	CTRY_SINGAPORE = 702,   /* Singapore */
	CTRY_SLOVAKIA = 703,    /* Slovak Republic */
	CTRY_SLOVENIA = 705,    /* Slovenia */
	CTRY_SOUTH_AFRICA = 710,        /* South Africa */
	CTRY_SPAIN = 724,       /* Spain */
	CTRY_SRI_LANKA = 144,   /* Sri Lanka */
	CTRY_SWEDEN = 752,      /* Sweden */
	CTRY_SWITZERLAND = 756, /* Switzerland */
	CTRY_SYRIA = 760,       /* Syria */
	CTRY_TAIWAN = 158,      /* Taiwan */
	CTRY_TANZANIA = 834,    /* Tanzania */
	CTRY_THAILAND = 764,    /* Thailand */
	CTRY_TRINIDAD_Y_TOBAGO = 780,   /* Trinidad y Tobago */
	CTRY_TUNISIA = 788,     /* Tunisia */
	CTRY_TURKEY = 792,      /* Turkey */
	CTRY_UAE = 784,         /* U.A.E. */
	CTRY_UGANDA = 800,      /* Uganda */
	CTRY_UKRAINE = 804,     /* Ukraine */
	CTRY_UNITED_KINGDOM = 826,      /* United Kingdom */
	CTRY_UNITED_STATES = 840,       /* United States */
	CTRY_UNITED_STATES2 = 841,      /* United States for AP */
	CTRY_UNITED_STATES_FCC49 = 842, /* United States (Public Safety) */
	CTRY_URUGUAY = 858,     /* Uruguay */
	CTRY_UZBEKISTAN = 860,  /* Uzbekistan */
	CTRY_VENEZUELA = 862,   /* Venezuela */
	CTRY_VIET_NAM = 704,    /* Viet Nam */
	CTRY_YEMEN = 887,       /* Yemen */
	CTRY_ZIMBABWE = 716,    /* Zimbabwe */

	/*
	** Japan special codes.  Boy, do they have a lot
	*/

	CTRY_JAPAN1 = 393,      /* Japan (JP1) */
	CTRY_JAPAN2 = 394,      /* Japan (JP0) */
	CTRY_JAPAN3 = 395,      /* Japan (JP1-1) */
	CTRY_JAPAN4 = 396,      /* Japan (JE1) */
	CTRY_JAPAN5 = 397,      /* Japan (JE2) */
	CTRY_JAPAN6 = 4006,     /* Japan (JP6) */
	CTRY_JAPAN7 = 4007,     /* Japan (J7) */
	CTRY_JAPAN8 = 4008,     /* Japan (J8) */
	CTRY_JAPAN9 = 4009,     /* Japan (J9) */
	CTRY_JAPAN10 = 4010,    /* Japan (J10) */
	CTRY_JAPAN11 = 4011,    /* Japan (J11) */
	CTRY_JAPAN12 = 4012,    /* Japan (J12) */
	CTRY_JAPAN13 = 4013,    /* Japan (J13) */
	CTRY_JAPAN14 = 4014,    /* Japan (J14) */
	CTRY_JAPAN15 = 4015,    /* Japan (J15) */
	CTRY_JAPAN16 = 4016,    /* Japan (J16) */
	CTRY_JAPAN17 = 4017,    /* Japan (J17) */
	CTRY_JAPAN18 = 4018,    /* Japan (J18) */
	CTRY_JAPAN19 = 4019,    /* Japan (J19) */
	CTRY_JAPAN20 = 4020,    /* Japan (J20) */
	CTRY_JAPAN21 = 4021,    /* Japan (J21) */
	CTRY_JAPAN22 = 4022,    /* Japan (J22) */
	CTRY_JAPAN23 = 4023,    /* Japan (J23) */
	CTRY_JAPAN24 = 4024,    /* Japan (J24) */
	CTRY_JAPAN25 = 4025,    /* Japan (J25) */
	CTRY_JAPAN26 = 4026,    /* Japan (J26) */
	CTRY_JAPAN27 = 4027,    /* Japan (J27) */
	CTRY_JAPAN28 = 4028,    /* Japan (J28) */
	CTRY_JAPAN29 = 4029,    /* Japan (J29) */
	CTRY_JAPAN30 = 4030,    /* Japan (J30) */
	CTRY_JAPAN31 = 4031,    /* Japan (J31) */
	CTRY_JAPAN32 = 4032,    /* Japan (J32) */
	CTRY_JAPAN33 = 4033,    /* Japan (J33) */
	CTRY_JAPAN34 = 4034,    /* Japan (J34) */
	CTRY_JAPAN35 = 4035,    /* Japan (J35) */
	CTRY_JAPAN36 = 4036,    /* Japan (J36) */
	CTRY_JAPAN37 = 4037,    /* Japan (J37) */
	CTRY_JAPAN38 = 4038,    /* Japan (J38) */
	CTRY_JAPAN39 = 4039,    /* Japan (J39) */
	CTRY_JAPAN40 = 4040,    /* Japan (J40) */
	CTRY_JAPAN41 = 4041,    /* Japan (J41) */
	CTRY_JAPAN42 = 4042,    /* Japan (J42) */
	CTRY_JAPAN43 = 4043,    /* Japan (J43) */
	CTRY_JAPAN44 = 4044,    /* Japan (J44) */
	CTRY_JAPAN45 = 4045,    /* Japan (J45) */
	CTRY_JAPAN46 = 4046,    /* Japan (J46) */
	CTRY_JAPAN47 = 4047,    /* Japan (J47) */
	CTRY_JAPAN48 = 4048,    /* Japan (J48) */
	CTRY_JAPAN49 = 4049,    /* Japan (J49) */
	CTRY_JAPAN50 = 4050,    /* Japan (J50) */
	CTRY_JAPAN51 = 4051,    /* Japan (J51) */
	CTRY_JAPAN52 = 4052,    /* Japan (J52) */
	CTRY_JAPAN53 = 4053,    /* Japan (J53) */
	CTRY_JAPAN54 = 4054,    /* Japan (J54) */
	CTRY_JAPAN55 = 4055,    /* Japan (J55) */
	CTRY_JAPAN56 = 4056,    /* Japan (J56) */
	CTRY_JAPAN57 = 4057,    /* Japan (J57) */
	CTRY_JAPAN58 = 4058,    /* Japan (J58) */
	CTRY_JAPAN59 = 4059,    /* Japan (J59) */

	/*
	** "Special" codes for multiply defined countries, with the exception
	** of Japan and US.
	*/

	CTRY_AUSTRALIA2 = 5000, /* Australia for AP only */
	CTRY_CANADA2 = 5001,    /* Canada for AP only */
	CTRY_BELGIUM2 = 5002    /* Belgium/Cisco implementation */
};

int32_t cds_fill_some_regulatory_info(struct regulatory *reg);
void cds_fill_and_send_ctl_to_fw(struct regulatory *reg);
int32_t cds_get_country_from_alpha2(uint8_t *alpha2);
void cds_fill_send_ctl_info_to_fw(struct regulatory *reg, uint32_t modesAvail,
				  uint32_t modeSelect);
void cds_set_wma_dfs_region(struct regulatory *reg);

#endif /* REGULATORY_H */
