⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.c

📁 Atheros wifi driver source code
💻 C
📖 第 1 页 / 共 3 页
字号:
	{ "APL4_WORLD",	APL4_WORLD },	{ "MKK2_MKKA",	MKK2_MKKA },	{ "APL_RESERVED",	APL_RESERVED },	{ "APL2_WORLD",	APL2_WORLD },	{ "APL2_APLC",	APL2_APLC },	{ "APL3_WORLD",	APL3_WORLD },	{ "MKK1_FCCA",	MKK1_FCCA },	{ "APL2_APLD",	APL2_APLD },	{ "MKK1_MKKA1",	MKK1_MKKA1 },	{ "MKK1_MKKA2",	MKK1_MKKA2 },	{ "APL1_WORLD",	APL1_WORLD },	{ "APL1_FCCA",	APL1_FCCA },	{ "APL1_APLA",	APL1_APLA },	{ "APL1_ETSIC",	APL1_ETSIC },	{ "APL2_ETSIC",	APL2_ETSIC },	{ "APL5_WORLD",	APL5_WORLD },	{ "WOR0_WORLD",	WOR0_WORLD },	{ "WOR1_WORLD",	WOR1_WORLD },	{ "WOR2_WORLD",	WOR2_WORLD },	{ "WOR3_WORLD",	WOR3_WORLD },	{ "WOR4_WORLD",	WOR4_WORLD },	{ "WOR5_ETSIC",	WOR5_ETSIC },	{ "WOR01_WORLD",WOR01_WORLD },	{ "WOR02_WORLD",WOR02_WORLD },	{ "EU1_WORLD",	EU1_WORLD },	{ "APL1",	APL1 },	{ "APL2",	APL2 },	{ "APL3",	APL3 },	{ "APL4",	APL4 },	{ "APL5",	APL5 },	{ "ETSI1",	ETSI1 },	{ "ETSI2",	ETSI2 },	{ "ETSI3",	ETSI3 },	{ "ETSI4",	ETSI4 },	{ "ETSI5",	ETSI5 },	{ "ETSI6",	ETSI6 },	{ "ETSIA",	ETSIA },	{ "ETSIB",	ETSIB },	{ "ETSIC",	ETSIC },	{ "FCC1",	FCC1 },	{ "FCC2",	FCC2 },	{ "FCC3",	FCC3 },	{ "FCCA",	FCCA },	 	{ "APLD",	APLD },	{ "MKK1",	MKK1 },	{ "MKK2",	MKK2 },	{ "MKKA",	MKKA },	{ "NULL1",	NULL1 },	{ "WORLD",	WORLD },	{ "DEBUG_REG_DMN", DEBUG_REG_DMN },};static HAL_BOOLrdlookup(const char *name, u_int8_t *rd){#define	N(a)	(sizeof(a)/sizeof(a[0]))	int i;	for (i = 0; i < N(domains); i++)		if (strcasecmp(domains[i].name, name) == 0) {			*rd = domains[i].rd;			return AH_TRUE;		}	return AH_FALSE;#undef N}static const char *getrdname(HAL_REG_DOMAIN rd){#define	N(a)	(sizeof(a)/sizeof(a[0]))	int i;	for (i = 0; i < N(domains); i++)		if (domains[i].rd == rd)			return domains[i].name;	return NULL;#undef N}static voidrdlist(){#define	N(a)	(sizeof(a)/sizeof(a[0]))	int i;	printf("\nRegulatory domains:\n\n");	for (i = 0; i < N(domains); i++)		printf("%-15s%s", domains[i].name,			((i+1)%5) == 0 ? "\n" : "");	printf("\n");#undef N}typedef struct {	HAL_CTRY_CODE	countryCode;	   	HAL_REG_DOMAIN	regDmnEnum;	const char*	isoName;	const char*	name;	HAL_BOOL	allow11g;	HAL_BOOL	allow11aTurbo;	HAL_BOOL	allow11gTurbo;} COUNTRY_CODE_TO_ENUM_RD; #define	YES	AH_TRUE#define	NO	AH_FALSE/* Index into table to avoid DEBUG and NO COUNTRY SET entries */#define CTRY_ONLY_INDEX 2/* * Country Code Table to Enumerated RD */static const COUNTRY_CODE_TO_ENUM_RD allCountries[] = {    {CTRY_DEBUG,       NO_ENUMRD,     "DB", "DEBUG",      YES, YES, YES    },    {CTRY_DEFAULT,     DEF_REGDMN,    "NA", "NO_COUNTRY_SET", YES, YES, YES },    {CTRY_ALBANIA,     NULL1_WORLD,   "AL", "ALBANIA",    YES, NO, YES     },    {CTRY_ALGERIA,     NULL1_WORLD,   "DZ", "ALGERIA",    YES, NO, YES     },    {CTRY_ARGENTINA,   APL3_WORLD,    "AR", "ARGENTINA",   NO, NO, NO      },    {CTRY_ARMENIA,     ETSI4_WORLD,   "AM", "ARMENIA",    YES, NO, YES     },    {CTRY_AUSTRALIA,   FCC2_WORLD,    "AU", "AUSTRALIA",  YES, YES, YES    },    {CTRY_AUSTRIA,     ETSI5_WORLD,   "AT", "AUSTRIA",    YES, NO, YES     },    {CTRY_AZERBAIJAN,  ETSI4_WORLD,   "AZ", "AZERBAIJAN", YES, YES, YES    },    {CTRY_BAHRAIN,     NULL1_WORLD,   "BH", "BAHRAIN",    YES, NO, YES     },    {CTRY_BELARUS,     NULL1_WORLD,   "BY", "BELARUS",    YES, NO, YES     },    {CTRY_BELGIUM,     ETSI4_WORLD,   "BE", "BELGIUM",    YES, NO, YES     },    {CTRY_BELIZE,      APL1_ETSIC,    "BZ", "BELIZE",     YES, YES, YES    },    {CTRY_BOLIVIA,     APL1_ETSIC,    "BO", "BOLVIA",     YES, YES, YES    },    {CTRY_BRAZIL,      NULL1_ETSIC,   "BR", "BRAZIL",      NO, NO, NO      },    {CTRY_BRUNEI_DARUSSALAM,APL1_WORLD,"BN", "BRUNEI DARUSSALAM", YES, YES, YES },    {CTRY_BULGARIA,    ETSI6_WORLD,   "BG", "BULGARIA",   YES, NO, YES     },    {CTRY_CANADA,      FCC2_FCCA,     "CA", "CANADA",     YES, YES, YES    },    {CTRY_CHILE,       APL5_WORLD,    "CL", "CHILE",      NO,  YES, NO     },    {CTRY_CHINA,       APL1_WORLD,    "CN", "CHINA",      YES, YES, YES    },    {CTRY_COLOMBIA,    FCC1_FCCA,     "CO", "COLOMBIA",   YES, NO, YES     },    {CTRY_COSTA_RICA,  NULL1_WORLD,   "CR", "COSTA RICA", YES, NO, YES     },    {CTRY_CROATIA,     ETSI3_WORLD,   "HR", "CROATIA",    YES, NO, YES     },    {CTRY_CYPRUS,      ETSI1_WORLD,   "CY", "CYPRUS",     YES, YES, YES    },    {CTRY_CZECH,       ETSI3_WORLD,   "CZ", "CZECH REPUBLIC", NO, NO, NO   },    {CTRY_DENMARK,     ETSI1_WORLD,   "DK", "DENMARK",    YES, NO, YES     },    {CTRY_DOMINICAN_REPUBLIC,FCC1_FCCA,"DO", "DOMINICAN REPUBLIC", YES, YES, YES },    {CTRY_ECUADOR,     NULL1_WORLD,   "EC", "ECUADOR",     NO, NO,NO       },    {CTRY_EGYPT,       NULL1_WORLD,   "EG", "EGYPT",      YES, NO, YES     },    {CTRY_EL_SALVADOR, NULL1_WORLD,   "SV", "EL SALVADOR",YES, NO, YES     },        {CTRY_ESTONIA,     ETSI1_WORLD,   "EE", "ESTONIA",    YES, NO, YES     },    {CTRY_FINLAND,     ETSI1_WORLD,   "FI", "FINLAND",    YES, NO, YES     },    {CTRY_FRANCE,      ETSI3_WORLD,   "FR", "FRANCE",     YES, NO, YES     },    {CTRY_FRANCE2,     ETSI3_WORLD,   "F2", "FRANCE_RES", YES, NO, YES     },    {CTRY_GEORGIA,     ETSI4_WORLD,   "GE", "GEORGIA",    YES, YES, YES    },    {CTRY_GERMANY,     ETSI1_WORLD,   "DE", "GERMANY",    YES, NO, YES     },    {CTRY_GREECE,      NULL1_WORLD,   "GR", "GREECE",     YES, NO, YES     },    {CTRY_GUATEMALA,   FCC1_FCCA,     "GT", "GUATEMALA",  YES, YES, YES    },    {CTRY_HONDURAS,    NULL1_WORLD,   "HN", "HONDURAS",   YES, NO, YES     },    {CTRY_HONG_KONG,   FCC2_WORLD,    "HK", "HONG KONG",  YES, YES, YES    },    {CTRY_HUNGARY,     ETSI2_WORLD,   "HU", "HUNGARY",    YES, NO, YES     },    {CTRY_ICELAND,     ETSI1_WORLD,   "IS", "ICELAND",    YES, NO, YES     },    {CTRY_INDIA,       NULL1_WORLD,   "IN", "INDIA",      YES, NO, YES     },    {CTRY_INDONESIA,   NULL1_WORLD,   "ID", "INDONESIA",  YES, NO, YES     },    {CTRY_IRAN,        APL1_WORLD,    "IR", "IRAN",       YES, YES, YES    },    {CTRY_IRELAND,     ETSI1_WORLD,   "IE", "IRELAND",    YES, NO, YES     },    {CTRY_ISRAEL,      NULL1_WORLD,   "IL", "ISRAEL",     YES, NO, YES     },    {CTRY_ITALY,       ETSI1_WORLD,   "IT", "ITALY",      YES, NO, YES     },    {CTRY_JAPAN,       MKK1_MKKA,     "JP", "JAPAN",      YES, NO, NO      },    {CTRY_JAPAN1,      MKK1_MKKB,     "J1", "JAPAN1",     YES, NO, NO      },    {CTRY_JAPAN2,      MKK1_FCCA,     "J2", "JAPAN2",     YES, NO, NO      },        {CTRY_JAPAN3,      MKK2_MKKA,     "J3", "JAPAN3",     YES, NO, NO      },    {CTRY_JAPAN4,      MKK1_MKKA1,    "J4", "JAPAN4",     YES, NO, NO      },    {CTRY_JAPAN5,      MKK1_MKKA2,    "J5", "JAPAN5",     YES, NO, NO      },        {CTRY_JORDAN,      NULL1_WORLD,   "JO", "JORDAN",     YES, NO, YES     },    {CTRY_KAZAKHSTAN,  NULL1_WORLD,   "KZ", "KAZAKHSTAN", YES, NO, YES     },    {CTRY_KOREA_NORTH, APL2_WORLD,    "KP", "NORTH KOREA",YES,YES, YES     },    {CTRY_KOREA_ROC,   APL2_WORLD,    "KR", "KOREA REPUBLIC", YES, NO, NO  },    {CTRY_KOREA_ROC2,  APL2_APLD,     "K2", "KOREA REPUBLIC2", YES, NO, NO },    {CTRY_KUWAIT,      NULL1_WORLD,   "KW", "KUWAIT",     YES, NO, YES     },    {CTRY_LATVIA,      NULL1_WORLD,   "LV", "LATVIA",     YES, NO, YES     },    {CTRY_LEBANON,     NULL1_WORLD,   "LB", "LEBANON",    YES, NO, YES     },    {CTRY_LIECHTENSTEIN,ETSI2_WORLD,  "LI", "LIECHTENSTEIN", YES, NO, YES  },    {CTRY_LITHUANIA,   ETSI1_WORLD,   "LT", "LITHUANIA",  YES, NO, YES     },    {CTRY_LUXEMBOURG,  ETSI1_WORLD,   "LU", "LUXEMBOURG", YES, NO, YES     },    {CTRY_MACAU,       FCC2_WORLD,    "MO", "MACAU",      YES, YES, YES    },    {CTRY_MACEDONIA,   NULL1_WORLD,   "MK", "MACEDONIA",  YES, NO, YES     },    {CTRY_MALAYSIA,    NULL1_WORLD,   "MY", "MALAYSIA",    NO, NO, NO      },    {CTRY_MEXICO,      FCC1_FCCA,     "MX", "MEXICO",     YES, YES, YES    },    {CTRY_MONACO,      ETSI4_WORLD,   "MC", "MONACO",     YES, YES, YES    },    {CTRY_MOROCCO,     NULL1_WORLD,   "MA", "MOROCCO",    YES, NO, YES     },    {CTRY_NETHERLANDS, ETSI1_WORLD,   "NL", "NETHERLANDS",YES, NO, YES     },    {CTRY_NEW_ZEALAND, FCC2_ETSIC,    "NZ", "NEW ZEALAND",YES, NO, YES     },    {CTRY_NORWAY,      ETSI1_WORLD,   "NO", "NORWAY",     YES, NO, YES     },    {CTRY_OMAN,        NULL1_WORLD,   "OM", "OMAN",       YES, NO, YES     },    {CTRY_PAKISTAN,    NULL1_WORLD,   "PK", "PAKISTAN",   YES, NO, YES     },    {CTRY_PANAMA,      FCC1_FCCA,     "PA", "PANAMA",     YES, YES, YES    },    {CTRY_PERU,        NULL1_WORLD,   "PE", "PERU",       YES, NO, YES     },    {CTRY_PHILIPPINES, FCC1_WORLD,    "PH", "PHILIPPINES",YES, YES, YES    },    {CTRY_POLAND,      ETSI1_WORLD,   "PL", "POLAND",     YES, NO, YES     },    {CTRY_PORTUGAL,    ETSI1_WORLD,   "PT", "PORTUGAL",   YES, NO, YES     },    {CTRY_PUERTO_RICO, FCC1_FCCA,     "PR", "PUERTO RICO",YES, YES, YES    },    {CTRY_QATAR,       NULL1_WORLD,   "QA", "QATAR",      YES, NO, YES     },    {CTRY_ROMANIA,     NULL1_WORLD,   "RO", "ROMANIA",    YES, NO, YES     },    {CTRY_RUSSIA,      NULL1_WORLD,   "RU", "RUSSIA",     YES, NO, YES     },    {CTRY_SAUDI_ARABIA,NULL1_WORLD,   "SA", "SAUDI ARABIA", YES, NO, YES   },    {CTRY_SINGAPORE,   APL4_WORLD,    "SG", "SINGAPORE",  YES, YES, YES    },    {CTRY_SLOVAKIA,    ETSI3_WORLD,   "SK", "SLOVAK REPUBLIC", YES, NO, YES },    {CTRY_SLOVENIA,    ETSI1_WORLD,   "SI", "SLOVENIA",   YES, NO, YES     },    {CTRY_SOUTH_AFRICA,ETSI1_WORLD,   "ZA", "SOUTH AFRICA", YES, YES, YES  },    {CTRY_SPAIN,       ETSI1_WORLD,   "ES", "SPAIN",      YES, NO, YES     },    {CTRY_SWEDEN,      ETSI1_WORLD,   "SE", "SWEDEN",     YES, NO, YES     },    {CTRY_SWITZERLAND, ETSI2_WORLD,   "CH", "SWITZERLAND",YES, NO, YES     },    {CTRY_SYRIA,       NULL1_WORLD,   "SY", "SYRIA",      YES, NO, YES     },    {CTRY_TAIWAN,      APL3_WORLD,    "TW", "TAIWAN",     YES, YES, YES    },    {CTRY_THAILAND,    APL2_WORLD,    "TH", "THAILAND",   YES, YES, YES    },    {CTRY_TRINIDAD_Y_TOBAGO,ETSI4_WORLD,"TT", "TRINIDAD & TOBAGO", YES, NO, YES },    {CTRY_TUNISIA,     ETSI3_WORLD,   "TN", "TUNISIA",    YES, NO, YES     },    {CTRY_TURKEY,      ETSI3_WORLD,   "TR", "TURKEY",     YES, NO, YES     },    {CTRY_UKRAINE,     NULL1_WORLD,   "UA", "UKRAINE",    YES, NO, YES     },    {CTRY_UAE,         NULL1_WORLD,   "AE", "UNITED ARAB EMIRATES", YES, NO, YES },    {CTRY_UNITED_KINGDOM, ETSI1_WORLD, "GB", "UNITED KINGDOM", YES, NO, YES },    {CTRY_UNITED_STATES, FCC1_FCCA,   "US", "UNITED STATES", YES, YES, YES },    {CTRY_URUGUAY,     APL2_WORLD,    "UY", "URUGUAY",    YES, NO, YES     },    {CTRY_UZBEKISTAN,  FCC3_FCCA,     "UZ", "UZBEKISTAN", YES, YES, YES    },        {CTRY_VENEZUELA,   APL2_ETSIC,    "VE", "VENEZUELA",  YES, NO, YES     },    {CTRY_VIET_NAM,    NULL1_WORLD,   "VN", "VIET NAM",   YES, NO, YES     },    {CTRY_YEMEN,       NULL1_WORLD,   "YE", "YEMEN",      YES, NO, YES     },    {CTRY_ZIMBABWE,    NULL1_WORLD,   "ZW", "ZIMBABWE",   YES, NO, YES     }    };#undef	YES#undef	NOstatic HAL_BOOLcclookup(const char *name, u_int8_t *rd, HAL_CTRY_CODE *cc){#define	N(a)	(sizeof(a)/sizeof(a[0]))	int i;	for (i = 0; i < N(allCountries); i++)		if (strcasecmp(allCountries[i].isoName, name) == 0 ||		    strcasecmp(allCountries[i].name, name) == 0) {			*rd = allCountries[i].regDmnEnum;			*cc = allCountries[i].countryCode;			return AH_TRUE;		}	return AH_FALSE;#undef N}static const char *getccname(HAL_CTRY_CODE cc){#define	N(a)	(sizeof(a)/sizeof(a[0]))	int i;	for (i = 0; i < N(allCountries); i++)		if (allCountries[i].countryCode == cc)			return allCountries[i].name;	return NULL;#undef N}static const char *getccisoname(HAL_CTRY_CODE cc){#define	N(a)	(sizeof(a)/sizeof(a[0]))	int i;	for (i = 0; i < N(allCountries); i++)		if (allCountries[i].countryCode == cc)			return allCountries[i].isoName;	return NULL;#undef N}static voidcclist(){#define	N(a)	(sizeof(a)/sizeof(a[0]))	int i;	printf("\nCountry codes:\n");	for (i = 0; i < N(allCountries); i++)		printf("%2s %-15.15s%s",			allCountries[i].isoName,			allCountries[i].name,			((i+1)%4) == 0 ? "\n" : " ");	printf("\n");#undef N}static HAL_BOOLsetRateTable(struct ath_hal *ah, HAL_CHANNEL *chan, 		   int16_t tpcScaleReduction, int16_t powerLimit,                   int16_t *pMinPower, int16_t *pMaxPower);static voidcalctxpower(struct ath_hal *ah, int nchan, HAL_CHANNEL *chans,	int16_t tpcScaleReduction, int16_t powerLimit, int16_t *txpow){	int16_t minpow;	int i;	for (i = 0; i < nchan; i++)		if (!setRateTable(ah, &chans[i],		    tpcScaleReduction, powerLimit, &minpow, &txpow[i])) {			printf("unable to set rate table\n");			exit(-1);		}}int	n = 1;const char *sep = "";int	dopassive = 0;static voiddumpchannels(struct ath_hal *ah, int nc, HAL_CHANNEL *chans, int16_t *txpow){	int i;	for (i = 0; i < nc; i++) {		HAL_CHANNEL *c = &chans[i];		int type;		printf("%s%u", sep, c->channel);		if (IS_CHAN_TURBO(c))			type = 'T';		else if (IS_CHAN_A(c))			type = 'A';		else if (IS_CHAN_G(c))			type = 'G';		else			type = 'B';		if (dopassive && IS_CHAN_PASSIVE(c))			type = tolower(type);		printf("%c %d.%d", type, txpow[i]/2, (txpow[i]%2)*5);		if ((n++ % 6) == 0)			sep = "\n";		else			sep = " ";	}}static voidcheckchannels(struct ath_hal *ah, HAL_CHANNEL *chans, int nchan){	int i;	for (i = 0; i < nchan; i++) {		HAL_CHANNEL *c = &chans[i];		if (!ath_hal_checkchannel(ah, c))			printf("Channel %u (0x%x) disallowed\n",				c->channel, c->channelFlags);	}}static voidintersect(HAL_CHANNEL *dst, int16_t *dtxpow, int *nd,    const HAL_CHANNEL *src, int16_t *stxpow, int ns){	int i = 0, j, k, l;	while (i < *nd) {		for (j = 0; j < ns && dst[i].channel != src[j].channel; j++)			;		if (j < ns && dtxpow[i] == stxpow[j]) {			for (k = i+1, l = i; k < *nd; k++, l++)				dst[l] = dst[k];			(*nd)--;		} else			i++;	}}static voidusage(const char *progname){	printf("usage: %s [-o] [-i] [cc | rd]\n", progname);	exit(-1);}static	int verbose = 1;static intruntest(struct ath_hal_private *ahp, int cc, int modes, int outdoor, int xchanmode){	HAL_CHANNEL chans[IEEE80211_CHAN_MAX];	int i, n;	if (verbose) {		if (cc != CTRY_DEFAULT)			printf("%s (%s, 0x%x, %u) %s (0x%x, %u)\n",				getccname(cc), getccisoname(cc), cc, cc,				getrdname(ahp->ah_currentRD), ahp->ah_currentRD,				ahp->ah_currentRD);		else			printf("%s (0x%x, %u)\n",				getrdname(ahp->ah_currentRD), ahp->ah_currentRD,				ahp->ah_currentRD);	}	if (modes == 0)		modes = HAL_MODE_11A | HAL_MODE_11B |			HAL_MODE_11G | HAL_MODE_TURBO;	if (!ath_hal_init_channels(&ahp->h, chans, IEEE80211_CHAN_MAX, &n,	    cc, modes, outdoor, xchanmode)) {		printf("ath_hal_init_channels failed!\n");		return -1;	}	for (i = 0; i < n; i++) {		if (!ath_hal_checkchannel(&ahp->h, &chans[i]))			printf("%u/0x%x: FAIL\n",				chans[i].channel, chans[i].channelFlags);		else if (verbose > 1)			printf("%u/0x%x: ok\n",				chans[i].channel, chans[i].channelFlags);	}	return 0;}intmain(int argc, char *argv[]){#define	N(a)	(sizeof(a)/sizeof(a[0]))	struct ath_hal_private ahp;	int i, n;	HAL_BOOL extendedChanMode = AH_TRUE;	int modes = 0;	memset(&ahp, 0, sizeof(ahp));	ahp.ah_getChannelEdges = getChannelEdges;	ahp.ah_getWirelessModes = getWirelessModes;	ahp.ah_opmode = HAL_M_STA;	ahp.ah_currentRD = 16;		/* FCC */	while ((i = getopt(argc, argv, "deoilm:pABGTqv")) != -1)		switch (i) {		case 'd':			ath_hal_debug = 1;			break;		case 'e':			extendedChanMode = AH_FALSE;			break;		case 'o':			outdoor = AH_TRUE;			break;		case 'i':			outdoor = AH_FALSE;			break;		case 'l':			cclist();			rdlist();			exit(0);		case 'm':			if (strncasecmp(optarg, "sta", 2) == 0)				ahp.ah_opmode = HAL_M_STA;			else if (strncasecmp(optarg, "ibss", 2) == 0)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -