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

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

?? meeprom_g.c

?? Atheros AP Test with Agilent N4010A source code
?? C
?? 第 1 頁 / 共 3 頁
字號:

	}

	ii = (A_UINT16) maxPiers; // to quiet compiler warnings
	return(1);
}



void eeprom_to_raw_dataset_gen5(A_UINT32 devNum, EEPROM_DATA_STRUCT_GEN5 *pCalDataset, RAW_DATA_STRUCT_GEN5 *pRawDataset) {

	A_UINT16	ii, jj, kk, ss;
	RAW_DATA_PER_PDGAIN_GEN5			*pRawXPD;
	EEPROM_DATA_PER_CHANNEL_GEN5	*pCalCh;	//ptr to array of info held per channel
	A_UINT16		xgain_list[MAX_NUM_PDGAINS_PER_CHANNEL];
	A_UINT16		xpd_mask;
	A_UINT32        numPdGainsUsed = 0;

	if (pRawDataset->xpd_mask != pCalDataset->xpd_mask) {
		mError(devNum, EIO,"xpd_mask values incompatible between raw and eeprom datasets\n");
		exit(0);
	}

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

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

	numPdGainsUsed = kk;

	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;


		// numVpd has already been setup appropriately for the relevant pdGains

//printf("SNOOP: channel = %d\n", pCalCh->channelValue);
		for (jj = 0; jj<numPdGainsUsed; jj++) {
			ss = xgain_list[jj];  // use jj for calDataset and ss for rawDataset
			pRawXPD = &(pRawDataset->pDataPerChannel[ii].pDataPerPDGain[ss]);
			if (pRawXPD->numVpd < 1) {
				printf("ERROR : numVpd for ch[%d] = %d, pdgain = %d[%d] should not be 0 for xpd_mask = 0x%x\n", ii, 
					                  pCalCh->channelValue, ss, jj, xpd_mask);
				exit(0);
			}
				
			pRawXPD->pwr_t4[0] = (A_INT16)(4*pCalCh->pwr_I[jj]);
			pRawXPD->Vpd[0]    = pCalCh->Vpd_I[jj];
//printf("SNOOP: ss=%d, Vpd[0] = %d, pwr[0] = %d\n", ss, pRawXPD->Vpd[0], pRawXPD->pwr_t4[0]);
			for (kk = 1; kk < pRawXPD->numVpd; kk++) {
				pRawXPD->pwr_t4[kk] = (A_INT16)(pRawXPD->pwr_t4[kk-1] + 2*pCalCh->pwr_delta_t2[kk-1][jj]);
				pRawXPD->Vpd[kk] = (A_UINT16)(pRawXPD->Vpd[kk-1] + pCalCh->Vpd_delta[kk-1][jj]);
//printf("SNOOP: ss=%d, Vpd[%d] = %d, pwr[%d] = %d\n", ss, kk, pRawXPD->Vpd[kk], kk, pRawXPD->pwr_t4[kk]);
			} // loop over Vpds

		} // loop over pd_gains
	} // loop over channels
	devNum = 0;  //quiet warnings
}


/*
A_BOOL get_xpd_gain_and_pcdacs_for_powers
(
 A_UINT32				devNum,                         // In
 A_UINT16				channel,                         // In       
 RAW_DATA_STRUCT_GEN5	*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_GEN5	*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 < MAX_NUM_PDGAINS_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(&(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(&(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(&(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(&(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);
			}
		}
	}

	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_Signed16 (
 A_INT16	value,			//value to search for
 A_INT16	*pList,			//ptr to the list to search
 A_UINT16	listSize,		//number of entries in list
 A_UINT32	*pLowerValue,	//return the lower index
 A_UINT32	*pUpperValue	//return the upper index	
)
{
	A_UINT16	i;
	A_INT16	listEndValue = *(pList + listSize - 1);
	A_INT16	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_BOOL initialize_datasets_gen5(A_UINT32 devNum, EEPROM_DATA_STRUCT_GEN5 *pCalDataset_gen5[], RAW_DATA_STRUCT_GEN5  *pRawDataset_gen5[]) {

	A_UINT32	words[400];
	A_UINT16	start_offset		= 0x150; // for 16k eeprom (0x2BE - 0x150) = 367. 0x2BE is the max possible end of CTL section.
												//add 10 to ignore dummy data written for driver
	A_UINT32	maxPiers;
	LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];
	A_UINT16    numEEPROMWordsPerChannel;
	A_UINT16    wordsForPdgains[] = {4,6,9,12}; // index is 1 less than numPdgains

//printf("SNOOP: initialize_datasets_gen5 : entered [%d, %d]\n", MODE_11B, MODE_11G);
	// read only upto the end of CTL section
	// 0x2BE is the max possible end of CTL section.
	// for 16k eeprom (0x2BE - 0x150) = 367. 
	start_offset = pLibDev->p16kEepHeader->calStartLocation;
	eepromReadBlock(devNum, (start_offset + pLibDev->eepromStartLoc), 367, words);


	// setup datasets for mode_11b first
	start_offset = 0;

	if (pLibDev->p16kEepHeader->Amode) {
		maxPiers = NUM_11A_EEPROM_CHANNELS;
		pCalDataset_gen5[MODE_11A] = (EEPROM_DATA_STRUCT_GEN5 *)malloc(sizeof(EEPROM_DATA_STRUCT_GEN5));
		if(NULL == pCalDataset_gen5[MODE_11A]) {
			mError(devNum, ENOMEM, "unable to allocate 11a gen5 cal data struct\n");
			return(0);
		}
		pCalDataset_gen5[MODE_11A]->xpd_mask = pLibDev->p16kEepHeader->info11a.xgain;
		if (!read_Cal_Dataset_From_EEPROM_gen5(devNum, pCalDataset_gen5[MODE_11A], start_offset, maxPiers,  &(words[0]), MODE_11A ) ) {
			mError(devNum, EIO,"unable to allocate cal dataset (gen5) for mode 11a\n");
			return(0);
		}		
		pRawDataset_gen5[MODE_11A] = (RAW_DATA_STRUCT_GEN5 *)malloc(sizeof(RAW_DATA_STRUCT_GEN5));
		if(NULL == pRawDataset_gen5[MODE_11A]) {
			mError(devNum, ENOMEM, "unable to allocate 11a gen5 raw data struct\n");
			return(0);
		}
		pRawDataset_gen5[MODE_11A]->xpd_mask = pLibDev->p16kEepHeader->info11a.xgain;
		setup_raw_dataset_gen5(devNum, pRawDataset_gen5[MODE_11A], pCalDataset_gen5[MODE_11A]->numChannels, pCalDataset_gen5[MODE_11A]->pChannels);
		eeprom_to_raw_dataset_gen5(devNum, pCalDataset_gen5[MODE_11A], pRawDataset_gen5[MODE_11A]);

		// setup datasets for mode_11b next
		numEEPROMWordsPerChannel = wordsForPdgains[pCalDataset_gen5[MODE_11A]->pDataPerChannel[0].numPdGains - 1];
	    start_offset = (A_UINT16) (start_offset + pCalDataset_gen5[MODE_11A]->numChannels*numEEPROMWordsPerChannel + 5);
	} else {
		pRawDataset_gen5[MODE_11A] = NULL;
		pCalDataset_gen5[MODE_11A] = NULL;
	}

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

		pCalDataset_gen5[MODE_11B] = (EEPROM_DATA_STRUCT_GEN5 *)malloc(sizeof(EEPROM_DATA_STRUCT_GEN5));
		if(NULL == pCalDataset_gen5[MODE_11B]) {
			mError(devNum, ENOMEM, "unable to allocate 11b gen5 cal data struct\n");
			return(0);
		}
		pCalDataset_gen5[MODE_11B]->xpd_mask = pLibDev->p16kEepHeader->info11b.xgain;
		if (!read_Cal_Dataset_From_EEPROM_gen5(devNum, pCalDataset_gen5[MODE_11B], start_offset, maxPiers,  &(words[0]), MODE_11B ) ) {
			mError(devNum, EIO,"unable to allocate cal dataset (gen5) for mode 11b\n");
			return(0);
		}
		pRawDataset_gen5[MODE_11B] = (RAW_DATA_STRUCT_GEN5 *)malloc(sizeof(RAW_DATA_STRUCT_GEN5));
		if(NULL == pRawDataset_gen5[MODE_11B]) {
			mError(devNum, ENOMEM, "unable to allocate 11b gen5 raw data struct\n");
			return(0);
		}
		
		pRawDataset_gen5[MODE_11B]->xpd_mask = pLibDev->p16kEepHeader->info11b.xgain;
		setup_raw_dataset_gen5(devNum, pRawDataset_gen5[MODE_11B], pCalDataset_gen5[MODE_11B]->numChannels, pCalDataset_gen5[MODE_11B]->pChannels);
		eeprom_to_raw_dataset_gen5(devNum, pCalDataset_gen5[MODE_11B], pRawDataset_gen5[MODE_11B]);

		// setup datasets for mode_11g next
		numEEPROMWordsPerChannel = wordsForPdgains[pCalDataset_gen5[MODE_11B]->pDataPerChannel[0].numPdGains - 1];
		start_offset = (A_UINT16) (start_offset + pCalDataset_gen5[MODE_11B]->numChannels*numEEPROMWordsPerChannel + 2);
	} else {
		pRawDataset_gen5[MODE_11B] = NULL;
		pCalDataset_gen5[MODE_11B] = NULL;
	}

	if (pLibDev->p16kEepHeader->Gmode) {
		maxPiers = NUM_2_4_EEPROM_CHANNELS_GEN5;
		pCalDataset_gen5[MODE_11G] = (EEPROM_DATA_STRUCT_GEN5 *)malloc(sizeof(EEPROM_DATA_STRUCT_GEN5));
		if(NULL == pCalDataset_gen5[MODE_11G]) {
			mError(devNum, ENOMEM, "unable to allocate 11g gen5 cal data struct\n");
			return(0);
		}
		pCalDataset_gen5[MODE_11G]->xpd_mask = pLibDev->p16kEepHeader->info11g.xgain;
		if (!read_Cal_Dataset_From_EEPROM_gen5(devNum, pCalDataset_gen5[MODE_11G], start_offset, maxPiers,  &(words[0]), MODE_11G ) ) {
			mError(devNum, EIO,"unable to allocate cal dataset (gen5) for mode 11g\n");
			return(0);
		}		
		pRawDataset_gen5[MODE_11G] = (RAW_DATA_STRUCT_GEN5 *)malloc(sizeof(RAW_DATA_STRUCT_GEN5));
		if(NULL == pRawDataset_gen5[MODE_11G]) {
			mError(devNum, ENOMEM, "unable to allocate 11g gen5 raw data struct\n");
			return(0);
		}
		pRawDataset_gen5[MODE_11G]->xpd_mask = pLibDev->p16kEepHeader->info11g.xgain;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色欲色欲www| 91免费看`日韩一区二区| 在线看国产一区二区| 久久久久久99精品| 视频一区视频二区在线观看| www.亚洲免费av| 久久久久久9999| 美女视频网站久久| 欧美日韩在线综合| 自拍偷拍欧美精品| 成人免费av资源| 久久先锋资源网| 日韩福利电影在线观看| 欧洲中文字幕精品| 亚洲图片欧美激情| 成人午夜av在线| 久久人人爽爽爽人久久久| 男人的天堂久久精品| 欧美色综合影院| 亚洲激情图片一区| 91一区在线观看| 成人中文字幕电影| 精品国产一二三| 日本91福利区| 欧美一级日韩一级| 三级在线观看一区二区 | 一区二区三区在线免费观看| 福利一区福利二区| 久久久久久久久久电影| 久草热8精品视频在线观看| 日韩欧美电影在线| 热久久免费视频| 欧美一级专区免费大片| 日本不卡免费在线视频| 69堂国产成人免费视频| 日本在线不卡一区| 在线91免费看| 男人的j进女人的j一区| 日韩欧美一二区| 麻豆久久久久久久| 欧美mv日韩mv国产| 狠狠狠色丁香婷婷综合久久五月| 狠狠色丁香久久婷婷综| 精品久久久久久亚洲综合网 | 首页国产欧美日韩丝袜| 欧美三级电影在线观看| 亚洲第一搞黄网站| 欧美日韩国产综合视频在线观看| 亚洲成av人片在线| 欧美精品一二三| 久久精品国产亚洲高清剧情介绍| 精品国偷自产国产一区| 国产精品综合二区| 欧美极品少妇xxxxⅹ高跟鞋| av午夜精品一区二区三区| 亚洲人成网站在线| 欧美亚洲一区二区在线观看| 亚洲va在线va天堂| 日韩三级电影网址| 国产精品综合在线视频| 国产精品乱人伦一区二区| 色综合久久久久综合| 欧美日韩三级一区| 日韩福利电影在线观看| 久久综合九色综合欧美98| 成人黄色综合网站| 亚洲黄色免费电影| 制服视频三区第一页精品| 狠狠色2019综合网| 中文字幕日韩av资源站| 欧美视频在线一区| 国产真实乱偷精品视频免| 亚洲欧洲精品一区二区三区不卡| 一本色道久久综合亚洲aⅴ蜜桃 | 丝瓜av网站精品一区二区 | 91麻豆免费看片| 亚洲bdsm女犯bdsm网站| 欧美精品一区二区在线播放| 国产盗摄一区二区| 一区二区高清免费观看影视大全| 日韩欧美不卡一区| 91在线视频观看| 日韩1区2区日韩1区2区| 中文字幕高清不卡| 欧美区一区二区三区| 国产91精品一区二区| 亚洲综合色噜噜狠狠| 2023国产精品| 精品污污网站免费看| 国产成人在线网站| 亚洲成av人片一区二区梦乃| 国产亚洲一区字幕| 欧美三级视频在线观看| 国产乱子伦一区二区三区国色天香| 亚洲日本成人在线观看| 欧美大片一区二区| 91成人网在线| 国产日本欧洲亚洲| 717成人午夜免费福利电影| 成人一区二区三区中文字幕| 三级精品在线观看| 成人欧美一区二区三区1314| 日韩一级免费观看| 91国在线观看| 国产1区2区3区精品美女| 天堂精品中文字幕在线| 国产精品卡一卡二卡三| 欧美一区二区大片| 色婷婷久久久久swag精品| 精品夜夜嗨av一区二区三区| 一二三区精品福利视频| 国产欧美日韩综合| 欧美一区二区三区在线电影| 91免费视频网| 国产成人欧美日韩在线电影| 全部av―极品视觉盛宴亚洲| 亚洲美女视频一区| 国产欧美日韩中文久久| 日韩一区二区免费高清| 欧美日韩在线播放一区| 91视频在线观看| 国产精品白丝jk黑袜喷水| 日本在线不卡一区| 亚洲成人自拍一区| 亚洲精品视频在线观看免费| 国产精品区一区二区三区| 欧美精品一区二区三区久久久| 欧美老肥妇做.爰bbww视频| 色欧美片视频在线观看在线视频| 粉嫩欧美一区二区三区高清影视| 免费在线观看成人| 五月婷婷综合网| 亚洲国产日韩a在线播放| 日韩美女久久久| 国产精品传媒视频| 国产精品18久久久久久久久 | 一区二区三区精密机械公司| 中文字幕欧美激情| 国产三级精品视频| 精品国产一区二区三区不卡| 日韩欧美资源站| 日韩欧美不卡一区| 日韩一卡二卡三卡四卡| 欧美精品久久99| 欧美日韩极品在线观看一区| 欧美三级三级三级爽爽爽| 在线观看亚洲精品| 在线欧美一区二区| 色婷婷精品久久二区二区蜜臂av| 不卡视频免费播放| av一区二区三区四区| 成人激情小说网站| 成人av网站免费| 99久久久久久| 色婷婷综合久久久久中文| 96av麻豆蜜桃一区二区| 91视频在线观看免费| 91污片在线观看| 在线观看欧美精品| 欧美日韩电影在线播放| 欧美日韩的一区二区| 欧美电影一区二区三区| 欧美一区二区福利视频| 精品国产乱码久久久久久闺蜜| 日韩免费高清视频| 久久久久久**毛片大全| 国产欧美精品一区二区三区四区 | 亚洲一区二区偷拍精品| 亚洲综合成人网| 五月激情六月综合| 欧美成人艳星乳罩| 亚洲精品一区二区在线观看| 国产亚洲欧洲997久久综合| 国产精品欧美久久久久一区二区| 成人欧美一区二区三区1314| 亚洲免费三区一区二区| 香港成人在线视频| 蜜臀av性久久久久蜜臀aⅴ流畅 | 蓝色福利精品导航| 国产精品一二三区在线| 91视频.com| 这里只有精品视频在线观看| 精品欧美一区二区在线观看| 亚洲国产精品av| 亚洲精品国产品国语在线app| 污片在线观看一区二区| 另类小说视频一区二区| 福利一区在线观看| 欧美私模裸体表演在线观看| 精品久久人人做人人爰| 国产精品网站一区| 亚洲福利一区二区三区| 精品亚洲成a人| 972aa.com艺术欧美| 884aa四虎影成人精品一区| 精品国产免费视频| 有码一区二区三区| 蜜乳av一区二区| 99久久国产综合色|国产精品| 欧美日韩精品欧美日韩精品一 |