📄 test.c
字号:
/* * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting * Copyright (c) 2002-2005 Atheros Communications, Inc. * All rights reserved. * * $Id: test.c,v 1.1.1.1 2006/09/12 03:45:24 steven Exp $ */#include "opt_ah.h"#include "ah.h"#include "ah_internal.h"#include "ah_eeprom.h"#include <stdio.h>#include <stdlib.h>#include <stdarg.h>#include <string.h>#include <unistd.h>#define IEEE80211_CHAN_MAX 255int ath_hal_debug = 0;HAL_CTRY_CODE cc = CTRY_DEFAULT;HAL_BOOL outdoor = AH_TRUE;HAL_BOOL Amode = 1;HAL_BOOL Bmode = 1;HAL_BOOL Gmode = 1;HAL_BOOL turbo5Disable = AH_FALSE;u_int16_t _numCtls = 8;u_int16_t _ctl[32] = { 0x10, 0x13, 0x40, 0x30, 0x11, 0x31, 0x12, 0x32 };RD_EDGES_POWER _rdEdgesPower[NUM_EDGES*NUM_CTLS] = { { 5180, 28, 0 }, /* 0x10 */ { 5240, 60, 0 }, { 5260, 36, 0 }, { 5320, 27, 0 }, { 5745, 36, 0 }, { 5765, 36, 0 }, { 5805, 36, 0 }, { 5825, 36, 0 }, { 5210, 28, 0 }, /* 0x13 */ { 5250, 28, 0 }, { 5290, 30, 0 }, { 5760, 36, 0 }, { 5800, 36, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 5170, 60, 0 }, /* 0x40 */ { 5230, 60, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 5180, 33, 0 }, /* 0x30 */ { 5320, 33, 0 }, { 5500, 34, 0 }, { 5700, 34, 0 }, { 5745, 35, 0 }, { 5765, 35, 0 }, { 5785, 35, 0 }, { 5825, 35, 0 }, { 2412, 36, 0 }, /* 0x11 */ { 2417, 36, 0 }, { 2422, 36, 0 }, { 2432, 36, 0 }, { 2442, 36, 0 }, { 2457, 36, 0 }, { 2467, 36, 0 }, { 2472, 36, 0 }, { 2412, 36, 0 }, /* 0x31 */ { 2417, 36, 0 }, { 2422, 36, 0 }, { 2432, 36, 0 }, { 2442, 36, 0 }, { 2457, 36, 0 }, { 2467, 36, 0 }, { 2472, 36, 0 }, { 2412, 36, 0 }, /* 0x12 */ { 2417, 36, 0 }, { 2422, 36, 0 }, { 2432, 36, 0 }, { 2442, 36, 0 }, { 2457, 36, 0 }, { 2467, 36, 0 }, { 2472, 36, 0 }, { 2412, 28, 0 }, /* 0x32 */ { 2417, 28, 0 }, { 2422, 28, 0 }, { 2432, 28, 0 }, { 2442, 28, 0 }, { 2457, 28, 0 }, { 2467, 28, 0 }, { 2472, 28, 0 },};u_int16_t turbo2WMaxPower5 = 32;u_int16_t turbo2WMaxPower2;int8_t antennaGainMax[2] = { 0, 0 }; /* XXX */int eeversion = AR_EEPROM_VER3_1;TRGT_POWER_ALL_MODES tpow = { 8, { { 22, 24, 28, 32, 5180 }, { 22, 24, 28, 32, 5200 }, { 22, 24, 28, 32, 5320 }, { 26, 30, 34, 34, 5500 }, { 26, 30, 34, 34, 5700 }, { 20, 30, 34, 36, 5745 }, { 20, 30, 34, 36, 5825 }, { 20, 30, 34, 36, 5850 }, }, 2, { { 23, 27, 31, 34, 2412 }, { 23, 27, 31, 34, 2447 }, }, 2, { { 36, 36, 36, 36, 2412 }, { 36, 36, 36, 36, 2484 }, }};#define numTargetPwr_11a tpow.numTargetPwr_11a#define trgtPwr_11a tpow.trgtPwr_11a#define numTargetPwr_11g tpow.numTargetPwr_11g#define trgtPwr_11g tpow.trgtPwr_11g#define numTargetPwr_11b tpow.numTargetPwr_11b#define trgtPwr_11b tpow.trgtPwr_11bstatic HAL_BOOLgetChannelEdges(struct ath_hal *ah, u_int16_t flags, u_int16_t *low, u_int16_t *high){ if (flags & CHANNEL_5GHZ) { *low = 4920; *high = 6100; return AH_TRUE; } if (flags & CHANNEL_2GHZ) { *low = 2312; *high = 2732; return AH_TRUE; } return AH_FALSE;}static u_intgetWirelessModes(struct ath_hal *ah){ u_int mode = 0; if (Amode) { mode = HAL_MODE_11A; if (!turbo5Disable) mode |= HAL_MODE_TURBO; } if (Bmode) mode |= HAL_MODE_11B; if (Gmode) mode |= HAL_MODE_11G; return mode;}/* * Convert IEEE channel number to GHz frequency. */u_intath_hal_ieee2mhz(u_int chan, u_int flags){ if (flags & CHANNEL_2GHZ) { /* 2GHz band */ if (chan == 14) return 2484; if (chan < 14) return 2407 + chan*5; else return 2512 + ((chan-15)*20); } else if (flags & CHANNEL_5GHZ) {/* 5Ghz band */ return 5000 + (chan*5); } else { /* either, guess */ if (chan == 14) return 2484; if (chan < 14) /* 0-13 */ return 2407 + chan*5; if (chan < 27) /* 15-26 */ return 2512 + ((chan-15)*20); return 5000 + (chan*5); }}/* * Country/Region Codes from MS WINNLS.H * Numbering from ISO 3166 */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_BAHRAIN = 48, /* Bahrain */ CTRY_BELARUS = 112, /* Belarus */ CTRY_BELGIUM = 56, /* Belgium */ CTRY_BELIZE = 84, /* Belize */ CTRY_BOLIVIA = 68, /* Bolivia */ CTRY_BRAZIL = 76, /* Brazil */ CTRY_BRUNEI_DARUSSALAM = 96, /* Brunei Darussalam */ CTRY_BULGARIA = 100, /* Bulgaria */ 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_FRANCE2 = 255, /* France2 */ CTRY_GEORGIA = 268, /* Georgia */ CTRY_GERMANY = 276, /* Germany */ CTRY_GREECE = 300, /* Greece */ CTRY_GUATEMALA = 320, /* Guatemala */ 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_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_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_ROC2 = 411, /* 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 */ CTRY_MACEDONIA = 807, /* the Former Yugoslav Republic of Macedonia */ CTRY_MALAYSIA = 458, /* Malaysia */ CTRY_MEXICO = 484, /* Mexico */ CTRY_MONACO = 492, /* Principality of Monaco */ CTRY_MOROCCO = 504, /* Morocco */ CTRY_NETHERLANDS = 528, /* Netherlands */ 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_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_SAUDI_ARABIA = 682, /* Saudi Arabia */ CTRY_SINGAPORE = 702, /* Singapore */ CTRY_SLOVAKIA = 703, /* Slovak Republic */ CTRY_SLOVENIA = 705, /* Slovenia */ CTRY_SOUTH_AFRICA = 710, /* South Africa */ CTRY_SPAIN = 724, /* Spain */ CTRY_SWEDEN = 752, /* Sweden */ CTRY_SWITZERLAND = 756, /* Switzerland */ CTRY_SYRIA = 760, /* Syria */ CTRY_TAIWAN = 158, /* Taiwan */ 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_UKRAINE = 804, /* Ukraine */ CTRY_UNITED_KINGDOM = 826, /* United Kingdom */ CTRY_UNITED_STATES = 840, /* United States */ 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 */};/* Enumerated Regulatory Domain Information */enum EnumRd { /* * The following regulatory domain definitions are * found in the EEPROM. Each regulatory domain * can operate in either a 5GHz or 2.4GHz wireless mode or * both 5GHz and 2.4GHz wireless modes. * In general, the value holds no special * meaning and is used to decode into either specific * 2.4GHz or 5GHz wireless mode for that particular * regulatory domain. */ NO_ENUMRD = 0x00, NULL1_WORLD = 0x03, /* For 11b-only countries (no 11a allowed) */ NULL1_ETSIB = 0x07, /* Israel */ NULL1_ETSIC = 0x08, FCC1_FCCA = 0x10, /* USA */ FCC1_WORLD = 0x11, /* Hong Kong */ FCC2_FCCA = 0x20, /* Canada */ FCC2_WORLD = 0x21, /* Australia & HK */ FCC2_ETSIC = 0x22, FRANCE_RES = 0x31, /* Legacy France for OEM */ FCC3_FCCA = 0x3A, /* USA & Canada w/5470 band, 11h, DFS enabled */ ETSI1_WORLD = 0x37, ETSI3_ETSIA = 0x32, /* France (optional) */ ETSI2_WORLD = 0x35, /* Hungary & others */ ETSI3_WORLD = 0x36, /* France & others */ ETSI4_WORLD = 0x30, ETSI4_ETSIC = 0x38, ETSI5_WORLD = 0x39, ETSI6_WORLD = 0x34, /* Bulgaria */ ETSI_RESERVED = 0x33, /* Reserved (Do not used) */ MKK1_MKKA = 0x40, /* Japan (JP1) */ MKK1_MKKB = 0x41, /* Japan (JP0) */ APL4_WORLD = 0x42, /* Singapore */ MKK2_MKKA = 0x43, /* Japan with 4.9G channels */ APL_RESERVED = 0x44, /* Reserved (Do not used) */ APL2_WORLD = 0x45, /* Korea */ APL2_APLC = 0x46, APL3_WORLD = 0x47, MKK1_FCCA = 0x48, /* Japan (JP1-1) */ APL2_APLD = 0x49, /* Korea with 2.3G channels */ MKK1_MKKA1 = 0x4A, /* Japan (JE1) */ MKK1_MKKA2 = 0x4B, /* Japan (JE2) */ APL1_WORLD = 0x52, /* Latin America */ APL1_FCCA = 0x53, APL1_APLA = 0x54, APL1_ETSIC = 0x55, APL2_ETSIC = 0x56, /* Venezuela */ APL5_WORLD = 0x58, /* Chile */ /* * World mode SKUs */ WOR0_WORLD = 0x60, /* World0 (WO0 SKU) */ WOR1_WORLD = 0x61, /* World1 (WO1 SKU) */ WOR2_WORLD = 0x62, /* World2 (WO2 SKU) */ WOR3_WORLD = 0x63, /* World3 (WO3 SKU) */ WOR4_WORLD = 0x64, /* World4 (WO4 SKU) */ WOR5_ETSIC = 0x65, /* World5 (WO5 SKU) */ WOR01_WORLD = 0x66, /* World0-1 (WW0-1 SKU) */ WOR02_WORLD = 0x67, /* World0-2 (WW0-2 SKU) */ EU1_WORLD = 0x68, /* Same as World0-2 (WW0-2 SKU), except active scan ch1-13. No ch14 */ WOR9_WORLD = 0x69, /* World9 (WO9 SKU) */ WORA_WORLD = 0x6A, /* WorldA (WOA SKU) */ /* * Regulator domains ending in a number (e.g. APL1, * MK1, ETSI4, etc) apply to 5GHz channel and power * information. Regulator domains ending in a letter * (e.g. APLA, FCCA, etc) apply to 2.4GHz channel and * power information. */ APL1 = 0x0150, /* LAT & Asia */ APL2 = 0x0250, /* LAT & Asia */ APL3 = 0x0350, /* Taiwan */ APL4 = 0x0450, /* Singapore */ APL5 = 0x0550, /* Chile */ ETSI1 = 0x0130, /* Europe & others */ ETSI2 = 0x0230, /* Europe & others */ ETSI3 = 0x0330, /* Europe & others */ ETSI4 = 0x0430, /* Europe & others */ ETSI5 = 0x0530, /* Europe & others */ ETSI6 = 0x0630, /* Europe & others */ ETSIA = 0x0A30, /* France */ ETSIB = 0x0B30, /* Israel */ ETSIC = 0x0C30, /* Latin America */ FCC1 = 0x0110, /* US & others */ FCC2 = 0x0120, /* Canada, Australia & New Zealand */ FCC3 = 0x0160, /* US w/new middle band & DFS */ FCCA = 0x0A10, APLD = 0x0D50, /* South Korea */ MKK1 = 0x0140, /* Japan */ MKK2 = 0x0240, /* Japan Extended */ MKKA = 0x0A40, /* Japan */ NULL1 = 0x0198, WORLD = 0x0199, DEBUG_REG_DMN = 0x01ff};#define DEF_REGDMN FCC1_FCCAstatic struct { const char *name; HAL_REG_DOMAIN rd;} domains[] = { { "NO_ENUMRD", NO_ENUMRD }, { "NULL1_WORLD", NULL1_WORLD }, { "NULL1_ETSIB", NULL1_ETSIB }, { "NULL1_ETSIC", NULL1_ETSIC }, { "FCC1_FCCA", FCC1_FCCA }, { "FCC1_WORLD", FCC1_WORLD }, { "FCC2_FCCA", FCC2_FCCA }, { "FCC2_WORLD", FCC2_WORLD }, { "FCC2_ETSIC", FCC2_ETSIC }, { "FRANCE_RES", FRANCE_RES }, { "FCC3_FCCA", FCC3_FCCA }, { "ETSI1_WORLD", ETSI1_WORLD }, { "ETSI3_ETSIA", ETSI3_ETSIA }, { "ETSI2_WORLD", ETSI2_WORLD }, { "ETSI3_WORLD", ETSI3_WORLD }, { "ETSI4_WORLD", ETSI4_WORLD }, { "ETSI4_ETSIC", ETSI4_ETSIC }, { "ETSI5_WORLD", ETSI5_WORLD }, { "ETSI6_WORLD", ETSI6_WORLD }, { "ETSI_RESERVED", ETSI_RESERVED }, { "MKK1_MKKA", MKK1_MKKA }, { "MKK1_MKKB", MKK1_MKKB },
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -