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

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

?? meeprom_d.c

?? Atheros AP Test with Agilent N4010A source code
?? C
?? 第 1 頁 / 共 3 頁
字號:
		returnValue = (A_UINT16)(4800 + 5*fbin);
	}
	else {
		returnValue = (A_UINT16)(2300 + fbin);
	}
	return returnValue;
}

A_BOOL initialize_datasets(A_UINT32 devNum, EEPROM_DATA_STRUCT_GEN3 *pCalDataset_gen3[], RAW_DATA_STRUCT_GEN3  *pRawDataset_gen3[]) {

	A_UINT32	words[400];
	A_UINT16	start_offset		= 0x150; // for 16k eeprom (0x2BE - 0x150) = 367. 0x2BE is the max possible end of CTL section.
	A_UINT32	maxPiers;
	LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];

	// read only upto the end of CTL section
	// 0x2BE is the max possible end of CTL section.
	// for 16k eeprom (0x2BE - 0x150) = 367. 
	eepromReadBlock(devNum, (start_offset + pLibDev->eepromStartLoc), 367, words);


	// setup datasets for mode_11a first
	start_offset = 0;

	if (pLibDev->p16kEepHeader->Amode) {
		maxPiers = NUM_11A_EEPROM_CHANNELS;
	
		pCalDataset_gen3[MODE_11A] = (EEPROM_DATA_STRUCT_GEN3 *)malloc(sizeof(EEPROM_DATA_STRUCT_GEN3));
		if(NULL == pCalDataset_gen3[MODE_11A]) {
			mError(devNum, ENOMEM, "unable to allocate 11a gen3 cal data struct\n");
			return(0);
		}
		if (!read_Cal_Dataset_From_EEPROM(devNum, pCalDataset_gen3[MODE_11A], start_offset, maxPiers,  &(words[0]), MODE_11A ) ) {
			mError(devNum, EIO,"unable to allocate cal dataset (gen3) for mode 11a\n");
			return(0);
		}
		pCalDataset_gen3[MODE_11A]->xpd_mask = pLibDev->p16kEepHeader->info11a.xgain;
		pRawDataset_gen3[MODE_11A] = (RAW_DATA_STRUCT_GEN3 *)malloc(sizeof(RAW_DATA_STRUCT_GEN3));
		if(NULL == pRawDataset_gen3[MODE_11A]) {
			mError(devNum, ENOMEM, "unable to allocate 11a gen3 raw data struct\n");
			return(0);
		}
		setup_raw_dataset_gen3(devNum, pRawDataset_gen3[MODE_11A], pCalDataset_gen3[MODE_11A]->numChannels, pCalDataset_gen3[MODE_11A]->pChannels);
		if(pCalDataset_gen3[MODE_11A]->xpd_mask == 0) {
			mError(devNum, EIO,"illegal xpd_mask mode 11a, must be non-zero (gen3)\n");
			return(0);
		}
		eeprom_to_raw_dataset_gen3(devNum, pCalDataset_gen3[MODE_11A], pRawDataset_gen3[MODE_11A]);


		// setup datasets for mode_11b next
		start_offset = (A_UINT16)(5 + pCalDataset_gen3[MODE_11A]->numChannels*5 );
	} else {
		pRawDataset_gen3[MODE_11A] = NULL;
		pCalDataset_gen3[MODE_11A] = NULL;
	}

	if (pLibDev->p16kEepHeader->Bmode) {
		maxPiers = NUM_2_4_EEPROM_CHANNELS;

		pCalDataset_gen3[MODE_11B] = (EEPROM_DATA_STRUCT_GEN3 *)malloc(sizeof(EEPROM_DATA_STRUCT_GEN3));
		if(NULL == pCalDataset_gen3[MODE_11B]) {
			mError(devNum, ENOMEM, "unable to allocate 11b gen3 cal data struct\n");
			return(0);
		}
		if (!read_Cal_Dataset_From_EEPROM(devNum, pCalDataset_gen3[MODE_11B], start_offset, maxPiers,  &(words[0]), MODE_11B ) ) {
			mError(devNum, EIO,"unable to allocate cal dataset (gen3) for mode 11b\n");
			return(0);
		}
		pCalDataset_gen3[MODE_11B]->xpd_mask = pLibDev->p16kEepHeader->info11b.xgain;
		pRawDataset_gen3[MODE_11B] = (RAW_DATA_STRUCT_GEN3 *)malloc(sizeof(RAW_DATA_STRUCT_GEN3));
		if(NULL == pRawDataset_gen3[MODE_11B]) {
			mError(devNum, ENOMEM, "unable to allocate 11b gen3 raw data struct\n");
			return(0);
		}
		setup_raw_dataset_gen3(devNum, pRawDataset_gen3[MODE_11B], pCalDataset_gen3[MODE_11B]->numChannels, pCalDataset_gen3[MODE_11B]->pChannels);
		if(pCalDataset_gen3[MODE_11B]->xpd_mask == 0) {
			mError(devNum, EIO,"illegal xpd_mask (mode 11b), must be non-zero (gen3)\n");
			return(0);
		}
		eeprom_to_raw_dataset_gen3(devNum, pCalDataset_gen3[MODE_11B], pRawDataset_gen3[MODE_11B]);

		// setup datasets for mode_11g next
		start_offset = (A_UINT16) (start_offset + pCalDataset_gen3[MODE_11B]->numChannels*5);
	} else {
		pRawDataset_gen3[MODE_11B] = NULL;
		pCalDataset_gen3[MODE_11B] = NULL;
	}

	if (pLibDev->p16kEepHeader->Gmode) {
		maxPiers = NUM_2_4_EEPROM_CHANNELS;
		pCalDataset_gen3[MODE_11G] = (EEPROM_DATA_STRUCT_GEN3 *)malloc(sizeof(EEPROM_DATA_STRUCT_GEN3));
		if(NULL == pCalDataset_gen3[MODE_11G]) {
			mError(devNum, ENOMEM, "unable to allocate 11g gen3 cal data struct\n");
			return(0);
		}
		if (!read_Cal_Dataset_From_EEPROM(devNum, pCalDataset_gen3[MODE_11G], start_offset, maxPiers,  &(words[0]), MODE_11G ) ) {
			mError(devNum, EIO,"unable to allocate cal dataset (gen3) for mode 11g\n");
			return(0);
		}
		pCalDataset_gen3[MODE_11G]->xpd_mask = pLibDev->p16kEepHeader->info11g.xgain;
		pRawDataset_gen3[MODE_11G] = (RAW_DATA_STRUCT_GEN3 *)malloc(sizeof(RAW_DATA_STRUCT_GEN3));
		if(NULL == pRawDataset_gen3[MODE_11G]) {
			mError(devNum, ENOMEM, "unable to allocate 11g gen3 raw data struct\n");
			return(0);
		}
		setup_raw_dataset_gen3(devNum, pRawDataset_gen3[MODE_11G], pCalDataset_gen3[MODE_11G]->numChannels, pCalDataset_gen3[MODE_11G]->pChannels);
		if(pCalDataset_gen3[MODE_11G]->xpd_mask == 0) {
			mError(devNum, EIO,"illegal xpd_mask mode 11g, must be non-zero (gen3)\n");
			return(0);
		}
		eeprom_to_raw_dataset_gen3(devNum, pCalDataset_gen3[MODE_11G], pRawDataset_gen3[MODE_11G]);
	} else {
		pRawDataset_gen3[MODE_11G] = NULL;
		pCalDataset_gen3[MODE_11G] = NULL;
	}

	// REMEMBER TO FREE THE CAL DATASETS HERE

	return(1);
}

// expand the pcdac intercepts to generate full pcdacs-to-power table for pcdacs 1..63. 
//    capped with maxPower
A_BOOL mdk_getFullPwrTable(A_UINT32 devNum, A_UINT16 numPcdacs, A_UINT16 *pcdacs, A_INT16 *power, A_INT16 maxPower, A_INT16 *retVals) {

	A_UINT16	ii;
	A_UINT16	idxL = 0;
	A_UINT16	idxR = 1;

	if (numPcdacs < 2) {
		mError(devNum, EINVAL, "at least 2 pcdac values needed in mdk_getFullPwrTable - [%d]\n", numPcdacs);
		return(FALSE);
	}

	for (ii=0; ii<64; ii++) {
		if ((ii>pcdacs[idxR]) && (idxR < (numPcdacs-1))) {
			idxL++;
			idxR++;
		}
		retVals[ii] = mdk_GetInterpolatedValue_Signed16(ii, pcdacs[idxL], pcdacs[idxR], power[idxL], power[idxR]);
		if (retVals[ii] >= maxPower) {
			while (ii<64) {
				retVals[ii++] = maxPower;
			}
		}
	}
	return(TRUE);
}


A_INT16 getPminAndPcdacTableFromPowerTable(A_UINT32 devNum, A_INT16 *pwrTable_t4, A_UINT16 retVals[]) {
	A_INT16	ii, jj, jj_max;
	A_INT16		Pmin, currPower, Pmax;
	
	// if the spread is > 31.5dB, keep the upper 31.5dB range
	if ((pwrTable_t4[63] - pwrTable_t4[0]) > 126) {
		Pmin = (A_INT16) (pwrTable_t4[63] - 126);
	} else {
		Pmin = pwrTable_t4[0];
	}

/*
	if (Pmin >= 0) {
		Pmin = 0;
	}
*/

	Pmax = pwrTable_t4[63];
	jj_max = 63;
	// search for highest pcdac 0.25dB below maxPower
	while ((pwrTable_t4[jj_max] > (Pmax - 1) ) && (jj_max >= 0)){
		jj_max--;
	} 


	jj = jj_max;
	currPower = Pmax;
	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
		currPower = 126;
		Pmin = 0;
//		currPower += 4*FALCON_BAND_EIRP_HEADROOM_IN_DB;
//		Pmin      += 4*FALCON_BAND_EIRP_HEADROOM_IN_DB;
	}

	for (ii=63; ii>=0; ii--) {
		while ((jj<64) && (jj>0) && (pwrTable_t4[jj] >= currPower)) {
			jj--;
		}
		if (jj == 0) {
			while (ii >= 0) {
				retVals[ii] = retVals[ii+1];
				ii--;
			}
			break;
		}
		retVals[ii] = jj;
		currPower -= 2;  // corresponds to a 0.5dB step
	}
	return(Pmin);
}

A_INT16 getPminAndPcdacTableFromTwoPowerTables(A_UINT32 devNum, A_INT16 *pwrTableLXPD_t4, A_INT16 *pwrTableHXPD_t4, A_UINT16 retVals[], A_INT16 *Pmid) {
	A_INT16		ii, jj, jj_max;
	A_INT16		Pmin, currPower, Pmax;
	A_INT16		*pwrTable_t4;
	A_UINT16	msbFlag = 0x40;  // turns on the 7th bit of the pcdac
	
	// if the spread is > 31.5dB, keep the upper 31.5dB range
	if ((pwrTableLXPD_t4[63] - pwrTableHXPD_t4[0]) > 126) {
		Pmin = (A_INT16)(pwrTableLXPD_t4[63] - 126);		
	} else {
		Pmin = pwrTableHXPD_t4[0];
	}

/*
	if (Pmin >= 0) {
		Pmin = 0;
	}
*/
	Pmax = pwrTableLXPD_t4[63];
	jj_max = 63;
	// search for highest pcdac 0.25dB below maxPower
	while ((pwrTableLXPD_t4[jj_max] > (Pmax - 1) ) && (jj_max >= 0)){
		jj_max--;
	} 


	*Pmid = pwrTableHXPD_t4[63];
	jj = jj_max;
	ii = 63;
	currPower = Pmax;
	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
		currPower = 126;
		Pmin = 0;
//		currPower += 4*FALCON_BAND_EIRP_HEADROOM_IN_DB;
//		Pmin      += 4*FALCON_BAND_EIRP_HEADROOM_IN_DB;
	}
	pwrTable_t4 = &(pwrTableLXPD_t4[0]);
	while(ii >= 0) {
		if ((currPower <= *Pmid) || ( (jj == 0) && (msbFlag == 0x40))){
			msbFlag = 0x00;
			pwrTable_t4 = &(pwrTableHXPD_t4[0]);
			jj = 63;
		}
		while ((jj>0) && (pwrTable_t4[jj] >= currPower)) {
			jj--;
		}
		if ((jj == 0) && (msbFlag == 0x00)) {
			while (ii >= 0) {
				retVals[ii] = retVals[ii+1];
				ii--;
			}
			break;
		}
		retVals[ii] = (A_UINT16)(jj | msbFlag);
		currPower -= 2;  // corresponds to a 0.5dB step
		ii--;
	}
	return(Pmin);
}


void
copyGen3EepromStruct
(
 EEPROM_FULL_DATA_STRUCT_GEN3 *pFullCalDataset_gen3,
 EEPROM_DATA_STRUCT_GEN3 *pCalDataset_gen3[]
)
{
	if (pCalDataset_gen3[MODE_11A] != NULL) {
		//copy the 11a structs
		pFullCalDataset_gen3->numChannels11a = pCalDataset_gen3[MODE_11A]->numChannels;
		pFullCalDataset_gen3->xpd_mask11a = pCalDataset_gen3[MODE_11A]->xpd_mask;
		memcpy(pFullCalDataset_gen3->pDataPerChannel11a, pCalDataset_gen3[MODE_11A]->pDataPerChannel, 
			sizeof(EEPROM_DATA_PER_CHANNEL_GEN3) * pCalDataset_gen3[MODE_11A]->numChannels);
	}

	if (pCalDataset_gen3[MODE_11B] != NULL) {
		//copy the 11b structs
		pFullCalDataset_gen3->numChannels11b = pCalDataset_gen3[MODE_11B]->numChannels;
		pFullCalDataset_gen3->xpd_mask11b = pCalDataset_gen3[MODE_11B]->xpd_mask;
		memcpy(pFullCalDataset_gen3->pDataPerChannel11b, pCalDataset_gen3[MODE_11B]->pDataPerChannel, 
			sizeof(EEPROM_DATA_PER_CHANNEL_GEN3) * pCalDataset_gen3[MODE_11B]->numChannels);
	}

	if (pCalDataset_gen3[MODE_11G] != NULL) {
		//copy the 11g structs
		pFullCalDataset_gen3->numChannels11g = pCalDataset_gen3[MODE_11G]->numChannels;
		pFullCalDataset_gen3->xpd_mask11g = pCalDataset_gen3[MODE_11G]->xpd_mask;
		memcpy(pFullCalDataset_gen3->pDataPerChannel11g, pCalDataset_gen3[MODE_11G]->pDataPerChannel, 
			sizeof(EEPROM_DATA_PER_CHANNEL_GEN3) * pCalDataset_gen3[MODE_11G]->numChannels);
	}
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆免费看片| 日本一区免费视频| 国产日韩成人精品| 亚洲一二三级电影| 成人福利在线看| 欧美成人免费网站| 亚洲国产精品一区二区尤物区| 国产不卡视频在线播放| 欧美丰满美乳xxx高潮www| 亚洲欧美aⅴ...| 成人精品视频网站| 久久新电视剧免费观看| 亚洲va欧美va人人爽| 色呦呦国产精品| 国产精品麻豆久久久| 国产综合色视频| 6080日韩午夜伦伦午夜伦| 亚洲综合色婷婷| 成人精品视频一区| 中文欧美字幕免费| 国产黄色91视频| 26uuu欧美| 另类综合日韩欧美亚洲| 91麻豆精品国产91久久久| 亚洲综合丁香婷婷六月香| 91蜜桃视频在线| 国产精品久久福利| 波多野结衣精品在线| 日本一区二区视频在线| 国产成人欧美日韩在线电影| 久久嫩草精品久久久精品| 国产精品一区二区三区四区| 精品久久久久久久一区二区蜜臀| 久久综合综合久久综合| 日韩三级av在线播放| 毛片av中文字幕一区二区| 日韩免费视频线观看| 麻豆精品视频在线观看| www国产成人免费观看视频 深夜成人网| 日韩高清不卡一区二区| 日韩精品一区在线| 国内精品第一页| 国产欧美日韩在线视频| 国产乱码精品一区二区三区av| 久久久91精品国产一区二区精品| 国产乱对白刺激视频不卡| 国产日韩精品一区二区浪潮av| 懂色av一区二区三区蜜臀| 1000精品久久久久久久久| 色嗨嗨av一区二区三区| 视频一区在线播放| 日韩免费性生活视频播放| 国产白丝精品91爽爽久久| 亚洲欧美一区二区三区极速播放 | 久久久精品国产免大香伊| 国产高清精品久久久久| 国产精品成人午夜| 欧美午夜不卡在线观看免费| 六月丁香婷婷色狠狠久久| 欧美激情一区二区三区全黄| 色综合久久久久网| 蓝色福利精品导航| 国产精品久久久久久久蜜臀| 欧美日韩精品一区二区| 久久99久久精品| 亚洲同性gay激情无套| 欧美久久久久久久久久 | 日本午夜一区二区| 久久久精品国产免费观看同学| 色综合久久久久网| 激情文学综合丁香| 亚洲综合免费观看高清完整版 | 激情都市一区二区| 亚洲乱码中文字幕综合| 日韩免费观看2025年上映的电影| 国产91在线|亚洲| 日韩国产一区二| 1000部国产精品成人观看| 精品国产成人系列| 欧美性猛交xxxxxx富婆| 国产综合久久久久久久久久久久| 一区二区成人在线| 日本一区免费视频| 精品国产91亚洲一区二区三区婷婷| 色婷婷激情综合| 国产成a人无v码亚洲福利| 同产精品九九九| 一区二区视频在线看| 欧美激情在线一区二区| 精品乱人伦小说| 欧美剧情片在线观看| 色狠狠av一区二区三区| 成人激情动漫在线观看| 青青草原综合久久大伊人精品优势| 亚洲精品成a人| 国产精品盗摄一区二区三区| 国产亚洲精品久| 精品国产乱码久久| 精品国产一区二区在线观看| 欧美日韩成人综合| 在线免费观看日韩欧美| 成人av网址在线| 岛国一区二区在线观看| 国产美女精品一区二区三区| 美国毛片一区二区三区| 天天色天天操综合| 午夜欧美一区二区三区在线播放| 亚洲在线视频网站| 亚洲人吸女人奶水| 亚洲人成网站精品片在线观看| 国产女同性恋一区二区| 国产亚洲欧美激情| 国产欧美日韩视频在线观看| 日本一区二区动态图| 国产精品久久一级| 亚洲欧美成人一区二区三区| 亚洲女人小视频在线观看| 亚洲三级视频在线观看| 亚洲精品一二三| 亚洲尤物视频在线| 日韩高清在线电影| 捆绑调教一区二区三区| 国产精品资源网站| 国产福利视频一区二区三区| 国产成人一区在线| 99精品欧美一区二区蜜桃免费| 不卡av电影在线播放| 91年精品国产| 欧美三级中文字幕在线观看| 欧美久久高跟鞋激| 日韩你懂的在线播放| 国产亚洲一区二区在线观看| 亚洲欧美在线观看| 亚洲国产成人av好男人在线观看| 亚洲电影中文字幕在线观看| 免费成人美女在线观看.| 韩国午夜理伦三级不卡影院| 成人一区二区在线观看| 91搞黄在线观看| 51精品视频一区二区三区| 久久综合九色综合欧美亚洲| 国产精品久久二区二区| 丝袜诱惑亚洲看片| 国产一区二区三区美女| 91国模大尺度私拍在线视频| 欧美一级爆毛片| 亚洲色图制服诱惑| 奇米777欧美一区二区| 成人免费视频caoporn| 欧美日本高清视频在线观看| 国产视频一区二区三区在线观看| 亚洲女同女同女同女同女同69| 日本不卡高清视频| 91免费版在线| 久久久亚洲综合| 亚洲一区二区三区在线看| 国产真实乱子伦精品视频| 91福利国产精品| 国产午夜精品一区二区三区四区 | 国产精品毛片久久久久久久| 午夜电影一区二区三区| 成年人午夜久久久| 日韩精品资源二区在线| 亚洲在线观看免费视频| 国产成人亚洲精品狼色在线| 91精品国产手机| 一区二区高清免费观看影视大全| 国产寡妇亲子伦一区二区| 91麻豆精品国产91久久久久久久久 | 久久国产人妖系列| 色吊一区二区三区| 久久久久久久久久久久久女国产乱| 亚洲一区二区av电影| 99久久久久久| 欧美电影免费提供在线观看| 性做久久久久久免费观看| av一区二区久久| 欧美精品一区男女天堂| 日韩精品一二三| 欧美亚洲自拍偷拍| 中文字幕佐山爱一区二区免费| 国产一区二区三区视频在线播放| 91精品国产欧美一区二区18| 亚洲图片一区二区| 色噜噜狠狠成人网p站| 国产精品丝袜久久久久久app| 国内成人自拍视频| 精品久久久久一区| 精品亚洲国内自在自线福利| 91精品久久久久久蜜臀| 天堂久久久久va久久久久| 精品视频一区 二区 三区| 一区二区理论电影在线观看| 色婷婷综合激情| 亚洲二区在线视频| 欧美日韩精品一区二区天天拍小说 | 99精品国产视频| 国产精品久久精品日日| 99精品偷自拍| 亚洲色图清纯唯美|