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

📄 cal_com.c

📁 atheros ar5001 5002 driver
💻 C
📖 第 1 页 / 共 5 页
字号:
				if(!sscanf(pLine, "%lf", &CalSetup.cck_ofdm_delta)) {
					uiPrintf("Unable to read the CCK_OFDM_DELTA from %s\n", eep_file);
				} 	
			}
			else if(strnicmp("CH14_FILTER_CCK_DELTA", pLine, strlen("CH14_FILTER_CCK_DELTA")) == 0) {
				pLine = strchr(pLine, '=');
				pLine = strtok(pLine, delimiters);
				if(!sscanf(pLine, "%lf", &CalSetup.ch14_filter_cck_delta)) {
					uiPrintf("Unable to read the CH14_FILTER_CCK_DELTA from %s\n", eep_file);
				} 	
			}
			else if((strnicmp("A_MODE", pLine, strlen("A_MODE")) == 0) &&
					((pLine[strlen("A_MODE")] == ' ') || 
					 (pLine[strlen("A_MODE")] == '\t') ) ){

					pLine = strchr(pLine, '=');
					pLine = strtok(pLine, delimiters);
					pLine = strtok(pLine," ;#");
					if(!sscanf(pLine, "%d", &CalSetup.Amode)) {
					uiPrintf("Unable to read the A_MODE from %s\n", eep_file);
					}
			}			        
			else if((strnicmp("B_MODE", pLine, strlen("B_MODE")) == 0) &&
					((pLine[strlen("B_MODE")] == ' ') || 
					 (pLine[strlen("B_MODE")] == '\t') ) ){

					pLine = strchr(pLine, '=');
					pLine = strtok(pLine, delimiters);
					pLine = strtok(pLine," ;#");
					if(!sscanf(pLine, "%d", &CalSetup.Bmode)) {
					uiPrintf("Unable to read the B_MODE from %s\n", eep_file);
					}
			}	
			else if((strnicmp("G_MODE", pLine, strlen("G_MODE")) == 0) &&
					((pLine[strlen("G_MODE")] == ' ') || 
					 (pLine[strlen("G_MODE")] == '\t') ) ){

					pLine = strchr(pLine, '=');
					pLine = strtok(pLine, delimiters);
					pLine = strtok(pLine," ;#");
					if(!sscanf(pLine, "%d", &CalSetup.Gmode)) {
					uiPrintf("Unable to read the G_MODE from %s\n", eep_file);
					}
			}	
			else if((strnicmp("ANTENNA_GAIN_5G", pLine, strlen("ANTENNA_GAIN_5G")) == 0) &&
					((pLine[strlen("ANTENNA_GAIN_5G")] == ' ') || 
					(pLine[strlen("ANTENNA_GAIN_5G")] == '\t') ) ){

					pLine = strchr(pLine, '=');
					pLine = strtok(pLine, delimiters);
					pLine = strtok(pLine," ;#");
					if(!sscanf(pLine, "%d", &CalSetup.antennaGain5G)) {
					uiPrintf("Unable to read the ANTENNA_GAIN_5G from %s\n", eep_file);
					} 
			}			        
			else if((strnicmp("ANTENNA_GAIN_2p5G", pLine, strlen("ANTENNA_GAIN_2p5G")) == 0) &&
					((pLine[strlen("ANTENNA_GAIN_2p5G")] == ' ') || 
					(pLine[strlen("ANTENNA_GAIN_2p5G")] == '\t') ) ){

					pLine = strchr(pLine, '=');
					pLine = strtok(pLine, delimiters);
					pLine = strtok(pLine," ;#");
					if(!sscanf(pLine, "%d", &CalSetup.antennaGain2p5G)) {
					uiPrintf("Unable to read the ANTENNA_GAIN_2p5G from %s\n", eep_file);
					} 
			}			        
			else if((strnicmp("XLNA_GAIN", pLine, strlen("XLNA_GAIN")) == 0) &&
					((pLine[strlen("XLNA_GAIN")] == ' ') || 
					 (pLine[strlen("XLNA_GAIN")] == '\t') ) ){

					pLine = strchr(pLine, '=');
					pLine = strtok(pLine, delimiters);
					pLine = strtok(pLine," ;#");
					if(!sscanf(pLine, "%d", &CalSetup.xlnaGain)) {
					uiPrintf("Unable to read the XLNA_GAIN from %s\n", eep_file);
					}
			}			        
			else if((strnicmp("NOISE_FLOOR_THRESHOLD", pLine, strlen("NOISE_FLOOR_THRESHOLD")) == 0) &&
					((pLine[strlen("NOISE_FLOOR_THRESHOLD")] == ' ') || 
					(pLine[strlen("NOISE_FLOOR_THRESHOLD")] == '\t') ) ){

					pLine = strchr(pLine, '=');
					pLine = strtok(pLine, delimiters);
					pLine = strtok(pLine," ;#");
					
					if(!sscanf(pLine, "%d", &CalSetup.noisefloor_thresh)) {
					uiPrintf("Unable to read the NOISE_FLOOR_THRESHOLD from %s\n", eep_file);
					}
					
			}			        
			else if((strnicmp("11b_XLNA_GAIN", pLine, strlen("11b_XLNA_GAIN")) == 0) &&
					((pLine[strlen("11b_XLNA_GAIN")] == ' ') || 
					 (pLine[strlen("11b_XLNA_GAIN")] == '\t') ) ){

					pLine = strchr(pLine, '=');
					pLine = strtok(pLine, delimiters);
					pLine = strtok(pLine," ;#");
					if(!sscanf(pLine, "%d", &CalSetup.xlnaGain_2p4[MODE_11b])) {
					uiPrintf("Unable to read the 11b_XLNA_GAIN from %s\n", eep_file);
					}
			}			        
			else if((strnicmp("11b_NOISE_FLOOR_THRESHOLD", pLine, strlen("11b_NOISE_FLOOR_THRESHOLD")) == 0) &&
					((pLine[strlen("11b_NOISE_FLOOR_THRESHOLD")] == ' ') || 
					(pLine[strlen("11b_NOISE_FLOOR_THRESHOLD")] == '\t') ) ){

					pLine = strchr(pLine, '=');
					pLine = strtok(pLine, delimiters);
					pLine = strtok(pLine," ;#");
					if(!sscanf(pLine, "%d", &CalSetup.noisefloor_thresh_2p4[MODE_11b])) {
					uiPrintf("Unable to read the 11b_NOISE_FLOOR_THRESHOLD from %s\n", eep_file);
					}
			}			        
			else if((strnicmp("11g_XLNA_GAIN", pLine, strlen("11g_XLNA_GAIN")) == 0) &&
					((pLine[strlen("11g_XLNA_GAIN")] == ' ') || 
					 (pLine[strlen("11g_XLNA_GAIN")] == '\t') ) ){

					pLine = strchr(pLine, '=');
					pLine = strtok(pLine, delimiters);
					pLine = strtok(pLine," ;#");
					if(!sscanf(pLine, "%d", &CalSetup.xlnaGain_2p4[MODE_11g])) {
					uiPrintf("Unable to read the 11b_XLNA_GAIN from %s\n", eep_file);
					}
			}			        
			else if((strnicmp("11g_NOISE_FLOOR_THRESHOLD", pLine, strlen("11g_NOISE_FLOOR_THRESHOLD")) == 0) &&
					((pLine[strlen("11g_NOISE_FLOOR_THRESHOLD")] == ' ') || 
					(pLine[strlen("11g_NOISE_FLOOR_THRESHOLD")] == '\t') ) ){

					pLine = strchr(pLine, '=');
					pLine = strtok(pLine, delimiters);
					pLine = strtok(pLine," ;#");
					if(!sscanf(pLine, "%d", &CalSetup.noisefloor_thresh_2p4[MODE_11g])) {
					uiPrintf("Unable to read the 11b_NOISE_FLOOR_THRESHOLD from %s\n", eep_file);
					}
			}			        
			else if((strnicmp("11a_FALSE_DETECT_BACKOFF", pLine, strlen("11a_FALSE_DETECT_BACKOFF")) == 0) &&
					((pLine[strlen("11a_FALSE_DETECT_BACKOFF")] == ' ') || 
					 (pLine[strlen("11a_FALSE_DETECT_BACKOFF")] == '\t') ) ){

					pLine = strchr(pLine, '=');
					pLine = strtok(pLine, delimiters);
					pLine = strtok(pLine," ;#");
					if(!sscanf(pLine, "%d", &CalSetup.falseDetectBackoff[MODE_11a])) {
					uiPrintf("Unable to read the 11a_FALSE_DETECT_BACKOFF from %s\n", eep_file);
					}
			}			        
			else if((strnicmp("11b_FALSE_DETECT_BACKOFF", pLine, strlen("11b_FALSE_DETECT_BACKOFF")) == 0) &&
					((pLine[strlen("11b_FALSE_DETECT_BACKOFF")] == ' ') || 
					 (pLine[strlen("11b_FALSE_DETECT_BACKOFF")] == '\t') ) ){

					pLine = strchr(pLine, '=');
					pLine = strtok(pLine, delimiters);
					pLine = strtok(pLine," ;#");
					if(!sscanf(pLine, "%d", &CalSetup.falseDetectBackoff[MODE_11b])) {
					uiPrintf("Unable to read the 11b_FALSE_DETECT_BACKOFF from %s\n", eep_file);
					}
			}			        
			else if((strnicmp("11g_FALSE_DETECT_BACKOFF", pLine, strlen("11g_FALSE_DETECT_BACKOFF")) == 0) &&
					((pLine[strlen("11g_FALSE_DETECT_BACKOFF")] == ' ') || 
					 (pLine[strlen("11g_FALSE_DETECT_BACKOFF")] == '\t') ) ){

					pLine = strchr(pLine, '=');
					pLine = strtok(pLine, delimiters);
					pLine = strtok(pLine," ;#");
					if(!sscanf(pLine, "%d", &CalSetup.falseDetectBackoff[MODE_11g])) {
					uiPrintf("Unable to read the 11g_FALSE_DETECT_BACKOFF from %s\n", eep_file);
					}
			}			        
			else if((strnicmp("MODE_MASK_FOR_RADIO_0", pLine, strlen("MODE_MASK_FOR_RADIO_0")) == 0) &&
					((pLine[strlen("MODE_MASK_FOR_RADIO_0")] == ' ') || 
					 (pLine[strlen("MODE_MASK_FOR_RADIO_0")] == '\t') ) ){

					pLine = strchr(pLine, '=');
					pLine = strtok(pLine, delimiters);
					pLine = strtok(pLine," ;#");
					if(!sscanf(pLine, "%d", &CalSetup.modeMaskForRadio[0])) {
						uiPrintf("Unable to read the MODE_MASK_FOR_RADIO_0 from %s\n", eep_file);
					} 
			}			        
			else if((strnicmp("MODE_MASK_FOR_RADIO_1", pLine, strlen("MODE_MASK_FOR_RADIO_1")) == 0) &&
					((pLine[strlen("MODE_MASK_FOR_RADIO_1")] == ' ') || 
					 (pLine[strlen("MODE_MASK_FOR_RADIO_1")] == '\t') ) ){

					pLine = strchr(pLine, '=');
					pLine = strtok(pLine, delimiters);
					pLine = strtok(pLine," ;#");
					if(!sscanf(pLine, "%d", &CalSetup.modeMaskForRadio[1])) {
						uiPrintf("Unable to read the MODE_MASK_FOR_RADIO_1 from %s\n", eep_file);
					} 
			}			        
		} // done parsing cal section
	} // end of file					
}

A_UINT32 read_gainf_with_probe_packet(A_UINT32 devNum, A_UINT32 power) {

	A_UINT32 rddata, retVal;

	art_writeField(devNum, "bb_probe_powertx", power);
	art_writeField(devNum, "bb_probe_next_tx", 1);
	Sleep(1);
	rddata = art_regRead(devNum, 0x9930);
	retVal = (rddata >> 25) ;

	return(retVal);
}

A_UINT32 read_gainf_twice(A_UINT32 devNum) 
{
	A_UINT32 gain1, gain2;
	// index of pcdac table to read gainF for. set to 0 for all contTX
	gain1 = read_gainf_with_probe_packet(devNum, 0);
	if (abs(gain1 - global_prev_gainf) > 10) {
		// index of pcdac table to read gainF for. set to 0 for all contTX
		gain2 = read_gainf_with_probe_packet(devNum, 0);
	} else {
		gain2 = gain1;
	}
	global_prev_gainf = (A_UINT16) gain1;
	return( (gain1 >= gain2) ? gain1 : gain2);
}
	

A_UINT32 dump_a2_pc_out(A_UINT32 devNum)
{

    A_UINT32 a2_data=0;
    A_UINT32 tmp;
	A_UINT32 OS_1   = 0;
    A_UINT32 OS_0   = 1;
    A_UINT32 M_2    = 0;
    A_UINT32 M_1    = 1;
    A_UINT32 M_0    = 1;
    A_UINT32 DREG_1 = 0;
    A_UINT32 DREG_0 = 0;
    A_UINT32 DA_2   = 0;
    A_UINT32 DA_1   = 0;
    A_UINT32 DA_0   = 0;
    A_UINT32 NUM_SHIFTS = 7; //used to be 6 in crete-fez
    A_UINT32 indata, outdata, bit, pos;


    tmp = art_regRead(devNum, 0x9808) | (0x1<<27);

    art_regWrite(devNum, 0x9808, tmp);

	// now dump
    tmp =  ((M_2 << 10) | (M_1 << 11) | (M_0 << 12) | (OS_1 << 0) | (OS_0 << 1) | (DREG_1 << 16)
		   | (DREG_0 << 17) | (DA_2 << 18) | (DA_1 << 19) | (DA_0 << 20) | (0x5 << 2));

    art_regWrite(devNum, 0x9800+(0x34<<2), tmp);

	// shift out 32 bits
    for (tmp=0;tmp<NUM_SHIFTS;tmp++)
	{
       art_regWrite(devNum, 0x9800+(0x20<<2), 0x10000);
    }

    a2_data = art_regRead(devNum, 0x9800+(256<<2));

	// reverse 7
	indata = ((a2_data>>25)&0x7f);  
	outdata=bit=0;
	for (pos=0; pos<NUM_SHIFTS; pos++) {
		bit = (indata >> pos) & 0x1;
		outdata = (outdata << 1) | bit;
	}
    a2_data = outdata;

    // clear out register 5
    art_regWrite(devNum, 0x9800+(0x34<<2), 0x14);

	// d2_enable_agc_to_a2();
    tmp = art_regRead(devNum, 0x9808) & ~(0x1<<27);
    art_regWrite(devNum, 0x9808, tmp);

    return(a2_data);

}

void parseSetup(A_UINT32 devNum) 
{
	load_calsetup_vals() ;
	load_eep_vals(devNum);
}

void load_calsetup_vals(void) 
{
    FILE *fStream;
    char lineBuf[122], *pLine;
    A_UINT32 testVal;
	A_INT32  signedTempVal;
	A_UINT16 ii;
	char delimiters[] = " \t\n\r;=";
	char pCalFilename[] = CALSETUP_FILE;
	
//	uiPrintf("\nReading in Calibration Setup from %s\n", pCalFilename);
    if( (fStream = fopen( pCalFilename, "r")) == NULL ) {
        uiPrintf("Failed to open %s - using Defaults\n", pCalFilename);
        return;
    }

    while(fgets(lineBuf, 120, fStream) != NULL) {
        pLine = lineBuf;

        while(isspace(*pLine)) pLine++;

		if(strnicmp("#BEGIN_11a_TEST_CHANNEL_MATRIX", pLine, strlen("#BEGIN_11a_TEST_CHANNEL_MATRIX")) == 0) {
			parseTestChannels(fStream, pLine, MODE_11a);
			continue;
        }

		if(strnicmp("#BEGIN_11b_TEST_CHANNEL_MATRIX", pLine, strlen("#BEGIN_11b_TEST_CHANNEL_MATRIX")) == 0) {
			parseTestChannels(fStream, pLine, MODE_11b);
			continue;
        }

⌨️ 快捷键说明

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