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

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

?? meeprom_g.c

?? Atheros AP Test with Agilent N4010A source code
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/* mEEPROM_g.c - contians functions for reading eeprom and getting            */
/*                 Vpd power settings for all channels for gen5 analog chips  */
/* Copyright (c) 2004 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_g.h"


MANLIB_API A_BOOL setup_raw_dataset_gen5(A_UINT32 devNum, RAW_DATA_STRUCT_GEN5 *pRawDataset_gen5, A_UINT16 myNumRawChannels, A_UINT16 *pMyRawChanList)
{
	A_UINT16	i, j, kk, channelValue;	
	A_UINT32   xpd_mask;
	A_UINT16   numPdGainsUsed = 0;

	if(!allocateRawDataStruct_gen5(devNum, pRawDataset_gen5, myNumRawChannels)) {
		mError(devNum, EIO,"unable to allocate raw dataset (gen5)\n");
		return(0);
	}

	xpd_mask = pRawDataset_gen5->xpd_mask;	
	for (i = 0; i < 4; i++) {
		if ( ((xpd_mask >> i) & 0x1) > 0) {
			numPdGainsUsed++;
		}
	}

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

		pRawDataset_gen5->pChannels[i] = channelValue;
		
		pRawDataset_gen5->pDataPerChannel[i].channelValue = channelValue;
		pRawDataset_gen5->pDataPerChannel[i].numPdGains = numPdGainsUsed;
		kk = 0;
		for (j = 0; j < MAX_NUM_PDGAINS_PER_CHANNEL; j++) {
			pRawDataset_gen5->pDataPerChannel[i].pDataPerPDGain[j].pd_gain = j;
			if ( ((xpd_mask >> j) & 0x1) > 0) {
				pRawDataset_gen5->pDataPerChannel[i].pDataPerPDGain[j].numVpd = NUM_POINTS_OTHER_PDGAINS;
				kk++;
				if (kk == 1) { 
					// lowest pd_gain corresponds to highest power and thus, has one more point 
					pRawDataset_gen5->pDataPerChannel[i].pDataPerPDGain[j].numVpd = NUM_POINTS_LAST_PDGAIN;
				}
//printf("SNOOP: i = %d, j=%d, xpd_mask = 0x%x, numVpd = %d [A]\n", i, j, xpd_mask, pRawDataset_gen5->pDataPerChannel[i].pDataPerPDGain[j].numVpd);
			} else {
				pRawDataset_gen5->pDataPerChannel[i].pDataPerPDGain[j].numVpd = 0;
//printf("SNOOP: i = %d, j=%d, xpd_mask = 0x%x, numVpd = %d [B]\n", i, j, xpd_mask, pRawDataset_gen5->pDataPerChannel[i].pDataPerPDGain[j].numVpd);			
			}
		}		
	}

	return(1);
}



A_BOOL	allocateRawDataStruct_gen5(A_UINT32 devNum, RAW_DATA_STRUCT_GEN5  *pRawDataset_gen5, A_UINT16 numChannels)
{
	A_UINT16	i, j, k;
	A_UINT16	numVpds = NUM_POINTS_LAST_PDGAIN;

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

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

	for(i = 0; i < numChannels; i ++) {
		pRawDataset_gen5->pDataPerChannel[i].pDataPerPDGain = NULL;
		
		pRawDataset_gen5->pDataPerChannel[i].pDataPerPDGain = (RAW_DATA_PER_PDGAIN_GEN5 *)malloc(sizeof(RAW_DATA_PER_PDGAIN_GEN5) * MAX_NUM_PDGAINS_PER_CHANNEL);
		if (NULL == pRawDataset_gen5->pDataPerChannel[i].pDataPerPDGain) {
			mError(devNum, EIO,"unable to allocate raw data struct pDataPerPDGain (gen5)\n");
			break; //will cleanup outside loop
		}
		for (j=0; j<MAX_NUM_PDGAINS_PER_CHANNEL ; j++) {
			pRawDataset_gen5->pDataPerChannel[i].pDataPerPDGain[j].Vpd = (A_UINT16 *)malloc(numVpds*sizeof(A_UINT16));
			if(pRawDataset_gen5->pDataPerChannel[i].pDataPerPDGain[j].Vpd == NULL) {
				mError(devNum, EIO,"unable to allocate Vpds for a pd_gain (gen5)\n");
				break;
			}
			pRawDataset_gen5->pDataPerChannel[i].pDataPerPDGain[j].pwr_t4 = (A_INT16 *)malloc(numVpds*sizeof(A_INT16));
			if(pRawDataset_gen5->pDataPerChannel[i].pDataPerPDGain[j].pwr_t4 == NULL) {
				mError(devNum, EIO,"unable to allocate pwr_t4 for a pd_gain (gen5)\n");
				if (pRawDataset_gen5->pDataPerChannel[i].pDataPerPDGain[j].Vpd != NULL) {
					free(pRawDataset_gen5->pDataPerChannel[i].pDataPerPDGain[j].Vpd);
				}
				break; // cleanup outside the j loop
			}
		}
		if (j != MAX_NUM_PDGAINS_PER_CHANNEL) { // malloc must've failed
			for (k=0; k<j; k++) {
				if (pRawDataset_gen5->pDataPerChannel[i].pDataPerPDGain[k].Vpd != NULL) {
					free(pRawDataset_gen5->pDataPerChannel[i].pDataPerPDGain[k].Vpd);
				}
				if (pRawDataset_gen5->pDataPerChannel[i].pDataPerPDGain[k].pwr_t4 != NULL) {
					free(pRawDataset_gen5->pDataPerChannel[i].pDataPerPDGain[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<MAX_NUM_PDGAINS_PER_CHANNEL; k++) {
				if (pRawDataset_gen5->pDataPerChannel[j].pDataPerPDGain[k].Vpd != NULL) {
					free(pRawDataset_gen5->pDataPerChannel[j].pDataPerPDGain[k].Vpd);
				}
				if (pRawDataset_gen5->pDataPerChannel[j].pDataPerPDGain[k].pwr_t4 != NULL) {
					free(pRawDataset_gen5->pDataPerChannel[j].pDataPerPDGain[k].pwr_t4);
				}
			}
			if (pRawDataset_gen5->pDataPerChannel[j].pDataPerPDGain != NULL) {
				free(pRawDataset_gen5->pDataPerChannel[j].pDataPerPDGain);
			}
		}

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


MANLIB_API A_BOOL setup_EEPROM_dataset_gen5(A_UINT32 devNum, EEPROM_DATA_STRUCT_GEN5 *pEEPROMDataset_gen5, A_UINT16 myNumRawChannels, A_UINT16 *pMyRawChanList)
{
	A_UINT16   i, channelValue;
	A_UINT32   xpd_mask;
	A_UINT16   numPdGainsUsed = 0;

	if(!allocateEEPROMDataStruct_gen5(devNum, pEEPROMDataset_gen5, myNumRawChannels)) {
		mError(devNum, EIO,"unable to allocate EEPROM dataset (gen5)\n");
		return(0);
	}

	xpd_mask = pEEPROMDataset_gen5->xpd_mask;	
	for (i = 0; i < 4; i++) {
		if ( ((xpd_mask >> i) & 0x1) > 0) {
			numPdGainsUsed++;
		}
	}

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

	return(1);
}



A_BOOL	allocateEEPROMDataStruct_gen5(A_UINT32 devNum, EEPROM_DATA_STRUCT_GEN5  *pEEPROMDataset_gen5, A_UINT16 numChannels)
{

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

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

	return(1);
}



A_BOOL read_Cal_Dataset_From_EEPROM_gen5(A_UINT32 devNum, EEPROM_DATA_STRUCT_GEN5 *pCalDataset, A_UINT32 start_offset, A_UINT32 maxPiers, A_UINT32 *words, A_UINT32 devlibMode) {

	A_UINT16	ii=0;
	A_UINT16	freqmask			= 0xff;
	A_UINT16	dbm_I_mask			= 0x1F; // 5-bits. 1dB step.
	A_UINT16	dbm_delta_mask		= 0xF;  // 4-bits. 0.5dB step.
	A_UINT16	Vpd_I_mask			= 0x7F; // 7-bits. 0-128
	A_UINT16	Vpd_delta_mask		= 0x3F; // 6-bits. 0-63
	A_UINT16	idx, numPiers;
	A_UINT16	freq[NUM_11A_EEPROM_CHANNELS];
//	LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];
//	MODE_HEADER_INFO	hdrInfo;
	EEPROM_DATA_PER_CHANNEL_GEN5  *currCh;

	idx = (A_UINT16)start_offset;
	ii = 0;
	// no 11a piers, but 11b and 11g piers added in eep_map = 2
	while (ii < maxPiers) {
		if ((words[idx] & freqmask) == 0) {
			idx++;
			break;
		} else {
			freq[ii] = fbin2freq_gen5((words[idx] & freqmask), devlibMode);
//printf ("this is nothing\n");
		}
		ii++;
		
		if (((words[idx] >> 8) & freqmask) == 0) {
			idx++;
			break;
		} else {
			freq[ii] = fbin2freq_gen5(((words[idx] >> 8) & freqmask), devlibMode);
		}
		ii++;
		idx++;
	}
	idx = (A_UINT16)(start_offset + (maxPiers / 2) );

//	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_gen5(devNum, pCalDataset, numPiers, &(freq[0])) ) {
		mError(devNum, EIO,"unable to allocate cal dataset (gen5) in read_from_eeprom...\n");
		return(0);
	}

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

		currCh = &(pCalDataset->pDataPerChannel[ii]);
		
		if (currCh->numPdGains > 0) {
			// read the first NUM_POINTS_OTHER_PDGAINS pwr and Vpd values for pdgain_0
			currCh->pwr_I[0] = (A_UINT16)(words[idx] & dbm_I_mask);
//printf("SNOOP: pwr_I_0 = %d[idx=%d]\n", currCh->pwr_I[0], idx);
			currCh->Vpd_I[0] = (A_UINT16)((words[idx] >> 5) & Vpd_I_mask);
//printf("SNOOP: Vpd_I_0 = %d\n", currCh->Vpd_I[0]);
			currCh->pwr_delta_t2[0][0] = (A_UINT16)((words[idx] >> 12) & dbm_delta_mask);
		
			idx++;
			currCh->Vpd_delta[0][0] = (A_UINT16)(words[idx] & Vpd_delta_mask);
			currCh->pwr_delta_t2[1][0] = (A_UINT16)((words[idx] >> 6) & dbm_delta_mask);
			currCh->Vpd_delta[1][0] = (A_UINT16)((words[idx] >> 10) & Vpd_delta_mask);

			idx++;
			currCh->pwr_delta_t2[2][0] = (A_UINT16)(words[idx] & dbm_delta_mask);
			currCh->Vpd_delta[2][0] = (A_UINT16)((words[idx] >> 4) & Vpd_delta_mask);
		}


		if (currCh->numPdGains > 1) {
			// read the first NUM_POINTS_OTHER_PDGAINS pwr and Vpd values for pdgain_1
			currCh->pwr_I[1] = (A_UINT16)((words[idx] >> 10) & dbm_I_mask);
//printf("SNOOP: pwr_I_1 = %d\n", currCh->pwr_I[1]);
			currCh->Vpd_I[1] = (A_UINT16)((words[idx] >> 15) & 0x1);

			idx++;
			currCh->Vpd_I[1] |= (A_UINT16)((words[idx] & 0x3F) << 1); // upper 6 bits
//printf("SNOOP: Vpd_I_1 = %d\n", currCh->Vpd_I[1]);
			currCh->pwr_delta_t2[0][1] = (A_UINT16)((words[idx] >> 6) & dbm_delta_mask);
			currCh->Vpd_delta[0][1] = (A_UINT16)((words[idx] >> 10) & Vpd_delta_mask);

			idx++;
			currCh->pwr_delta_t2[1][1] = (A_UINT16)(words[idx] & dbm_delta_mask);
			currCh->Vpd_delta[1][1] = (A_UINT16)((words[idx] >> 4) & Vpd_delta_mask);
			currCh->pwr_delta_t2[2][1] = (A_UINT16)((words[idx] >> 10) & dbm_delta_mask);			
			currCh->Vpd_delta[2][1] = (A_UINT16)((words[idx] >> 14) & 0x3);

			idx++;
			currCh->Vpd_delta[2][1] |= (A_UINT16)((words[idx] & 0xF) << 2); // upper 4 bits

		} else if (currCh->numPdGains == 1) {
			// read the last pwr and Vpd values for pdgain_0
			currCh->pwr_delta_t2[3][0] = (A_UINT16)((words[idx] >> 10) & dbm_delta_mask);
			currCh->Vpd_delta[3][0] = (A_UINT16)((words[idx] >> 14) & 0x3);

			idx++;
			currCh->Vpd_delta[3][0] |= (A_UINT16)((words[idx] & 0xF) << 2); // upper 4 bits
			
			idx++;
			// 4 words if numPdGains == 1
		}

		if (currCh->numPdGains > 2) {
			// read the first NUM_POINTS_OTHER_PDGAINS pwr and Vpd values for pdgain_2
			currCh->pwr_I[2] = (A_UINT16)((words[idx] >> 4) & dbm_I_mask);
			currCh->Vpd_I[2] = (A_UINT16)((words[idx] >> 9) & Vpd_I_mask);

			idx++;
			currCh->pwr_delta_t2[0][2] = (A_UINT16)((words[idx] >> 0) & dbm_delta_mask);
			currCh->Vpd_delta[0][2] = (A_UINT16)((words[idx] >> 4) & Vpd_delta_mask);
			currCh->pwr_delta_t2[1][2] = (A_UINT16)((words[idx] >> 10) & dbm_delta_mask);
			currCh->Vpd_delta[1][2] = (A_UINT16)((words[idx] >> 14) & 0x3);

			idx++;
			currCh->Vpd_delta[1][2] |= (A_UINT16)((words[idx] & 0xF) << 2); // upper 4 bits
			currCh->pwr_delta_t2[2][2] = (A_UINT16)((words[idx] >> 4) & dbm_delta_mask);
			currCh->Vpd_delta[2][2] = (A_UINT16)((words[idx] >> 8) & Vpd_delta_mask);


		} else  if (currCh->numPdGains == 2){
			// read the last pwr and Vpd values for pdgain_1
			currCh->pwr_delta_t2[3][1] = (A_UINT16)((words[idx] >> 4) & dbm_delta_mask);
			currCh->Vpd_delta[3][1] = (A_UINT16)((words[idx] >> 8) & Vpd_delta_mask);

			idx++;
			// 6 words if numPdGains == 2
		}

		if (currCh->numPdGains > 3) {
			// read the first NUM_POINTS_OTHER_PDGAINS pwr and Vpd values for pdgain_3
			currCh->pwr_I[3] = (A_UINT16)((words[idx] >> 14) & 0x3);

			idx++;
			currCh->pwr_I[3] |= (A_UINT16)(((words[idx] >> 0) & 0x7) << 2); // upper 3 bits
			currCh->Vpd_I[3] = (A_UINT16)((words[idx] >> 3) & Vpd_I_mask);
			currCh->pwr_delta_t2[0][3] = (A_UINT16)((words[idx] >> 10) & dbm_delta_mask);
			currCh->Vpd_delta[0][3] = (A_UINT16)((words[idx] >> 14) & 0x3);

			idx++;
			currCh->Vpd_delta[0][3] |= (A_UINT16)((words[idx] & 0xF) << 2); // upper 4 bits
			currCh->pwr_delta_t2[1][3] = (A_UINT16)((words[idx] >> 4) & dbm_delta_mask);
			currCh->Vpd_delta[1][3] = (A_UINT16)((words[idx] >> 8) & Vpd_delta_mask);
			currCh->pwr_delta_t2[2][3] = (A_UINT16)((words[idx] >> 14) & 0x3);

			idx++;
			currCh->pwr_delta_t2[2][3] |= (A_UINT16)(((words[idx] >> 0) & 0x3) << 2); // upper 2 bits
			currCh->Vpd_delta[2][3] = (A_UINT16)((words[idx] >> 2) & Vpd_delta_mask);
			currCh->pwr_delta_t2[3][3] = (A_UINT16)((words[idx] >> 8) & dbm_delta_mask); 
			currCh->Vpd_delta[3][3] = (A_UINT16)((words[idx] >> 12) & 0xF);

			idx++;
			currCh->Vpd_delta[3][3] |= (A_UINT16)(((words[idx] >> 0) & 0x3) << 4); // upper 2 bits

			idx++;
			// 12 words if numPdGains == 4

		} else  if (currCh->numPdGains == 3){
			// read the last pwr and Vpd values for pdgain_2
			currCh->pwr_delta_t2[3][2] = (A_UINT16)((words[idx] >> 14) & 0x3);

			idx++;
			currCh->pwr_delta_t2[3][2] |= (A_UINT16)(((words[idx] >> 0) & 0x3) << 2); // upper 2 bits
			currCh->Vpd_delta[3][2] = (A_UINT16)((words[idx] >> 2) & Vpd_delta_mask);

			idx++;
			// 9 words if numPdGains == 3
		}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产成人高清精品| 日韩高清不卡一区| 欧美成人精品福利| 一本大道av伊人久久综合| 久久99精品久久久久久动态图| 亚洲色图欧洲色图婷婷| 国产日韩欧美综合在线| 日韩午夜激情电影| 欧美日韩一区二区三区在线看| 波多野结衣亚洲| 国产一区视频网站| 一区二区三区欧美| 亚洲欧洲av在线| 久久精品夜色噜噜亚洲aⅴ| 日韩欧美在线影院| 欧美日韩久久久| 91久久精品日日躁夜夜躁欧美| 高清视频一区二区| 国产在线一区观看| 极品少妇一区二区| 激情综合色播激情啊| 日韩电影在线一区| 视频一区在线视频| 亚洲va韩国va欧美va精品| 亚洲激情图片qvod| 亚洲黄一区二区三区| 亚洲三级在线观看| 亚洲免费在线看| 亚洲人成网站在线| 亚洲欧美日韩国产综合在线| 亚洲色图一区二区| 亚洲免费观看高清完整| 亚洲免费毛片网站| 亚洲一区二区三区四区在线观看| 亚洲色图.com| 亚洲综合区在线| 亚洲国产一区二区三区青草影视| 亚洲愉拍自拍另类高清精品| 亚洲尤物在线视频观看| 亚洲国产成人av| 首页国产欧美久久| 久久爱www久久做| 韩国毛片一区二区三区| 国产白丝网站精品污在线入口| 国产黄色精品网站| 北条麻妃一区二区三区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 99久久夜色精品国产网站| 成人午夜电影久久影院| 91在线一区二区| 欧美亚州韩日在线看免费版国语版| 欧洲精品一区二区| 在线播放欧美女士性生活| 日韩三级视频中文字幕| 国产偷国产偷精品高清尤物 | 三级一区在线视频先锋| 美女视频黄免费的久久 | 亚洲一级二级三级| 日韩av一级片| 国产一区999| 97精品电影院| 欧美三级三级三级| 欧美xxxxxxxx| 亚洲欧美中日韩| 亚洲国产综合在线| 狠狠狠色丁香婷婷综合久久五月| 丰满白嫩尤物一区二区| 欧美视频一区二| 欧美性受xxxx| 精品精品国产高清a毛片牛牛| 国产精品视频一二三区| 亚洲一区在线观看免费| 久久国产三级精品| 欧美麻豆精品久久久久久| 26uuu国产一区二区三区| 精品国产区一区| 日韩伦理av电影| 日韩精品电影一区亚洲| 国产老肥熟一区二区三区| 色噜噜狠狠成人中文综合| 777xxx欧美| 中文字幕五月欧美| 麻豆久久久久久久| 在线免费观看日本欧美| 久久免费精品国产久精品久久久久| 一区二区视频在线| 精品一区二区日韩| 在线观看欧美精品| 国产欧美久久久精品影院| 午夜精品一区二区三区免费视频| 国产xxx精品视频大全| 欧美日本视频在线| 中文字幕一区二区三区在线观看| 喷水一区二区三区| 色av综合在线| 欧美激情资源网| 麻豆成人av在线| 在线观看日韩av先锋影音电影院| 欧美激情一区不卡| 久久福利资源站| 欧美日韩亚洲另类| 亚洲天堂网中文字| 成人福利视频网站| 欧美xxxx在线观看| 日本亚洲天堂网| 91精品福利在线| 18欧美亚洲精品| 国产精品12区| 日韩亚洲欧美高清| 日一区二区三区| 欧美日韩在线播放| 国产精品二区一区二区aⅴ污介绍| 午夜精品久久久久久| 日本久久电影网| 亚洲免费观看高清| 91小视频在线| 中文字幕在线不卡视频| 国产ts人妖一区二区| 久久亚洲精华国产精华液| 五月天久久比比资源色| 欧美三级日本三级少妇99| 亚洲精品高清视频在线观看| 不卡av电影在线播放| 国产亚洲欧美日韩在线一区| 韩国女主播一区二区三区| 日韩三级在线免费观看| 亚洲成人av免费| 欧美精品精品一区| 天堂在线亚洲视频| 欧美一级在线观看| 天天综合色天天综合色h| 欧美日韩成人一区二区| 视频一区在线播放| 日韩一区二区中文字幕| 裸体在线国模精品偷拍| 亚洲精品一区二区三区精华液| 精品亚洲免费视频| 久久久久久久久久电影| 国产91丝袜在线观看| 国产欧美一区在线| 丁香激情综合国产| 亚洲欧美另类久久久精品| 色呦呦日韩精品| 亚洲国产成人91porn| 91蜜桃婷婷狠狠久久综合9色| 欧美国产精品劲爆| 91麻豆自制传媒国产之光| 国产精品看片你懂得| 成人精品小蝌蚪| 亚洲免费av在线| 国产日韩v精品一区二区| 成人综合在线视频| 亚洲另类中文字| 欧美三级三级三级| 久久er精品视频| 国产视频一区在线播放| 97久久久精品综合88久久| 亚洲一区二区三区四区在线观看| 欧美日韩电影在线播放| 国产在线国偷精品产拍免费yy| 日本一区二区免费在线观看视频 | 久久精品一区蜜桃臀影院| 成人黄色在线看| 亚洲精品成人天堂一二三| 欧美日本一区二区三区四区| 国模少妇一区二区三区| 亚洲欧美在线aaa| 欧美一卡2卡3卡4卡| 成人黄色片在线观看| 亚洲精品少妇30p| 精品国产伦一区二区三区免费| 国产sm精品调教视频网站| 亚洲一区二区3| 久久婷婷国产综合精品青草| 不卡一区二区三区四区| 亚洲成a人v欧美综合天堂下载| 久久―日本道色综合久久| 在线观看视频一区二区欧美日韩| 337p日本欧洲亚洲大胆精品| 一区二区三区国产精品| 欧美三级日本三级少妇99| 亚洲一区二区三区视频在线播放| 一区二区在线电影| 亚洲国产成人91porn| 欧美二区三区91| 亚洲mv在线观看| 久久精品一级爱片| 在线这里只有精品| 无码av中文一区二区三区桃花岛| 欧美日韩在线亚洲一区蜜芽| 日本一区二区免费在线观看视频| 成人精品在线视频观看| 一区二区三区电影在线播| 成人网男人的天堂| 日韩不卡一二三区| 国产精品麻豆视频| 成人高清免费观看| 国产欧美一区二区精品秋霞影院 | 精品夜夜嗨av一区二区三区| 精品电影一区二区三区|