/******************************************************************************
 *
 * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of version 2 of the GNU General Public License as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
 *
 *
 ******************************************************************************/


#ifndef	__RT_CHANNELPLAN_H__
#define __RT_CHANNELPLAN_H__

typedef enum _RT_CHANNEL_DOMAIN_NEW
{

	//===== Add new channel plan above this line ===============//

	// For new architecture we define different 2G/5G CH area for all country.
	// 2.4 G only
	RT_CHANNEL_DOMAIN_2G_WORLD_5G_NULL				= 0x20,
	RT_CHANNEL_DOMAIN_2G_ETSI1_5G_NULL				= 0x21,
	RT_CHANNEL_DOMAIN_2G_FCC1_5G_NULL				= 0x22,
	RT_CHANNEL_DOMAIN_2G_MKK1_5G_NULL				= 0x23,
	RT_CHANNEL_DOMAIN_2G_ETSI2_5G_NULL				= 0x24,
	// 2.4 G + 5G type 1
	RT_CHANNEL_DOMAIN_2G_FCC1_5G_FCC1				= 0x25,
	RT_CHANNEL_DOMAIN_2G_WORLD_5G_ETSI1				= 0x26,
	//RT_CHANNEL_DOMAIN_2G_WORLD_5G_ETSI1				= 0x27,
	// .....

	RT_CHANNEL_DOMAIN_MAX_NEW,

}RT_CHANNEL_DOMAIN_NEW, *PRT_CHANNEL_DOMAIN_NEW;


#if 0
#define DOMAIN_CODE_2G_WORLD \
        {1,2,3,4,5,6,7,8,9,10,11,12,13}, 13
#define DOMAIN_CODE_2G_ETSI1 \
        {1,2,3,4,5,6,7,8,9,10,11,12,13}, 13
#define DOMAIN_CODE_2G_ETSI2 \
        {1,2,3,4,5,6,7,8,9,10,11}, 11
#define DOMAIN_CODE_2G_FCC1 \
        {1,2,3,4,5,6,7,8,9,10,11,12,13,14}, 14
#define DOMAIN_CODE_2G_MKK1 \
        {10,11,12,13}, 4

#define DOMAIN_CODE_5G_ETSI1 \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140}, 19
#define DOMAIN_CODE_5G_ETSI2 \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140,149,153,157,161,165}, 24
#define DOMAIN_CODE_5G_ETSI3 \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,149,153,157,161,165}, 22
#define DOMAIN_CODE_5G_FCC1 \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140,149,153,157,161,165}, 24
#define DOMAIN_CODE_5G_FCC2 \
        {36,40,44,48,149,153,157,161,165}, 9
#define DOMAIN_CODE_5G_FCC3 \
        {36,40,44,48,52,56,60,64,149,153,157,161,165}, 13
#define DOMAIN_CODE_5G_FCC4 \
        {36,40,44,48,52,56,60,64,149,153,157,161}, 12
#define DOMAIN_CODE_5G_FCC5 \
        {149,153,157,161,165}, 5
#define DOMAIN_CODE_5G_FCC6 \
        {36,40,44,48,52,56,60,64}, 8
#define DOMAIN_CODE_5G_FCC7 \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,136,140,149,153,157,161,165}, 20
#define DOMAIN_CODE_5G_IC1 \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,136,140,149,153,157,161,165}, 20
#define DOMAIN_CODE_5G_KCC1 \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,149,153,157,161,165}, 20
#define DOMAIN_CODE_5G_MKK1 \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140}, 19
#define DOMAIN_CODE_5G_MKK2 \
        {36,40,44,48,52,56,60,64}, 8
#define DOMAIN_CODE_5G_MKK3 \
        {100,104,108,112,116,120,124,128,132,136,140}, 11
#define DOMAIN_CODE_5G_NCC1 \
        {56,60,64,100,104,108,112,116,136,140,149,153,157,161,165}, 24
#define DOMAIN_CODE_5G_NCC2 \
        {56,60,64,149,153,157,161,165}, 8
#define UNDEFINED \
        {0}, 0
#endif

//
//
//
/*

Countries							"Country Abbreviation"	Domain Code					SKU's	Ch# of 20MHz
															2G			5G						Ch# of 40MHz
"Albania阿爾巴尼亞"					AL													Local Test

"Algeria阿爾及利亞"					DZ									CE TCF

"Antigua & Barbuda安提瓜島&巴布達"	AG						2G_WORLD					FCC TCF

"Argentina阿根廷"					AR						2G_WORLD					Local Test

"Armenia亞美尼亞"					AM						2G_WORLD					ETSI

"Aruba阿魯巴島"						AW						2G_WORLD					FCC TCF

"Australia澳洲"						AU						2G_WORLD		5G_ETSI2

"Austria奧地利"						AT						2G_WORLD		5G_ETSI1	CE

"Azerbaijan阿塞拜彊"				AZ						2G_WORLD					CE TCF

"Bahamas巴哈馬"						BS						2G_WORLD

"Barbados巴巴多斯"					BB						2G_WORLD					FCC TCF

"Belgium比利時"						BE						2G_WORLD		5G_ETSI1	CE

"Bermuda百慕達"						BM						2G_WORLD					FCC TCF

"Brazil巴西"						BR						2G_WORLD					Local Test

"Bulgaria保加利亞"					BG						2G_WORLD		5G_ETSI1	CE

"Canada加拿大"						CA						2G_FCC1			5G_FCC7		IC / FCC	IC / FCC

"Cayman Islands開曼群島"			KY						2G_WORLD		5G_ETSI1	CE

"Chile智利"							CL						2G_WORLD					FCC TCF

"China中國"							CN						2G_WORLD		5G_FCC5		信部?【2002】353?

"Columbia哥倫比亞"					CO						2G_WORLD					Voluntary

"Costa Rica哥斯達黎加"				CR						2G_WORLD					FCC TCF

"Cyprus塞浦路斯"					CY						2G_WORLD		5G_ETSI1	CE

"Czech 捷克"						CZ						2G_WORLD		5G_ETSI1	CE

"Denmark丹麥"						DK						2G_WORLD		5G_ETSI1	CE

"Dominican Republic多明尼加共和國"	DO						2G_WORLD					FCC TCF

"Egypt埃及"	EG	2G_WORLD			CE T												CF

"El Salvador薩爾瓦多"				SV						2G_WORLD					Voluntary

"Estonia愛沙尼亞"					EE						2G_WORLD		5G_ETSI1	CE

"Finland芬蘭"						FI						2G_WORLD		5G_ETSI1	CE

"France法國"						FR										5G_E		TSI1	CE

"Germany德國"						DE						2G_WORLD		5G_ETSI1	CE

"Greece 希臘"						GR						2G_WORLD		5G_ETSI1	CE

"Guam關島"							GU						2G_WORLD

"Guatemala瓜地馬拉"					GT						2G_WORLD

"Haiti海地"							HT						2G_WORLD					FCC TCF

"Honduras宏都拉斯"					HN						2G_WORLD					FCC TCF

"Hungary匈牙利"						HU						2G_WORLD		5G_ETSI1	CE

"Iceland冰島"						IS						2G_WORLD		5G_ETSI1	CE

"India印度"							IN						2G_WORLD		5G_FCC3		FCC/CE TCF

"Ireland愛爾蘭"						IE						2G_WORLD		5G_ETSI1	CE

"Israel以色列"						IL										5G_F		CC6	CE TCF

"Italy義大利"						IT						2G_WORLD		5G_ETSI1	CE

"Japan日本"							JP						2G_MKK1			5G_MKK1		MKK	MKK

"Korea韓國"							KR						2G_WORLD		5G_KCC1		KCC	KCC

"Latvia拉脫維亞"					LV						2G_WORLD		5G_ETSI1	CE

"Lithuania立陶宛"					LT						2G_WORLD		5G_ETSI1	CE

"Luxembourg盧森堡"					LU						2G_WORLD		5G_ETSI1	CE

"Malaysia馬來西亞"					MY						2G_WORLD					Local Test

"Malta馬爾他"						MT						2G_WORLD		5G_ETSI1	CE

"Mexico墨西哥"						MX						2G_WORLD		5G_FCC3		Local Test

"Morocco摩洛哥"						MA													CE TCF

"Netherlands荷蘭"					NL						2G_WORLD		5G_ETSI1	CE

"New Zealand紐西蘭"					NZ						2G_WORLD		5G_ETSI2

"Norway挪威"						NO						2G_WORLD		5G_ETSI1	CE

"Panama巴拿馬 "						PA						2G_FCC1						Voluntary

"Philippines菲律賓"					PH						2G_WORLD					FCC TCF

"Poland波蘭"						PL						2G_WORLD		5G_ETSI1	CE

"Portugal葡萄牙"					PT						2G_WORLD		5G_ETSI1	CE

"Romania羅馬尼亞"					RO						2G_WORLD		5G_ETSI1	CE

"Russia俄羅斯"						RU						2G_WORLD		5G_ETSI3	CE TCF

"Saudi Arabia沙地阿拉伯"			SA						2G_WORLD					CE TCF

"Singapore新加坡"					SG						2G_WORLD

"Slovakia斯洛伐克"					SK						2G_WORLD		5G_ETSI1	CE

"Slovenia斯洛維尼亞"				SI						2G_WORLD		5G_ETSI1	CE

"South Africa南非"					ZA						2G_WORLD					CE TCF

"Spain西班牙"						ES										5G_ETSI1	CE

"Sweden瑞典"						SE						2G_WORLD		5G_ETSI1	CE

"Switzerland瑞士"					CH						2G_WORLD		5G_ETSI1	CE

"Taiwan臺灣"						TW						2G_FCC1			5G_NCC1	NCC

"Thailand泰國"						TH						2G_WORLD					FCC/CE TCF

"Turkey土耳其"						TR						2G_WORLD

"Ukraine烏克蘭"						UA						2G_WORLD					Local Test

"United Kingdom英國"				GB						2G_WORLD		5G_ETSI1	CE	ETSI

"United States美國"					US						2G_FCC1			5G_FCC7		FCC	FCC

"Venezuela委內瑞拉"					VE						2G_WORLD		5G_FCC4		FCC TCF

"Vietnam越南"						VN						2G_WORLD					FCC/CE TCF



*/

// Counter abbervation.
typedef enum _RT_COUNTRY_DEFINE_NUM
{
	RT_CTRY_AL,				//	"Albania阿爾巴尼亞"
	RT_CTRY_DZ,             //  "Algeria阿爾及利亞"
	RT_CTRY_AG,             //  "Antigua & Barbuda安提瓜島&巴布達"
	RT_CTRY_AR,             //  "Argentina阿根廷"
	RT_CTRY_AM,             //  "Armenia亞美尼亞"
	RT_CTRY_AW,             //  "Aruba阿魯巴島"
	RT_CTRY_AU,             //  "Australia澳洲"
	RT_CTRY_AT,             //  "Austria奧地利"
	RT_CTRY_AZ,             //  "Azerbaijan阿塞拜彊"
	RT_CTRY_BS,             //  "Bahamas巴哈馬"
	RT_CTRY_BB,             //  "Barbados巴巴多斯"
	RT_CTRY_BE,             //  "Belgium比利時"
	RT_CTRY_BM,             //  "Bermuda百慕達"
	RT_CTRY_BR,             //  "Brazil巴西"
	RT_CTRY_BG,             //  "Bulgaria保加利亞"
	RT_CTRY_CA,             //  "Canada加拿大"
	RT_CTRY_KY,             //  "Cayman Islands開曼群島"
	RT_CTRY_CL,             //  "Chile智利"
	RT_CTRY_CN,             //  "China中國"
	RT_CTRY_CO,             //  "Columbia哥倫比亞"
	RT_CTRY_CR,             //  "Costa Rica哥斯達黎加"
	RT_CTRY_CY,             //  "Cyprus塞浦路斯"
	RT_CTRY_CZ,             //  "Czech 捷克"
	RT_CTRY_DK,             //  "Denmark丹麥"
	RT_CTRY_DO,             //  "Dominican Republic多明尼加共和國"
	RT_CTRY_CE,             //  "Egypt埃及"	EG	2G_WORLD
	RT_CTRY_SV,             //  "El Salvador薩爾瓦多"
	RT_CTRY_EE,             //  "Estonia愛沙尼亞"
	RT_CTRY_FI,             //  "Finland芬蘭"
	RT_CTRY_FR,             //  "France法國"
	RT_CTRY_DE,             //  "Germany德國"
	RT_CTRY_GR,             //  "Greece 希臘"
	RT_CTRY_GU,             //  "Guam關島"
	RT_CTRY_GT,             //  "Guatemala瓜地馬拉"
	RT_CTRY_HT,             //  "Haiti海地"
	RT_CTRY_HN,             //  "Honduras宏都拉斯"
	RT_CTRY_HU,             //  "Hungary匈牙利"
	RT_CTRY_IS,             //  "Iceland冰島"
	RT_CTRY_IN,             //  "India印度"
	RT_CTRY_IE,             //  "Ireland愛爾蘭"
	RT_CTRY_IL,             //  "Israel以色列"
	RT_CTRY_IT,             //  "Italy義大利"
	RT_CTRY_JP,             //  "Japan日本"
	RT_CTRY_KR,             //  "Korea韓國"
	RT_CTRY_LV,             //  "Latvia拉脫維亞"
	RT_CTRY_LT,             //  "Lithuania立陶宛"
	RT_CTRY_LU,             //  "Luxembourg盧森堡"
	RT_CTRY_MY,             //  "Malaysia馬來西亞"
	RT_CTRY_MT,             //  "Malta馬爾他"
	RT_CTRY_MX,             //  "Mexico墨西哥"
	RT_CTRY_MA,             //  "Morocco摩洛哥"
	RT_CTRY_NL,             //  "Netherlands荷蘭"
	RT_CTRY_NZ,             //  "New Zealand紐西蘭"
	RT_CTRY_NO,             //  "Norway挪威"
	RT_CTRY_PA,             //  "Panama巴拿馬 "
	RT_CTRY_PH,             //  "Philippines菲律賓"
	RT_CTRY_PL,             //  "Poland波蘭"
	RT_CTRY_PT,             //  "Portugal葡萄牙"
	RT_CTRY_RO,             //  "Romania羅馬尼亞"
	RT_CTRY_RU,             //  "Russia俄羅斯"
	RT_CTRY_SA,             //  "Saudi Arabia沙地阿拉伯"
	RT_CTRY_SG,             //  "Singapore新加坡"
	RT_CTRY_SK,             //  "Slovakia斯洛伐克"
	RT_CTRY_SI,             //  "Slovenia斯洛維尼亞"
	RT_CTRY_ZA,             //  "South Africa南非"
	RT_CTRY_ES,             //  "Spain西班牙"
	RT_CTRY_SE,             //  "Sweden瑞典"
	RT_CTRY_CH,             //  "Switzerland瑞士"
	RT_CTRY_TW,             //  "Taiwan臺灣"
	RT_CTRY_TH,             //  "Thailand泰國"
	RT_CTRY_TR,             //  "Turkey土耳其"
	RT_CTRY_UA,             //  "Ukraine烏克蘭"
	RT_CTRY_GB,             //  "United Kingdom英國"
	RT_CTRY_US,             //  "United States美國"
	RT_CTRY_VE,             //  "Venezuela委內瑞拉"
	RT_CTRY_VN,             //  "Vietnam越南"
	RT_CTRY_MAX,            //

}RT_COUNTRY_NAME, *PRT_COUNTRY_NAME;

// Scan type including active and passive scan.
typedef enum _RT_SCAN_TYPE_NEW
{
	SCAN_NULL,
	SCAN_ACT,
	SCAN_PAS,
	SCAN_BOTH,
}RT_SCAN_TYPE_NEW, *PRT_SCAN_TYPE_NEW;


// Power table sample.

typedef struct _RT_CHNL_PLAN_LIMIT
{
	u2Byte	Chnl_Start;
	u2Byte	Chnl_end;

	u2Byte	Freq_Start;
	u2Byte	Freq_end;
}RT_CHNL_PLAN_LIMIT, *PRT_CHNL_PLAN_LIMIT;


//
// 2.4G Regulatory Domains
//
typedef enum _RT_REGULATION_DOMAIN_2G
{
	RT_2G_NULL,
	RT_2G_WORLD,
	RT_2G_ETSI1,
	RT_2G_FCC1,
	RT_2G_MKK1,
	RT_2G_ETSI2

}RT_REGULATION_2G, *PRT_REGULATION_2G;


//typedef struct _RT_CHANNEL_BEHAVIOR
//{
//	u1Byte	Chnl;
//	RT_SCAN_TYPE_NEW
//
//}RT_CHANNEL_BEHAVIOR, *PRT_CHANNEL_BEHAVIOR;

//typedef struct _RT_CHANNEL_PLAN_TYPE
//{
//	RT_CHANNEL_BEHAVIOR
//	u1Byte					Chnl_num;
//}RT_CHNL_PLAN_TYPE, *PRT_CHNL_PLAN_TYPE;

//
// 2.4G Channel Number
// Channel definition & number
//
#define CHNL_RT_2G_NULL \
        {0}, 0
#define CHNL_RT_2G_WORLD \
        {1,2,3,4,5,6,7,8,9,10,11,12,13}, 13
#define CHNL_RT_2G_WORLD_TEST \
        {1,2,3,4,5,6,7,8,9,10,11,12,13}, 13

#define CHNL_RT_2G_EFSI1 \
        {1,2,3,4,5,6,7,8,9,10,11,12,13}, 13
#define CHNL_RT_2G_FCC1 \
        {1,2,3,4,5,6,7,8,9,10,11}, 11
#define CHNL_RT_2G_MKK1 \
        {1,2,3,4,5,6,7,8,9,10,11,12,13,14}, 14
#define CHNL_RT_2G_ETSI2 \
        {10,11,12,13}, 4

//
// 2.4G Channel Active or passive scan.
//
#define CHNL_RT_2G_NULL_SCAN_TYPE \
        {SCAN_NULL}
#define CHNL_RT_2G_WORLD_SCAN_TYPE \
        {1,1,1,1,1,1,1,1,1,1,1,0,0}
#define CHNL_RT_2G_EFSI1_SCAN_TYPE \
        {1,1,1,1,1,1,1,1,1,1,1,1,1}
#define CHNL_RT_2G_FCC1_SCAN_TYPE \
        {1,1,1,1,1,1,1,1,1,1,1}
#define CHNL_RT_2G_MKK1_SCAN_TYPE \
        {1,1,1,1,1,1,1,1,1,1,1,1,1,1}
#define CHNL_RT_2G_ETSI2_SCAN_TYPE \
        {1,1,1,1}


//
// 2.4G Band & Frequency Section
// Freqency start & end / band number
//
#define FREQ_RT_2G_NULL \
        {0}, 0
        // Passive scan CH 12, 13
#define FREQ_RT_2G_WORLD \
        {2412, 2472}, 1
#define FREQ_RT_2G_EFSI1 \
        {2412, 2472}, 1
#define FREQ_RT_2G_FCC1 \
        {2412, 2462}, 1
#define FREQ_RT_2G_MKK1 \
        {2412, 2484}, 1
#define FREQ_RT_2G_ETSI2 \
        {2457, 2472}, 1


//
// 5G Regulatory Domains
//
typedef enum _RT_REGULATION_DOMAIN_5G
{
	RT_5G_NULL,
	RT_5G_WORLD,
	RT_5G_ETSI1,
	RT_5G_ETSI2,
	RT_5G_ETSI3,
	RT_5G_FCC1,
	RT_5G_FCC2,
	RT_5G_FCC3,
	RT_5G_FCC4,
	RT_5G_FCC5,
	RT_5G_FCC6,
	RT_5G_FCC7,
	RT_5G_IC1,
	RT_5G_KCC1,
	RT_5G_MKK1,
	RT_5G_MKK2,
	RT_5G_MKK3,
	RT_5G_NCC1,

}RT_REGULATION_5G, *PRT_REGULATION_5G;

//
// 5G Channel Number
//
#define CHNL_RT_5G_NULL \
        {0}, 0
#define CHNL_RT_5G_WORLD \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140}, 19
#define CHNL_RT_5G_ETSI1 \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140,149,153,157,161,165}, 24
#define CHNL_RT_5G_ETSI2 \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,149,153,157,161,165}, 22
#define CHNL_RT_5G_ETSI3 \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140,149,153,157,161,165}, 24
#define CHNL_RT_5G_FCC1 \
        {36,40,44,48,149,153,157,161,165}, 9
#define CHNL_RT_5G_FCC2 \
        {36,40,44,48,52,56,60,64,149,153,157,161,165}, 13
#define CHNL_RT_5G_FCC3 \
        {36,40,44,48,52,56,60,64,149,153,157,161}, 12
#define CHNL_RT_5G_FCC4 \
        {149,153,157,161,165}, 5
#define CHNL_RT_5G_FCC5 \
        {36,40,44,48,52,56,60,64}, 8
#define CHNL_RT_5G_FCC6 \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,136,140,149,153,157,161,165}, 20
#define CHNL_RT_5G_FCC7 \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,136,140,149,153,157,161,165}, 20
#define CHNL_RT_5G_IC1 \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,149,153,157,161,165}, 20
#define CHNL_RT_5G_KCC1 \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140}, 19
#define CHNL_RT_5G_MKK1 \
        {36,40,44,48,52,56,60,64}, 8
#define CHNL_RT_5G_MKK2 \
        {100,104,108,112,116,120,124,128,132,136,140}, 11
#define CHNL_RT_5G_MKK3 \
        {56,60,64,100,104,108,112,116,136,140,149,153,157,161,165}, 24
#define CHNL_RT_5G_NCC1 \
        {56,60,64,149,153,157,161,165}, 8

//
// 5G Channel Active or passive scan.
//
#define CHNL_RT_5G_NULL_SCAN_TYPE \
        {SCAN_NULL}
#define CHNL_RT_5G_WORLD_SCAN_TYPE \
        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
#define CHNL_RT_5G_ETSI1_SCAN_TYPE \
        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
#define CHNL_RT_5G_ETSI2_SCAN_TYPE \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,149,153,157,161,165}, 22
#define CHNL_RT_5G_ETSI3_SCAN_TYPE \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140,149,153,157,161,165}, 24
#define CHNL_RT_5G_FCC1_SCAN_TYPE \
        {36,40,44,48,149,153,157,161,165}, 9
#define CHNL_RT_5G_FCC2_SCAN_TYPE \
        {36,40,44,48,52,56,60,64,149,153,157,161,165}, 13
#define CHNL_RT_5G_FCC3_SCAN_TYPE \
        {36,40,44,48,52,56,60,64,149,153,157,161}, 12
#define CHNL_RT_5G_FCC4_SCAN_TYPE \
        {149,153,157,161,165}, 5
#define CHNL_RT_5G_FCC5_SCAN_TYPE \
        {36,40,44,48,52,56,60,64}, 8
#define CHNL_RT_5G_FCC6_SCAN_TYPE \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,136,140,149,153,157,161,165}, 20
#define CHNL_RT_5G_FCC7_SCAN_TYPE \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,136,140,149,153,157,161,165}, 20
#define CHNL_RT_5G_IC1_SCAN_TYPE \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,149,153,157,161,165}, 20
#define CHNL_RT_5G_KCC1_SCAN_TYPE \
        {36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140}, 19
#define CHNL_RT_5G_MKK1_SCAN_TYPE \
        {36,40,44,48,52,56,60,64}, 8
#define CHNL_RT_5G_MKK2_SCAN_TYPE \
        {100,104,108,112,116,120,124,128,132,136,140}, 11
#define CHNL_RT_5G_MKK3_SCAN_TYPE \
        {56,60,64,100,104,108,112,116,136,140,149,153,157,161,165}, 24
#define CHNL_RT_5G_NCC1_SCAN_TYPE \
        {56,60,64,149,153,157,161,165}, 8

//
// Global Regulation
//
typedef enum _RT_REGULATION_COMMON
{
	RT_WORLD,
	RT_FCC,
	RT_MKK,
	RT_ETSI,
	RT_IC,
	RT_CE,
	RT_NCC,

}RT_REGULATION_CMN, *PRT_REGULATION_CMN;



//
// Special requirement for different regulation domain.
// For internal test or customerize special request.
//
typedef enum _RT_CHNLPLAN_SREQ
{
	RT_SREQ_NA						= 0x0,
	RT_SREQ_2G_ADHOC_11N			= 0x00000001,
	RT_SREQ_2G_ADHOC_11B			= 0x00000002,
	RT_SREQ_2G_ALL_PASS				= 0x00000004,
	RT_SREQ_2G_ALL_ACT				= 0x00000008,
	RT_SREQ_5G_ADHOC_11N			= 0x00000010,
	RT_SREQ_5G_ADHOC_11AC			= 0x00000020,
	RT_SREQ_5G_ALL_PASS				= 0x00000040,
	RT_SREQ_5G_ALL_ACT				= 0x00000080,
	RT_SREQ_C1_PLAN					= 0x00000100,
	RT_SREQ_C2_PLAN					= 0x00000200,
	RT_SREQ_C3_PLAN					= 0x00000400,
	RT_SREQ_C4_PLAN					= 0x00000800,
	RT_SREQ_NFC_ON					= 0x00001000,
	RT_SREQ_MASK					= 0x0000FFFF,   /* Requirements bit mask */

}RT_CHNLPLAN_SREQ, *PRT_CHNLPLAN_SREQ;


//
// RT_COUNTRY_NAME & RT_REGULATION_2G & RT_REGULATION_5G transfer table
//
//
typedef struct _RT_CHANNEL_PLAN_COUNTRY_TRANSFER_TABLE
{
	//
	// Define countery domain and corresponding
	//
	RT_COUNTRY_NAME		Country_Enum;
	char				Country_Name[3];

	//char		Domain_Name[12];
	RT_REGULATION_2G	Domain_2G;

	RT_REGULATION_5G	Domain_5G;

	RT_CHANNEL_DOMAIN	RtChDomain;
	//u1Byte		Country_Area;

}RT_CHNL_CTRY_TBL, *PRT_CHNL_CTRY_TBL;


#define		RT_MAX_CHNL_NUM_2G		13
#define		RT_MAX_CHNL_NUM_5G		44

// Power table sample.

typedef struct _RT_CHNL_PLAN_PWR_LIMIT
{
	u2Byte	Chnl_Start;
	u2Byte	Chnl_end;
	u1Byte	dB_Max;
	u2Byte	mW_Max;
}RT_CHNL_PWR_LIMIT, *PRT_CHNL_PWR_LIMIT;


#define		RT_MAX_BAND_NUM			5

typedef struct _RT_CHANNEL_PLAN_MAXPWR
{
//	STRING_T
	RT_CHNL_PWR_LIMIT	Chnl[RT_MAX_BAND_NUM];
	u1Byte				Band_Useful_Num;


}RT_CHANNEL_PLAN_MAXPWR, *PRT_CHANNEL_PLAN_MAXPWR;


//
// Power By Rate Table.
//



typedef struct _RT_CHANNEL_PLAN_NEW
{
	//
	// Define countery domain and corresponding
	//
	//char		Country_Name[36];
	//u1Byte		Country_Enum;

	//char		Domain_Name[12];


	PRT_CHNL_CTRY_TBL		pCtryTransfer;

	RT_CHANNEL_DOMAIN		RtChDomain;

	RT_REGULATION_2G		Domain_2G;

	RT_REGULATION_5G		Domain_5G;

	RT_REGULATION_CMN		Regulator;

	RT_CHNLPLAN_SREQ		ChnlSreq;

	//RT_CHNL_PLAN_LIMIT		RtChnl;

	u1Byte	Chnl2G[MAX_CHANNEL_NUM];				// CHNL_RT_2G_WORLD
	u1Byte	Len2G;
	u1Byte	Chnl2GScanTp[MAX_CHANNEL_NUM];			// CHNL_RT_2G_WORLD_SCAN_TYPE
	//u1Byte	Freq2G[2];								// FREQ_RT_2G_WORLD

	u1Byte	Chnl5G[MAX_CHANNEL_NUM];
	u1Byte	Len5G;
	u1Byte	Chnl5GScanTp[MAX_CHANNEL_NUM];
	//u1Byte	Freq2G[2];								// FREQ_RT_2G_WORLD

	RT_CHANNEL_PLAN_MAXPWR	ChnlMaxPwr;


}RT_CHANNEL_PLAN_NEW, *PRT_CHANNEL_PLAN_NEW;


#endif	// __RT_CHANNELPLAN_H__
