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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? meeprom_d.c

?? Atheros AP Test with Agilent N4010A source code
?? C
?? 第 1 頁 / 共 3 頁
字號:
		if (((xpd_mask >> jj) & 1) > 0) {
			if (kk > 1) {
				printf("A maximum of 2 xpd_gains supported in eep_to_raw_data\n");
				exit(0);
			}
			xgain_list[kk++] = (A_UINT16) jj;			
		}
	}

	pRawDataset->numChannels = pCalDataset->numChannels;
	for (ii = 0; ii < pRawDataset->numChannels; ii++) {
		pCalCh = &(pCalDataset->pDataPerChannel[ii]);
		pRawDataset->pDataPerChannel[ii].channelValue = pCalCh->channelValue;
		pRawDataset->pDataPerChannel[ii].maxPower_t4  = pCalCh->maxPower_t4;
		maxPower_t4 = pRawDataset->pDataPerChannel[ii].maxPower_t4;
	
		if (xgain_list[1] == 0xDEAD) {	// case of single xpd_gain cal
			for (jj=0; jj<NUM_XPD_PER_CHANNEL; jj++) {
				pRawDataset->pDataPerChannel[ii].pDataPerXPD[jj].numPcdacs = 0;
			}

			jj = xgain_list[0];
			pRawXPD = &(pRawDataset->pDataPerChannel[ii].pDataPerXPD[jj]);
			pRawXPD->numPcdacs = 4;
			pRawXPD->pcdac[0] = pCalCh->pcd1_xg0;
			pRawXPD->pcdac[1] = (A_UINT16)(pRawXPD->pcdac[0] + pCalCh->pcd2_delta_xg0);
			pRawXPD->pcdac[2] = (A_UINT16)(pRawXPD->pcdac[1] + pCalCh->pcd3_delta_xg0);
			pRawXPD->pcdac[3] = (A_UINT16)(pRawXPD->pcdac[2] + pCalCh->pcd4_delta_xg0);

			pRawXPD->pwr_t4[0] = pCalCh->pwr1_xg0;
			pRawXPD->pwr_t4[1] = pCalCh->pwr2_xg0;
			pRawXPD->pwr_t4[2] = pCalCh->pwr3_xg0;
			pRawXPD->pwr_t4[3] = pCalCh->pwr4_xg0;
	
		} else {
			for (jj=0; jj<NUM_XPD_PER_CHANNEL; jj++) {
				pRawDataset->pDataPerChannel[ii].pDataPerXPD[jj].numPcdacs = 0;
			}

			pRawDataset->pDataPerChannel[ii].pDataPerXPD[xgain_list[0]].pcdac[0] = pCalCh->pcd1_xg0;
			pRawDataset->pDataPerChannel[ii].pDataPerXPD[xgain_list[1]].pcdac[0] = 20;
			pRawDataset->pDataPerChannel[ii].pDataPerXPD[xgain_list[1]].pcdac[1] = 35;
			pRawDataset->pDataPerChannel[ii].pDataPerXPD[xgain_list[1]].pcdac[2] = 63;

			jj = xgain_list[0];
			pRawXPD = &(pRawDataset->pDataPerChannel[ii].pDataPerXPD[jj]);
			pRawXPD->numPcdacs = 4;
			pRawXPD->pcdac[1] = (A_UINT16)(pRawXPD->pcdac[0] + pCalCh->pcd2_delta_xg0);
			pRawXPD->pcdac[2] = (A_UINT16)(pRawXPD->pcdac[1] + pCalCh->pcd3_delta_xg0);
			pRawXPD->pcdac[3] = (A_UINT16)(pRawXPD->pcdac[2] + pCalCh->pcd4_delta_xg0);
			pRawXPD->pwr_t4[0] = pCalCh->pwr1_xg0;
			pRawXPD->pwr_t4[1] = pCalCh->pwr2_xg0;
			pRawXPD->pwr_t4[2] = pCalCh->pwr3_xg0;
			pRawXPD->pwr_t4[3] = pCalCh->pwr4_xg0;
				
			jj = xgain_list[1];
			pRawXPD = &(pRawDataset->pDataPerChannel[ii].pDataPerXPD[jj]);
			pRawXPD->numPcdacs = 3;

			pRawXPD->pwr_t4[0] = pCalCh->pwr1_xg3;
			pRawXPD->pwr_t4[1] = pCalCh->pwr2_xg3;
			pRawXPD->pwr_t4[2] = pCalCh->pwr3_xg3;
		}
	}
	devNum = 0;  //quiet warnings
}


A_BOOL get_xpd_gain_and_pcdacs_for_powers
(
 A_UINT32				devNum,                         // In
 A_UINT16				channel,                         // In       
 RAW_DATA_STRUCT_GEN3	*pRawDataset,					// In
 A_UINT32				numXpdGain,                      // In
 A_UINT32				xpdGainMask,                      // In     - desired xpd_gain
 A_INT16				*pPowerMin,                      // In/Out	(2 x power)
 A_INT16				*pPowerMax,                      // In/Out	(2 x power)
 A_INT16				*pPowerMid,                      // Out		(2 x power)
 A_UINT16				pXpdGainValues[],               // Out
 A_UINT16				pPCDACValues[]                  // Out 
)
{
	A_UINT32	ii, jj, kk;
	A_INT16		minPwr_t4, maxPwr_t4, Pmin, Pmid;

	A_UINT32	chan_idx_L, chan_idx_R;
	A_UINT16	chan_L, chan_R;
	
	A_INT16		pwr_table0[64];
	A_INT16		pwr_table1[64];
	RAW_DATA_PER_CHANNEL_GEN3	*pRawCh;	
	A_UINT16	pcdacs[10];
	A_INT16		powers[10];
	A_UINT16	numPcd;
	A_INT16		powTableLXPD[2][64];
	A_INT16		powTableHXPD[2][64];
	A_INT16		tmpPowerTable[64];
	A_UINT16		xgain_list[2];
	A_UINT16		xpd_mask;
	LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];
	
	if (pRawDataset == NULL) {
		mError(devNum, EINVAL,"NULL dataset pointer. This mode may not be supported.\n");
		return(FALSE);
	}
	
	if ((xpdGainMask & pRawDataset->xpd_mask) < 1) {
		mError(devNum, EINVAL,"desired xpdGainMask not supported by calibrated xpd_mask\n");
		return(FALSE);
	}

	maxPwr_t4 = (A_INT16)(2*(*pPowerMax));   // pwr_t2 -> pwr_t4
	minPwr_t4 = (A_INT16)(2*(*pPowerMin));	  // pwr_t2 -> pwr_t4



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

	for (jj = 0; jj < NUM_XPD_PER_CHANNEL; jj++) {
		if (((xpd_mask >> jj) & 1) > 0) {
			if (kk > 1) {
				printf("A maximum of 2 xpd_gains supported in eep_to_raw_data\n");
				exit(0);
			}
			xgain_list[kk++] = (A_UINT16) jj;			
		}
	}

	mdk_GetLowerUpperIndex(channel, &(pRawDataset->pChannels[0]), pRawDataset->numChannels, &(chan_idx_L), &(chan_idx_R));

	kk = 0;
	for (ii=chan_idx_L; ii<=chan_idx_R; ii++) {
		pRawCh = &(pRawDataset->pDataPerChannel[ii]);
		if (xgain_list[1] == 0xDEAD) {
			jj = xgain_list[0];
			numPcd = pRawCh->pDataPerXPD[jj].numPcdacs;
			memcpy(&(pcdacs[0]), &(pRawCh->pDataPerXPD[jj].pcdac[0]), numPcd*sizeof(A_UINT16));
			memcpy(&(powers[0]), &(pRawCh->pDataPerXPD[jj].pwr_t4[0]), numPcd*sizeof(A_INT16));
			if (!mdk_getFullPwrTable(devNum, numPcd, &(pcdacs[0]), &(powers[0]), pRawCh->maxPower_t4, &(tmpPowerTable[0]))) {
				return(FALSE);
			} else {
				memcpy(&(powTableLXPD[kk][0]), &(tmpPowerTable[0]), 64*sizeof(A_INT16));
			}
		} else {
			jj = xgain_list[0];
			numPcd = pRawCh->pDataPerXPD[jj].numPcdacs;
			memcpy(&(pcdacs[0]), &(pRawCh->pDataPerXPD[jj].pcdac[0]), numPcd*sizeof(A_UINT16));
			memcpy(&(powers[0]), &(pRawCh->pDataPerXPD[jj].pwr_t4[0]), numPcd*sizeof(A_INT16));
			if (!mdk_getFullPwrTable(devNum, numPcd, &(pcdacs[0]), &(powers[0]), pRawCh->maxPower_t4, &(tmpPowerTable[0]))) {
				return(FALSE);
			} else {
				memcpy(&(powTableLXPD[kk][0]), &(tmpPowerTable[0]), 64*sizeof(A_INT16));
			}

			jj = xgain_list[1];
			numPcd = pRawCh->pDataPerXPD[jj].numPcdacs;
			memcpy(&(pcdacs[0]), &(pRawCh->pDataPerXPD[jj].pcdac[0]), numPcd*sizeof(A_UINT16));
			memcpy(&(powers[0]), &(pRawCh->pDataPerXPD[jj].pwr_t4[0]), numPcd*sizeof(A_INT16));
			if (!mdk_getFullPwrTable(devNum, numPcd, &(pcdacs[0]), &(powers[0]), pRawCh->maxPower_t4, &(tmpPowerTable[0]))) {
				return(FALSE);
			} else {
				memcpy(&(powTableHXPD[kk][0]), &(tmpPowerTable[0]), 64*sizeof(A_INT16));
			}
		}
			
		kk++;
	}
	
	chan_L = pRawDataset->pChannels[chan_idx_L];
	chan_R = pRawDataset->pChannels[chan_idx_R];
	kk = chan_idx_R - chan_idx_L;

	pLibDev->maxLinPwrx4 = mdk_GetInterpolatedValue_Signed16(channel, chan_L, chan_R, 
										pRawDataset->pDataPerChannel[chan_idx_L].pDataPerXPD[0].pwr_t4[2],
										pRawDataset->pDataPerChannel[chan_idx_R].pDataPerXPD[0].pwr_t4[2]);

	if (xgain_list[1] == 0xDEAD) {
		for (jj=0; jj<64; jj++) {
			pwr_table0[jj] = mdk_GetInterpolatedValue_Signed16(channel, chan_L, chan_R, powTableLXPD[0][jj], powTableLXPD[kk][jj]);			
		}
		Pmin = getPminAndPcdacTableFromPowerTable(devNum, &(pwr_table0[0]), pPCDACValues);
		*pPowerMin = (A_INT16) (Pmin / 2);
		*pPowerMid = (A_INT16) (pwr_table0[63] / 2);
		*pPowerMax = (A_INT16) (pwr_table0[63] / 2);
		pXpdGainValues[0] = xgain_list[0];
		pXpdGainValues[1] = pXpdGainValues[0];
	} else {
		for (jj=0; jj<64; jj++) {
			pwr_table0[jj] = mdk_GetInterpolatedValue_Signed16(channel, chan_L, chan_R, powTableLXPD[0][jj], powTableLXPD[kk][jj]);			
			pwr_table1[jj] = mdk_GetInterpolatedValue_Signed16(channel, chan_L, chan_R, powTableHXPD[0][jj], powTableHXPD[kk][jj]);			
		}
		if (numXpdGain == 2) {
	    	Pmin = getPminAndPcdacTableFromTwoPowerTables(devNum, &(pwr_table0[0]), &(pwr_table1[0]), pPCDACValues, &Pmid);
			*pPowerMin = (A_INT16) (Pmin / 2);
			*pPowerMid = (A_INT16) (Pmid / 2);
			*pPowerMax = (A_INT16) (pwr_table0[63] / 2);
			pXpdGainValues[0] = xgain_list[0];
			pXpdGainValues[1] = xgain_list[1];
		} else {
			if ( (minPwr_t4  <= pwr_table1[63]) && (maxPwr_t4  <= pwr_table1[63])) {
				Pmin = getPminAndPcdacTableFromPowerTable(devNum, &(pwr_table1[0]), pPCDACValues);
				pXpdGainValues[0] = xgain_list[1];
				pXpdGainValues[1] = pXpdGainValues[0];
				*pPowerMin = (A_INT16) (Pmin / 2);
				*pPowerMid = (A_INT16) (pwr_table1[63] / 2);
				*pPowerMax = (A_INT16) (pwr_table1[63] / 2);
			} else {
				Pmin = getPminAndPcdacTableFromPowerTable(devNum, &(pwr_table0[0]), pPCDACValues);
				pXpdGainValues[0] = xgain_list[0];
				pXpdGainValues[1] = xgain_list[0];
				*pPowerMin = (A_INT16) (Pmin/2);
				*pPowerMid = (A_INT16) (pwr_table0[63] / 2);
				*pPowerMax = (A_INT16) (pwr_table0[63] / 2);
			}
		}
	}

	if (isFalcon(devNum)) {
// since eirp_limited mode in falcon can't handle different Pmax values for 2 chains
// make it fixed 0-31.5 dBm
		*pPowerMax  = 63;
//		*pPowerMax += 2*FALCON_BAND_EIRP_HEADROOM_IN_DB;
	}

	devNum = 0;   //quiet compiler

    return(TRUE);
}
	

A_INT16 mdk_GetInterpolatedValue_Signed16(A_UINT16 target, A_UINT16 srcLeft, A_UINT16 srcRight, 
							 A_INT16 targetLeft, A_INT16 targetRight)
{
  A_INT16 returnValue;

  if (srcRight != srcLeft) {
		returnValue = (A_INT16)( ( (target - srcLeft)*targetRight + (srcRight - target)*targetLeft)/(srcRight - srcLeft));
  } 
  else {
		returnValue = targetLeft;
  }
  return (returnValue);
}


// returns indices surrounding the value in sorted integer lists. used for channel and pcdac lists
void mdk_GetLowerUpperIndex (
 A_UINT16	value,			//value to search for
 A_UINT16	*pList,			//ptr to the list to search
 A_UINT16	listSize,		//number of entries in list
 A_UINT32	*pLowerValue,	//return the lower value
 A_UINT32	*pUpperValue	//return the upper value	
)
{
	A_UINT16	i;
	A_UINT16	listEndValue = *(pList + listSize - 1);
	A_UINT16	target = value ;

	//see if value is lower than the first value in the list
	//if so return first value
	if (target <= (*pList)) {
		*pLowerValue = 0;
		*pUpperValue = 0;
		return;
	}
  
	//see if value is greater than last value in list
	//if so return last value
	if (target >= listEndValue) {
		*pLowerValue = listSize - 1;
		*pUpperValue = listSize - 1;
		return;
	}

	//look for value being near or between 2 values in list
	for(i = 0; i < listSize; i++) {
		//if value is close to the current value of the list 
		//then target is not between values, it is one of the values
		if (pList[i] == target) {
			*pLowerValue = i;
			*pUpperValue = i;
			return;
		}

		//look for value being between current value and next value
		//if so return these 2 values
		if (target < pList[i + 1]) {
			*pLowerValue = i;
			*pUpperValue = i + 1;
			return;
		}
	}
} 

A_UINT16 fbin2freq_gen3(A_UINT32 fbin, A_UINT32 mode)
{
	A_UINT16 returnValue; 

	if(mode == MODE_11A) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
岛国一区二区三区| 在线观看成人免费视频| 亚洲人午夜精品天堂一二香蕉| 在线亚洲人成电影网站色www| 国内精品国产成人| 亚洲午夜免费视频| 一区在线播放视频| 欧美精品一区二区三区蜜臀| 欧美四级电影在线观看| 成人18视频在线播放| 久久国产日韩欧美精品| 一区二区三区免费| 亚洲视频在线观看一区| 国产亚洲欧美日韩在线一区| 欧美大胆一级视频| 欧美群妇大交群的观看方式 | 成人午夜视频免费看| 日本不卡一二三区黄网| 亚洲国产成人va在线观看天堂| 国产精品国产三级国产a| 精品国产一区二区三区不卡 | 久久综合九色综合欧美亚洲| 欧美精品久久99久久在免费线| 色综合天天综合网国产成人综合天| 加勒比av一区二区| 天堂蜜桃91精品| 亚洲人成7777| 亚洲男人的天堂在线观看| 中文乱码免费一区二区| 国产喷白浆一区二区三区| 欧美白人最猛性xxxxx69交| 日韩欧美一区二区视频| 欧美一级夜夜爽| 91麻豆精品91久久久久同性| 精品视频123区在线观看| 在线亚洲高清视频| 在线看国产一区| 在线观看日韩高清av| 在线免费亚洲电影| 在线精品视频免费播放| 色婷婷国产精品| 91豆麻精品91久久久久久| 91精品办公室少妇高潮对白| 在线视频你懂得一区| 欧美午夜精品久久久久久超碰| 欧美影院一区二区| 欧美日韩国产免费| 在线成人午夜影院| 精品乱人伦小说| 国产人成一区二区三区影院| 国产精品电影一区二区| 亚洲精品国产高清久久伦理二区| 亚洲视频在线一区观看| 一卡二卡欧美日韩| 日韩高清一区在线| 国产一区二区在线观看免费| 成人综合激情网| 91久久精品网| 精品三级在线观看| 国产欧美日韩久久| 亚洲精品国产一区二区精华液| 亚洲动漫第一页| 美美哒免费高清在线观看视频一区二区| 久久成人18免费观看| 成人精品高清在线| 91极品视觉盛宴| 精品久久久影院| 国产精品看片你懂得| 一区二区三区在线播放| 日韩精品亚洲一区二区三区免费| 精品系列免费在线观看| av在线播放成人| 日韩一区二区在线观看视频| 国产亚洲一区二区三区四区| 亚洲精品欧美在线| 蜜臀久久99精品久久久久宅男| 国产福利一区二区三区视频| 在线一区二区三区做爰视频网站| 日韩免费高清av| 亚洲视频一二三区| 久久精品国产在热久久| 色欲综合视频天天天| 日韩视频免费观看高清在线视频| 欧美激情一区二区在线| 丝袜美腿亚洲一区| 99热99精品| 日韩久久久精品| 亚洲精品第一国产综合野| 美女看a上一区| 在线观看国产一区二区| 久久午夜羞羞影院免费观看| 亚洲一区影音先锋| 成人av动漫在线| 欧美v亚洲v综合ⅴ国产v| 亚洲资源在线观看| 国产成人一级电影| 欧美二区三区的天堂| 综合亚洲深深色噜噜狠狠网站| 裸体一区二区三区| 欧美天堂亚洲电影院在线播放| 欧美—级在线免费片| 久久精品99国产精品日本| 91精彩视频在线观看| 国产精品伦理在线| 国产在线一区观看| 欧美一区二区视频在线观看2022| 亚洲精选视频在线| 成人网页在线观看| 精品日韩欧美在线| 青娱乐精品视频| 欧美三级一区二区| 亚洲天堂网中文字| www.视频一区| 国产喷白浆一区二区三区| 精一区二区三区| 日韩欧美一区二区三区在线| 五月天一区二区| 欧美日韩在线综合| 亚洲精品久久久蜜桃| 91免费看`日韩一区二区| 国产日韩欧美a| 国产盗摄精品一区二区三区在线| 日韩欧美视频在线| 美日韩一区二区| 91精品在线麻豆| 日韩av一区二区在线影视| 欧美午夜一区二区三区 | 亚洲不卡在线观看| 欧美日韩日本视频| 亚洲综合另类小说| 欧美综合一区二区| 亚洲高清不卡在线观看| 欧美精品一级二级| 三级久久三级久久| 日韩一区二区三区四区五区六区| 日韩中文字幕不卡| 日韩欧美一区电影| 国产一区在线看| 国产欧美视频一区二区三区| 成人性视频网站| 亚洲欧洲综合另类在线| 日本韩国欧美国产| 同产精品九九九| 日韩一区二区在线看| 国产一区二区在线观看视频| 国产女同互慰高潮91漫画| 99精品欧美一区二区蜜桃免费| 国产精品夫妻自拍| 欧美体内she精视频| 免费精品视频在线| 久久精品一区二区三区四区| 国产福利一区二区三区| 亚洲欧美怡红院| 欧美三级中文字幕在线观看| 免费一区二区视频| 国产丝袜在线精品| 99国产精品国产精品久久| 一区二区免费看| 6080日韩午夜伦伦午夜伦| 老司机午夜精品99久久| 中文一区二区在线观看| 欧美系列在线观看| 国内久久婷婷综合| ...xxx性欧美| 91精品啪在线观看国产60岁| 国产伦理精品不卡| 亚洲精品国产精品乱码不99| 日韩午夜精品电影| www.亚洲激情.com| 美腿丝袜一区二区三区| 中文字幕视频一区二区三区久| 欧美日韩一级片网站| 国产美女视频91| 亚洲国产日产av| wwww国产精品欧美| 日本精品一区二区三区高清 | 免费高清不卡av| 国产精品视频第一区| 欧美日韩一区不卡| 国产91精品欧美| 丝袜美腿亚洲一区二区图片| 国产精品网站在线播放| 欧美裸体bbwbbwbbw| 国产宾馆实践打屁股91| 性久久久久久久久久久久| 久久久精品一品道一区| 欧美疯狂做受xxxx富婆| www.性欧美| 激情久久五月天| 亚洲成人av在线电影| 一色桃子久久精品亚洲| 欧美哺乳videos| 色噜噜偷拍精品综合在线| 国产一区二区不卡老阿姨| 亚洲电影中文字幕在线观看| 国产精品久久久久久久久久久免费看 | 亚洲 欧美综合在线网络| 中文幕一区二区三区久久蜜桃| 欧美一区二区日韩| 欧美综合一区二区|