📄 eeprom.c
字号:
/* eeprom.c - Contains the functions for printing the eeprom contents */
/* Copyright (c) 2000 Atheros Communications, Inc., All Rights Reserved */
#ident "ACI $Id: //depot/sw/branches/ART_V45/sw/src/dk/mdk/devmld/eeprom.c#2 $, $Header: //depot/sw/branches/ART_V45/sw/src/dk/mdk/devmld/eeprom.c#2 $"
#ifdef _WINDOWS
#include <windows.h>
#endif
#ifdef JUNGO
#include "mld.h" /* Low level driver information for MLD */
#endif
#ifdef ANWI
#include "mld_anwi.h"
#endif
#ifdef LINUX
#include "mld_linux.h"
#endif
#ifdef __ATH_DJGPPDOS__
#define __int64 long long
#define HANDLE long
typedef unsigned long DWORD;
#define Sleep delay
#include <bios.h>
#endif // #ifdef __ATH_DJGPPDOS__
#include <stdio.h>
#ifndef LINUX
#include <conio.h>
#else
#include "linux_ansi.h"
#endif
#include <string.h>
#include <stdlib.h>
#include "wlantype.h"
#include "mEeprom.h"
#include "mConfig.h"
#include "art_if.h"
#include "test.h"
#ifdef __ATH_DJGPPDOS__
#include "mlibif_dos.h"
#endif
A_UINT16 xpdGainMapping[] = {0, 6, 9, 18};
void printHeaderInfo_16K
(
MDK_EEP_HEADER_INFO *pHeaderInfo,
A_UINT32 mode
)
{
A_CHAR binaryString[50];
A_CHAR modeString[10];
A_UINT16 i, j;
MODE_HEADER_INFO *pModeInfo;
A_INT16 tmpVal;
switch(mode) {
case MODE_11A:
pModeInfo = &(pHeaderInfo->info11a);
sprintf(modeString, "11a");
break;
case MODE_11G:
pModeInfo = &(pHeaderInfo->info11g);
sprintf(modeString, "11g");
break;
case MODE_11O:
pModeInfo = &(pHeaderInfo->info11g);
sprintf(modeString, "11o");
break;
case MODE_11B:
pModeInfo = &(pHeaderInfo->info11b);
sprintf(modeString, "11b");
break;
default:
printf("Illegal mode passed to printHeaderInfo_16K\n");
return;
} //end switch
uiPrintf("\n");
uiPrintf(" =================Header Information for mode %s===============\n", modeString);
uiPrintf(" | Major Version %2d ", pHeaderInfo->majorVersion);
uiPrintf("| Minor Version %2d |\n", pHeaderInfo->minorVersion);
if(pHeaderInfo->majorVersion >= 4) {
uiPrintf(" | EAR Start 0x%3x ", pHeaderInfo->earStartLocation);
uiPrintf("| Target Power Start 0x%3x |\n", pHeaderInfo->trgtPowerStartLocation);
uiPrintf(" | EEP MAP 0x%1x ", pHeaderInfo->eepMap);
uiPrintf("| |\n");
uiPrintf(" | Enable 32 khz %1d ", pHeaderInfo->enable32khz);
if(pHeaderInfo->minorVersion >= 5) {
uiPrintf("| Old Enable 32 khz %1d |\n", pHeaderInfo->oldEnable32khz);
uiPrintf(" | Mask for Radio 0 %1d ", pHeaderInfo->maskRadio0);
switch (pHeaderInfo->maskRadio0) {
case 0:
uiPrintf(" ");
break;
case 1:
uiPrintf(" g");
break;
case 2:
uiPrintf(" a");
break;
case 3:
uiPrintf("a/g");
break;
default:
uiPrintf(" ");
break;
}
uiPrintf(" | Mask for Radio 1 %1d ", pHeaderInfo->maskRadio1);
switch (pHeaderInfo->maskRadio1) {
case 0:
uiPrintf(" ");
break;
case 1:
uiPrintf(" g");
break;
case 2:
uiPrintf(" a");
break;
case 3:
uiPrintf("a/g");
break;
default:
uiPrintf(" ");
break;
}
uiPrintf(" |\n");
} else {
uiPrintf("| |\n");
}
if(pHeaderInfo->minorVersion >= 4) {
uiPrintf(" | EEP File Version %3d ", pHeaderInfo->eepFileVersion);
uiPrintf("| ART Build Number %3d |\n", pHeaderInfo->artBuildNumber);
uiPrintf(" | EAR File Identifier %3d ", pHeaderInfo->earFileIdentifier);
uiPrintf("| EAR File Version %3d |\n", pHeaderInfo->earFileVersion);
}
}
uiPrintf(" |-------------------------------------------------------------|\n");
if(((pHeaderInfo->majorVersion == 3) && (pHeaderInfo->minorVersion >= 1))
|| (pHeaderInfo->majorVersion == 4)){
uiPrintf(" | A Mode %1d ", pHeaderInfo->Amode);
uiPrintf("| B Mode %1d ", pHeaderInfo->Bmode);
uiPrintf("| G Mode %1d |\n", pHeaderInfo->Gmode);
}
else {
uiPrintf(" | A Mode %1d ", pHeaderInfo->Amode);
uiPrintf("| B Mode %1d |\n", pHeaderInfo->Bmode);
}
if(pHeaderInfo->countryCodeFlag) {
uiPrintf(" | Country Code %03x ", pHeaderInfo->countryRegCode);
} else {
uiPrintf(" | Reg. Domain %03x ", pHeaderInfo->countryRegCode);
}
uiPrintf("| turbo Disable %1d ", pHeaderInfo->turboDisable);
uiPrintf("| RF Silent %1d |\n", pHeaderInfo->RFKill);
uiPrintf(" |-------------------------------------------------------------|\n");
if(((pHeaderInfo->majorVersion == 3) && (pHeaderInfo->minorVersion >= 3))
|| (pHeaderInfo->majorVersion == 4)){
uiPrintf(" | worldwide roaming %1x ", pHeaderInfo->worldwideRoaming);
uiPrintf("| False detect backoff 0x%02x |\n", pModeInfo->falseDetectBackoff);
}
uiPrintf(" | device type %1x ", pHeaderInfo->deviceType);
uiPrintf("| Switch Settling Time 0x%02x |\n", pModeInfo->switchSettling);
uiPrintf(" | ADC Desired size %2d ", pModeInfo->adcDesiredSize);
uiPrintf("| XLNA Gain 0x%02x |\n", pModeInfo->xlnaGain);
uiPrintf(" | tx end to XLNA on 0x%02x ", pModeInfo->txEndToXLNAOn);
uiPrintf("| Threashold 62 0x%02x |\n", pModeInfo->thresh62);
uiPrintf(" | tx end to XPA off 0x%02x ", pModeInfo->txEndToXPAOff);
uiPrintf("| tx end to XPA on 0x%02x |\n", pModeInfo->txFrameToXPAOn);
uiPrintf(" | PGA Desired size %2d ", pModeInfo->pgaDesiredSize);
uiPrintf("| Noise Threshold %3d |\n", pModeInfo->noisefloorThresh);
uiPrintf(" | XPD Gain 0x%02x ", pModeInfo->xgain);
uiPrintf("| XPD %1d |\n", pModeInfo->xpd);
uiPrintf(" | txrx Attenuation 0x%02x ", pModeInfo->txrxAtten);
uiPrintf("| Antenna control 0 ");
itoa(pModeInfo->antennaControl[0], binaryString, 2);
for(i = 0; i < (6 - strlen(binaryString)); i++) {
uiPrintf("0");
}
uiPrintf("%s |\n", binaryString);
for(j = 1; j <= 5; j++) {
uiPrintf(" | Antenna control %2d ", j);
itoa(pModeInfo->antennaControl[j], binaryString, 2);
for(i = 0; i < (6 - strlen(binaryString)); i++) {
uiPrintf("0");
}
uiPrintf("%s ", binaryString);
uiPrintf("| Antenna control %2d ", j+5);
itoa(pModeInfo->antennaControl[j+5], binaryString, 2);
for(i = 0; i < (6 - strlen(binaryString)); i++) {
uiPrintf("0");
}
uiPrintf("%s |\n", binaryString);
}
if(((pHeaderInfo->majorVersion == 3) && (pHeaderInfo->minorVersion >= 4))
|| (pHeaderInfo->majorVersion == 4)){
uiPrintf(" | Init GainI 0x%02x ", pModeInfo->initialGainI);
// if(mode == MODE_11B) {
// uiPrintf("| |\n");
// }
if(mode != MODE_11B) {
uiPrintf("| Turbo 2W Pwr Max. %2d |\n", pModeInfo->turbo2wMaxPower);
}
if((mode == MODE_11G) || (mode == MODE_11O)) {
uiPrintf(" | OFDM/CCK Delta %4.1f ", (float)(pHeaderInfo->scaledOfdmCckDelta)/10);
}
if (pHeaderInfo->majorVersion == 4) {
if(mode != MODE_11A) {
uiPrintf("| Use Fixed dB Bias 2.4GHz %1d |\n", pHeaderInfo->fixedBiasB);
}
} else {
uiPrintf("| |\n");
}
}
if(pHeaderInfo->majorVersion == 4) {
if(mode != MODE_11B) {
tmpVal = pModeInfo->iqCalI ;
if ((tmpVal >> 5) == 0x1) tmpVal = tmpVal - 64 ;
uiPrintf(" | IQ Cal I %3d ", tmpVal);
tmpVal = pModeInfo->iqCalQ ;
if ((tmpVal >> 4) == 0x1) tmpVal = tmpVal - 32 ;
uiPrintf("| IQ Cal Q %3d |\n", tmpVal);
}
if(mode == MODE_11A) {
uiPrintf(" | Use Fixed dB Bias 5GHz %1d ", pHeaderInfo->fixedBiasA);
if(pHeaderInfo->minorVersion >= 1) {
uiPrintf("| rxtxMargin 0x%02x |\n", pModeInfo->rxtxMargin);
}
else {
uiPrintf("| |\n");
}
}
if(pHeaderInfo->minorVersion >= 1) {
if(mode != MODE_11A) {
uiPrintf(" | rxtxMargin 0x%02x ", pModeInfo->rxtxMargin);
}
}
if((pHeaderInfo->minorVersion >= 2) && (mode == MODE_11G)){
uiPrintf("| OFDM/CCK Gain Delta %4.1f |\n", (float)(pHeaderInfo->ofdmCckGainDeltaX2)/2);
} else if ((mode == MODE_11B) || (mode == MODE_11O)) {
uiPrintf("| |\n");
}
if((pHeaderInfo->minorVersion >= 5) && ((mode == MODE_11G)||(mode == MODE_11O))){
uiPrintf(" | CH14 Filter CCK Delta %4.1f ", (float)(pHeaderInfo->scaledCh14FilterCckDelta)/10);
uiPrintf("| |\n");
}
}
uiPrintf(" |-------------------------------------------------------------|\n");
if(mode == MODE_11A) {
uiPrintf(" | OB_1 %1d ", pModeInfo->ob_1);
uiPrintf("| OB_2 %1d ", pModeInfo->ob_2);
uiPrintf("| OB_3 %1d ", pModeInfo->ob_3);
uiPrintf("| OB_4 %1d |\n", pModeInfo->ob_4);
uiPrintf(" | DB_1 %1d ", pModeInfo->db_1);
uiPrintf("| DB_2 %1d ", pModeInfo->db_2);
uiPrintf("| DB_3 %1d ", pModeInfo->db_3);
uiPrintf("| DB_4 %1d |\n", pModeInfo->db_4);
}
else {
if(((pHeaderInfo->majorVersion == 3) && (pHeaderInfo->minorVersion >= 1))
|| (pHeaderInfo->majorVersion == 4)){
uiPrintf(" | OB_1 %1d ", pModeInfo->ob_1);
uiPrintf("| B_OB %1d ", pModeInfo->ob_4);
uiPrintf("| DB_1 %1d ", pModeInfo->db_1);
uiPrintf("| B_DB %1d |\n", pModeInfo->db_4);
}
else {
uiPrintf(" | OB_1 %1d ", pModeInfo->ob_1);
uiPrintf("| DB_1 %1d |\n", pModeInfo->db_1);
}
}
#if 0
if ((mode == MODE_11A) && (pHeaderInfo->minorVersion >= 2)) {
uiPrintf(" |-------------------------------------------------------------|\n");
for(i = 0; i < 4; i++) {
uiPrintf(" | Gsel_%1d %1d ", i, pHeaderInfo->cornerCal[i].gSel);
uiPrintf("| Pd84_%1d %1d ", i, pHeaderInfo->cornerCal[i].pd84);
uiPrintf("| Pd90_%1d %1d ", i, pHeaderInfo->cornerCal[i].pd90);
uiPrintf("| clip_%1d %1d |\n", i, pHeaderInfo->cornerCal[i].clip);
}
}
#endif
uiPrintf(" ===============================================================\n");
if(((pHeaderInfo->majorVersion == 3) && (pHeaderInfo->minorVersion >= 4))
&& (mode != MODE_11A)) {
if((pModeInfo->calPier1 != 0xff) || (pModeInfo->calPier2 != 0xff)) {
uiPrintf("\nCalibration actually performed at channels: ");
if(pModeInfo->calPier1 != 0xff) {
uiPrintf("%d ", pModeInfo->calPier1);
}
if(pModeInfo->calPier2 != 0xff) {
uiPrintf("%d ", pModeInfo->calPier2);
}
uiPrintf("\n");
}
}
return;
}
void printChannelInfo_16K
(
MDK_PCDACS_ALL_MODES *pEepromData,
A_UINT32 mode
)
{
A_UINT16 i, j, k = 0;
MDK_DATA_PER_CHANNEL *pDataPerChannel;
switch(mode) {
case MODE_11A:
pDataPerChannel = pEepromData->DataPerChannel_11a;
break;
case MODE_11G:
case MODE_11O:
pDataPerChannel = pEepromData->DataPerChannel_11g;
break;
case MODE_11B:
pDataPerChannel = pEepromData->DataPerChannel_11b;
break;
default:
printf("Illegal mode passed to printChannelInfo_16K\n");
return;
}
uiPrintf("\n");
if(mode == MODE_11A) {
uiPrintf("=========================Calibration Information============================\n");
for (k = 0; k < 10; k+=5) {
for(i = k; i < k + 5; i++) {
uiPrintf("| %04d ",
pDataPerChannel[i].channelValue);
}
uiPrintf("|\n");
uiPrintf("|==============|==============|==============|==============|==============|\n");
for(i = k; i < k + 5; i++) {
uiPrintf("|pcdac pwr(dBm)");
}
uiPrintf("|\n");
for(j = 0; j < pDataPerChannel[0].numPcdacValues; j++) {
for(i = k; i < k + 5; i++) {
uiPrintf("| %02d %4.1f ",
pDataPerChannel[i].PcdacValues[j],
((float)(pDataPerChannel[i].PwrValues[j]))/SCALE);
}
uiPrintf("|\n");
}
uiPrintf("| | | | | |\n");
for (i = k; i < k + 5; i++) {
uiPrintf("| pcdac min %02d ", pDataPerChannel[i].pcdacMin);
}
uiPrintf("|\n");
for (i = k; i < k + 5; i++) {
uiPrintf("| pcdac max %02d ", pDataPerChannel[i].pcdacMax);
}
uiPrintf("|\n");
uiPrintf("|==============|==============|==============|==============|==============|\n");
}
} else {
uiPrintf(" ==========Calibration Information=============\n");
for(i = 0; i < 3; i++) {
if(0 == i) {
uiPrintf(" ");
}
uiPrintf("| %04d ",
pDataPerChannel[i].channelValue);
}
uiPrintf("|\n");
uiPrintf(" |==============|==============|==============|\n");
for(i = 0; i < 3; i++) {
if(0 == i) {
uiPrintf(" ");
}
uiPrintf("|pcdac pwr(dBm)");
}
uiPrintf("|\n");
for(j = 0; j < pDataPerChannel[0].numPcdacValues; j++) {
for(i = 0; i < 3; i++) {
if(0 == i) {
uiPrintf(" ");
}
uiPrintf("| %02d %4.1f ",
pDataPerChannel[i].PcdacValues[j],
((float)(pDataPerChannel[i].PwrValues[j]))/SCALE);
}
uiPrintf("|\n");
}
uiPrintf(" | | | |\n");
uiPrintf(" ");
for (i = 0; i < 3; i++) {
uiPrintf("| pcdac min %02d ", pDataPerChannel[i].pcdacMin);
}
uiPrintf("|\n");
uiPrintf(" ");
for (i = 0; i < 3; i++) {
uiPrintf("| pcdac max %02d ", pDataPerChannel[i].pcdacMax);
}
uiPrintf("|\n");
uiPrintf(" |==============|==============|==============|\n");
}
}
void printTargetPowerInfo_16K
(
MDK_TRGT_POWER_ALL_MODES *pPowerInfoAllModes,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -