亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? meeprom_d.c

?? Atheros AP Test with Agilent N4010A source code
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/* mEEPROM_d.c - contians functions for reading eeprom and getting            */
/*                 pcdac power settings for all channels for gen3 analog chips  */
/* Copyright (c) 2001 Atheros Communications, Inc., All Rights Reserved         */


/* 
Revsision history
--------------------
1.0       Created.
*/

#ifdef VXWORKS
#include "vxworks.h"
#endif

#ifdef __ATH_DJGPPDOS__
#include <unistd.h>
#ifndef EILSEQ  
    #define EILSEQ EIO
#endif	// EILSEQ

#define __int64	long long
typedef unsigned long DWORD;
#define Sleep	delay
#endif	// #ifdef __ATH_DJGPPDOS__

#include "wlantype.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#ifdef WIN32 
#include <memory.h>
#include <conio.h>
#endif
#include "../athreg.h"
#include "../manlib.h"
#include "../mEeprom.h"
#include "../mConfig.h"
#include "../mDevtbl.h"
#include <errno.h>

#include "mEEPROM_d.h"

#define  FALCON_BAND_EIRP_HEADROOM_IN_DB   6

MANLIB_API A_BOOL setup_raw_dataset_gen3(A_UINT32 devNum, RAW_DATA_STRUCT_GEN3 *pRawDataset_gen3, A_UINT16 myNumRawChannels, A_UINT16 *pMyRawChanList)
{
	A_UINT16	i, j, channelValue;	

	if(!allocateRawDataStruct_gen3(devNum, pRawDataset_gen3, myNumRawChannels)) {
		mError(devNum, EIO,"unable to allocate raw dataset (gen3)\n");
		return(0);
	}


	for (i = 0; i < myNumRawChannels; i++) {
		channelValue = pMyRawChanList[i];

		pRawDataset_gen3->pChannels[i] = channelValue;
		
		pRawDataset_gen3->pDataPerChannel[i].channelValue = channelValue;

		for (j = 0; j < NUM_XPD_PER_CHANNEL; j++) {
			pRawDataset_gen3->pDataPerChannel[i].pDataPerXPD[j].xpd_gain = j;
			pRawDataset_gen3->pDataPerChannel[i].pDataPerXPD[j].numPcdacs = 0;
		}		
		pRawDataset_gen3->pDataPerChannel[i].pDataPerXPD[0].numPcdacs = 4;
		pRawDataset_gen3->pDataPerChannel[i].pDataPerXPD[3].numPcdacs = 3;
	}

	return(1);
}

A_BOOL	allocateRawDataStruct_gen3(A_UINT32 devNum, RAW_DATA_STRUCT_GEN3  *pRawDataset_gen3, A_UINT16 numChannels)
{
	A_UINT16	i, j, k;
	A_UINT16	numPcdacs = NUM_POINTS_XPD0;

	///allocate room for the channels
	pRawDataset_gen3->pChannels = (A_UINT16 *)malloc(sizeof(A_UINT16) * numChannels);
	if (NULL == pRawDataset_gen3->pChannels) {
		mError(devNum, EIO,"unable to allocate raw data struct (gen3)\n");
		return(0);
	}

	pRawDataset_gen3->pDataPerChannel = (RAW_DATA_PER_CHANNEL_GEN3 *)malloc(sizeof(RAW_DATA_PER_CHANNEL_GEN3) * numChannels);
	if (NULL == pRawDataset_gen3->pDataPerChannel) {
		mError(devNum, EIO,"unable to allocate raw data struct data per channel(gen3)\n");
		free(pRawDataset_gen3->pChannels);
		return(0);
	}
	
	pRawDataset_gen3->numChannels = numChannels;

	for(i = 0; i < numChannels; i ++) {
		pRawDataset_gen3->pDataPerChannel[i].pDataPerXPD = NULL;
		
		pRawDataset_gen3->pDataPerChannel[i].pDataPerXPD = (RAW_DATA_PER_XPD_GEN3 *)malloc(sizeof(RAW_DATA_PER_XPD_GEN3) * NUM_XPD_PER_CHANNEL);
		if (NULL == pRawDataset_gen3->pDataPerChannel[i].pDataPerXPD) {
			mError(devNum, EIO,"unable to allocate raw data struct pDataPerXPD (gen3)\n");
			break; //will cleanup outside loop
		}
		for (j=0; j<NUM_XPD_PER_CHANNEL ; j++) {
			pRawDataset_gen3->pDataPerChannel[i].pDataPerXPD[j].pcdac = (A_UINT16 *)malloc(numPcdacs*sizeof(A_UINT16));
			if(pRawDataset_gen3->pDataPerChannel[i].pDataPerXPD[j].pcdac == NULL) {
				mError(devNum, EIO,"unable to allocate pcdacs for an xpd_gain (gen3)\n");
				break;
			}
			pRawDataset_gen3->pDataPerChannel[i].pDataPerXPD[j].pwr_t4 = (A_INT16 *)malloc(numPcdacs*sizeof(A_INT16));
			if(pRawDataset_gen3->pDataPerChannel[i].pDataPerXPD[j].pwr_t4 == NULL) {
				mError(devNum, EIO,"unable to allocate pwr_t4 for an xpd_gain (gen3)\n");
				if (pRawDataset_gen3->pDataPerChannel[i].pDataPerXPD[j].pcdac != NULL) {
					free(pRawDataset_gen3->pDataPerChannel[i].pDataPerXPD[j].pcdac);
				}
				break; // cleanup outside the j loop
			}
		}
		if (j != NUM_XPD_PER_CHANNEL) { // malloc must've failed
			for (k=0; k<j; k++) {
				if (pRawDataset_gen3->pDataPerChannel[i].pDataPerXPD[k].pcdac != NULL) {
					free(pRawDataset_gen3->pDataPerChannel[i].pDataPerXPD[k].pcdac);
				}
				if (pRawDataset_gen3->pDataPerChannel[i].pDataPerXPD[k].pwr_t4 != NULL) {
					free(pRawDataset_gen3->pDataPerChannel[i].pDataPerXPD[k].pwr_t4);
				}
			}
			break; // cleanupo outside i loop
		}
	}

	if (i != numChannels) {
		//malloc must have failed, cleanup any allocs
		for (j = 0; j < i; j++) {
			for (k=0; k<NUM_XPD_PER_CHANNEL; k++) {
				if (pRawDataset_gen3->pDataPerChannel[j].pDataPerXPD[k].pcdac != NULL) {
					free(pRawDataset_gen3->pDataPerChannel[j].pDataPerXPD[k].pcdac);
				}
				if (pRawDataset_gen3->pDataPerChannel[j].pDataPerXPD[k].pwr_t4 != NULL) {
					free(pRawDataset_gen3->pDataPerChannel[j].pDataPerXPD[k].pwr_t4);
				}
			}
			if (pRawDataset_gen3->pDataPerChannel[j].pDataPerXPD != NULL) {
				free(pRawDataset_gen3->pDataPerChannel[j].pDataPerXPD);
			}
		}

		mError(devNum, EIO,"Failed to allocate raw data struct (gen3), freeing anything already allocated\n");
		free(pRawDataset_gen3->pDataPerChannel);
		free(pRawDataset_gen3->pChannels);
		pRawDataset_gen3->numChannels = 0;
		return(0);
	}
	return(1);
}



MANLIB_API A_BOOL setup_EEPROM_dataset_gen3(A_UINT32 devNum, EEPROM_DATA_STRUCT_GEN3 *pEEPROMDataset_gen3, A_UINT16 myNumRawChannels, A_UINT16 *pMyRawChanList)
{
	A_UINT16 i,  channelValue;

	if(!allocateEEPROMDataStruct_gen3(devNum, pEEPROMDataset_gen3, myNumRawChannels)) {
		mError(devNum, EIO,"unable to allocate EEPROM dataset (gen3)\n");
		return(0);
	}


	for (i = 0; i < myNumRawChannels; i++) {
		channelValue = pMyRawChanList[i];
		pEEPROMDataset_gen3->pChannels[i] = channelValue;
		pEEPROMDataset_gen3->pDataPerChannel[i].channelValue = channelValue;
	}

	return(1);
}

A_BOOL	allocateEEPROMDataStruct_gen3(A_UINT32 devNum, EEPROM_DATA_STRUCT_GEN3  *pEEPROMDataset_gen3, A_UINT16 numChannels)
{

	//allocate room for the channels
	pEEPROMDataset_gen3->pChannels = (A_UINT16 *)malloc(sizeof(A_UINT16) * numChannels);
	if (NULL == pEEPROMDataset_gen3->pChannels) {
		mError(devNum, EIO,"unable to allocate EEPROM data struct (gen3)\n");
		return(0);
	}

	pEEPROMDataset_gen3->pDataPerChannel = (EEPROM_DATA_PER_CHANNEL_GEN3 *)malloc(sizeof(EEPROM_DATA_PER_CHANNEL_GEN3) * numChannels);
	if (NULL == pEEPROMDataset_gen3->pDataPerChannel) {
		mError(devNum, EIO,"unable to allocate EEPROM data struct data per channel(gen3)\n");
		if (pEEPROMDataset_gen3->pChannels != NULL) {
			free(pEEPROMDataset_gen3->pChannels);
		}
		return(0);
	}
	
	pEEPROMDataset_gen3->numChannels = numChannels;

	return(1);
}


A_BOOL read_Cal_Dataset_From_EEPROM(A_UINT32 devNum, EEPROM_DATA_STRUCT_GEN3 *pCalDataset, A_UINT32 start_offset, A_UINT32 maxPiers, A_UINT32 *words, A_UINT32 devlibMode) {

	A_UINT16	ii;
	A_UINT16	dbmmask				= 0xff;
	A_UINT16	pcdac_delta_mask	= 0x1f;
	A_UINT16	pcdac_mask			= 0x3f;
	A_UINT16	freqmask			= 0xff;
	A_UINT16	idx, numPiers;
	A_UINT16	freq[NUM_11A_EEPROM_CHANNELS];
	LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];
	MODE_HEADER_INFO	hdrInfo;

	idx = (A_UINT16)start_offset;
	ii = 0;
	if (devlibMode == MODE_11A) {
		while (ii < maxPiers) {
			
			if ((words[idx] & freqmask) == 0) {
				idx++;
				break;
			} else {
				freq[ii] = fbin2freq_gen3((words[idx] & freqmask), devlibMode);
			}
			ii++;
			
			if (((words[idx] >> 8) & freqmask) == 0) {
				idx++;
				break;
			} else {
				freq[ii] = fbin2freq_gen3(((words[idx] >> 8) & freqmask), devlibMode);
			}
			ii++;
			idx++;
		}
		idx = (A_UINT16)(start_offset + (NUM_11A_EEPROM_CHANNELS / 2) );
	} else {
		hdrInfo = (devlibMode == MODE_11G) ? pLibDev->p16kEepHeader->info11g : pLibDev->p16kEepHeader->info11b;
		ii = 0;
		if (hdrInfo.calPier1 != 0xff) freq[ii++] = hdrInfo.calPier1;
		if (hdrInfo.calPier2 != 0xff) freq[ii++] = hdrInfo.calPier2;
		if (hdrInfo.calPier3 != 0xff) freq[ii++] = hdrInfo.calPier3;
	}
	numPiers = ii;

	if (!setup_EEPROM_dataset_gen3(devNum, pCalDataset, numPiers, &(freq[0])) ) {
		mError(devNum, EIO,"unable to allocate cal dataset (gen3) in read_from_eeprom...\n");
		return(0);
	}

	for (ii=0; ii<pCalDataset->numChannels; ii++) {

		pCalDataset->pDataPerChannel[ii].pwr1_xg0 = (A_INT16)((words[idx] & dbmmask) - ((words[idx] >> 7) & 0x1)*256);
		pCalDataset->pDataPerChannel[ii].pwr2_xg0 = (A_INT16)(((words[idx] >> 8) & dbmmask) - ((words[idx] >> 15) & 0x1)*256);
		
		idx++;
		pCalDataset->pDataPerChannel[ii].pwr3_xg0 = (A_INT16)((words[idx] & dbmmask) - ((words[idx] >> 7) & 0x1)*256);
		pCalDataset->pDataPerChannel[ii].pwr4_xg0 = (A_INT16)(((words[idx] >> 8) & dbmmask) - ((words[idx] >> 15) & 0x1)*256);
		
		idx++;
		pCalDataset->pDataPerChannel[ii].pcd2_delta_xg0 = (A_UINT16)(words[idx] & pcdac_delta_mask);
		pCalDataset->pDataPerChannel[ii].pcd3_delta_xg0 = (A_UINT16)((words[idx] >> 5) & pcdac_delta_mask);
		pCalDataset->pDataPerChannel[ii].pcd4_delta_xg0 = (A_UINT16)((words[idx] >> 10) & pcdac_delta_mask);

		idx++;
		pCalDataset->pDataPerChannel[ii].pwr1_xg3 = (A_INT16)((words[idx] & dbmmask) - ((words[idx] >> 7) & 0x1)*256);
		pCalDataset->pDataPerChannel[ii].pwr2_xg3 = (A_INT16)(((words[idx] >> 8) & dbmmask) - ((words[idx] >> 15) & 0x1)*256);

		idx++;
		pCalDataset->pDataPerChannel[ii].pwr3_xg3 = (A_INT16)((words[idx] & dbmmask) - ((words[idx] >> 7) & 0x1)*256);
		if((pLibDev->p16kEepHeader->majorVersion == 4) && (pLibDev->p16kEepHeader->minorVersion < 3)) {
			pCalDataset->pDataPerChannel[ii].maxPower_t4 = (A_INT16)(((words[idx] >> 8) & dbmmask) - ((words[idx] >> 15) & 0x1)*256);		
			pCalDataset->pDataPerChannel[ii].pcd1_xg0 = 1;
		} else {
			pCalDataset->pDataPerChannel[ii].maxPower_t4 = pCalDataset->pDataPerChannel[ii].pwr4_xg0;		
			pCalDataset->pDataPerChannel[ii].pcd1_xg0 = (A_UINT16)((words[idx] >> 8) & pcdac_mask);
		}

		idx++;
}

	return(1);
}


void eeprom_to_raw_dataset_gen3(A_UINT32 devNum, EEPROM_DATA_STRUCT_GEN3 *pCalDataset, RAW_DATA_STRUCT_GEN3 *pRawDataset) {

	A_UINT16	ii, jj, kk;
	A_INT16		maxPower_t4;
	RAW_DATA_PER_XPD_GEN3			*pRawXPD;
	EEPROM_DATA_PER_CHANNEL_GEN3	*pCalCh;	//ptr to array of info held per channel
	A_UINT16		xgain_list[2];
	A_UINT16		xpd_mask;

	pRawDataset->xpd_mask = pCalDataset->xpd_mask;

	xgain_list[0] = 0xDEAD;
	xgain_list[1] = 0xDEAD;
 
	kk = 0;
	xpd_mask = pRawDataset->xpd_mask;

	for (jj = 0; jj < NUM_XPD_PER_CHANNEL; jj++) {

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一线二线三线视频| 日韩免费观看2025年上映的电影| 91成人在线观看喷潮| 欧美日韩国产在线观看| 欧美成人性福生活免费看| 国产三级三级三级精品8ⅰ区| 亚洲国产精品国自产拍av| 亚洲永久精品国产| 极品少妇一区二区| 91视频免费观看| 日韩一区二区三区av| 国产精品精品国产色婷婷| 亚洲一区视频在线| 国产一区欧美一区| 欧美三级韩国三级日本一级| 日韩精品综合一本久道在线视频| 国产精品家庭影院| 另类人妖一区二区av| 91色.com| 久久久午夜精品| 一区二区三区欧美日| 国产在线播精品第三| 欧美亚洲高清一区二区三区不卡| 久久久精品中文字幕麻豆发布| 伊人性伊人情综合网| 国产精品一区二区三区99| 欧美日韩一区二区在线观看| 国产精品网友自拍| 蜜臀av性久久久久蜜臀aⅴ| 91麻豆自制传媒国产之光| 精品欧美一区二区三区精品久久| 樱桃国产成人精品视频| 顶级嫩模精品视频在线看| 制服丝袜在线91| 亚洲男人的天堂一区二区 | 欧美三级乱人伦电影| 国产日产欧产精品推荐色 | 日韩精品一区二区在线观看| 亚洲色图一区二区| 国产精品888| 欧美一级精品在线| 亚洲国产中文字幕| a美女胸又www黄视频久久| 久久综合色之久久综合| 丝袜美腿亚洲色图| 91久久精品一区二区二区| 国产性做久久久久久| 精品在线播放免费| 91精品国产一区二区三区蜜臀| 亚洲精选免费视频| av动漫一区二区| 国产色91在线| 国产福利一区二区三区视频| 欧美va亚洲va| 免费高清视频精品| 欧美一区二区三区在线看| 亚洲国产精品嫩草影院| 91精品1区2区| 亚洲女性喷水在线观看一区| av在线播放不卡| 国产精品无码永久免费888| 国产成人综合在线播放| 2020国产精品| 国产一区二区三区精品视频| 2020国产精品| 国产精品一二二区| 日本一区二区三区四区在线视频 | 中文字幕成人在线观看| 国产传媒欧美日韩成人| 国产欧美精品一区二区三区四区 | 国产精品国产馆在线真实露脸| 国产精品一级片| 国产偷国产偷亚洲高清人白洁| 国产一区在线精品| 国产欧美日韩卡一| 不卡一区中文字幕| 日韩理论片网站| 色欧美片视频在线观看| 亚洲资源在线观看| 欧美久久久影院| 免费视频最近日韩| gogogo免费视频观看亚洲一| 亚洲大片精品永久免费| 亚洲色欲色欲www| 26uuu色噜噜精品一区二区| 欧美日韩在线观看一区二区 | 国产美女一区二区三区| 国产女人18水真多18精品一级做| 国产亚洲欧美色| 亚洲韩国一区二区三区| 欧美精品乱人伦久久久久久| 奇米综合一区二区三区精品视频 | 日本中文字幕一区| 日韩欧美成人激情| 国产高清不卡一区二区| 亚洲视频在线一区观看| 欧美日韩一区三区| 免费观看在线综合色| 国产偷国产偷亚洲高清人白洁| 99久精品国产| 午夜影院久久久| 久久无码av三级| 不卡影院免费观看| 午夜不卡在线视频| www国产精品av| 99久久久无码国产精品| 香蕉成人伊视频在线观看| 日韩天堂在线观看| 国产成人精品综合在线观看| 一区二区在线观看av| 日韩一区二区精品在线观看| 国产99精品在线观看| 一区二区三区波多野结衣在线观看 | 精品久久久久久久久久久久久久久 | 日韩一区二区三区四区| 懂色av一区二区三区蜜臀| 亚洲一区二区三区美女| 精品国产91久久久久久久妲己| av在线不卡网| 日本不卡视频在线观看| 1区2区3区欧美| 日韩午夜激情电影| 色偷偷成人一区二区三区91| 久久精品久久精品| 亚洲欧美色图小说| 精品国产乱码久久久久久1区2区 | 亚洲精品亚洲人成人网| 日韩欧美成人一区| 91电影在线观看| 国产黑丝在线一区二区三区| 精品99久久久久久| 18涩涩午夜精品.www| 九色|91porny| 欧美成人女星排名| 久久精品人人做人人爽97| **欧美大码日韩| 五月综合激情日本mⅴ| 国产麻豆日韩欧美久久| 久久久高清一区二区三区| 久久久亚洲午夜电影| 亚洲精品国产a| 日本va欧美va精品| 欧美一三区三区四区免费在线看| 亚洲午夜久久久久久久久电影院 | 亚洲国产精品av| 日韩欧美国产综合| 欧美色中文字幕| av一区二区三区黑人| 国产乱理伦片在线观看夜一区| 同产精品九九九| 亚洲色图欧洲色图| 亚洲国产经典视频| 精品美女一区二区三区| 欧美日韩不卡视频| 日本久久一区二区| caoporen国产精品视频| 国产精品夜夜嗨| 韩国av一区二区三区在线观看| 午夜视频在线观看一区二区三区| 亚洲欧洲成人精品av97| 久久综合久久鬼色中文字| 日韩欧美亚洲一区二区| 欧美精品色综合| 欧美性欧美巨大黑白大战| 91热门视频在线观看| kk眼镜猥琐国模调教系列一区二区| 国产精品一区二区91| 国产综合色视频| 精品在线一区二区| 久久精品av麻豆的观看方式| 日韩国产欧美在线观看| 午夜精品一区二区三区免费视频| 亚洲尤物在线视频观看| 一区二区三区高清不卡| 亚洲精品国产品国语在线app| 亚洲欧美日本韩国| 中文字幕亚洲不卡| 亚洲欧洲日产国产综合网| 18涩涩午夜精品.www| 综合婷婷亚洲小说| 一区二区视频免费在线观看| 亚洲欧美视频一区| 亚洲综合成人在线视频| 亚洲国产cao| 视频一区视频二区中文| 日韩精品电影在线观看| 青青草原综合久久大伊人精品 | 欧美精品一区二区三区四区 | 97久久人人超碰| 91丨porny丨户外露出| 色婷婷综合激情| 日本精品裸体写真集在线观看| 91精品1区2区| 91久久一区二区| 丁香网亚洲国际| 亚洲综合在线第一页| 亚洲精品视频一区| 久久久美女毛片| 在线观看日韩毛片| 国产精品正在播放|