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

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

?? cmsmanager.cpp

?? 這是cdma2000的一個分組調度算法實例
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/////////////////////////////////////////////////////////////////////////
//
//	CMsManager.cpp 移動臺管理類的實現
//	建立者:程宇
//
/////////////////////////////////////////////////////////////////////////
//
//	修改記錄:
//
//	2001年3月23日	歐陽暉
//		實現Initialization()函數
//
/////////////////////////////////////////////////////////////////////////

#include "CMsManager.h"
#include "CVoiceMs.h"
#include "CHttpDataMs.h"
#include "CFtpDataMs.h"
#include "sys_random.h"
#include "newran.h"
#include "CServiceArea.h"
#include "CLinkPrediction.h"
//#include "CVoiceLinkPrediction.h"//added by cqm


#include <string.h>
#include <stdio.h>

//////////////////////////////////////////////////////////////////////////////
//
//	PURPOSE:
//
//	AUTHOR:
//
//	AUDITOR:
//
//	DATE:	01/04/09
//	
//	TEST RECORD:
//
//	MODIFICATIONS:
//
//////////////////////////////////////////////////////////////////////////////
CMsManager::~CMsManager()
{
	Clean();
}
void CMsManager::Clean()
{
	//clean the voice mobiles' list
	POSITION pos;
	pos=m_VoiceList.GetHeadPosition();
	while (pos!=NULL)
	{
		delete m_VoiceList.GetNext(pos);
	}
	m_VoiceList.RemoveAll();

	//clean the http data mobiles' list
	pos=m_HttpDataList.GetHeadPosition();
	while (pos!=NULL)
	{
		delete m_HttpDataList.GetNext(pos);
	}
	m_HttpDataList.RemoveAll();

	//clean the ftp data mobiles' list
	pos=m_FtpDataList.GetHeadPosition();
	while (pos!=NULL)
	{
		delete m_FtpDataList.GetNext(pos);
	}
	m_FtpDataList.RemoveAll();
}

//////////////////////////////////////////////////////////////////////////////
//
//	PURPOSE:
//
//	AUTHOR:
//
//	AUDITOR:
//
//	DATE:	01/04/09
//	
//	TEST RECORD:
//
//	MODIFICATIONS:
//
//////////////////////////////////////////////////////////////////////////////
void CMsManager::Initialization(int iSlotNum,float fSlotTime,
								float fDropTime,
								CLinkPrediction* pLink)
{
	//完成類的初始化工作
	m_iVoiceNumInSys=m_iVoiceNumPerSector*SectorNumber;
	m_iDataNumInSys=m_iDataNumPerSector*SectorNumber;
	m_iHttpNum=int(m_iDataNumInSys*m_fFractionHttp);
	m_iFtpNum=int(m_iDataNumInSys*m_fFractionFtp);
	m_iSlotNum=iSlotNum;
	m_fSlotTime=fSlotTime;
	m_fDropTime=fDropTime;
	m_pLinkPrediction=pLink;
	m_fTotalBits=0.0;						//總的傳輸比特量		
    m_lTotalErrorEP=0;				//總的差錯EP數
    m_lTotalGoodEP=0;				//總的正確EP數		
    m_fMeanThroughputPerSector=0.0;		//Drop內的平均吞吐量
    m_fMeanPER=0.0;						//Drop內的平均分組差錯概率
	m_lRealErrorSP=0;
	m_lRealTotalSP=0;
	m_lDiscardedPacket=0;
	m_lErrorSPDCCH=0;
	//...... modified by cqm, Apr.9 ......//
	for(int i=0;i<SectorNumber;i++)
	{
		m_iDataNumGenerated[i]=0;
		m_iVoiceNumGenerated[i]=0;
	}
	//....................................//

	//...... added by cqm, Apr.9 ......//
	//話音FER vs Eb/N0表
	int ii;
	double fC2IIndex[26]=
	{	-21.10,	-20.85,	-20.60,	-20.35,	-20.10,	-19.85,	-19.60,	-19.35,
		-19.10,	-18.85,	-18.60,	-18.35,	-18.10,	-17.85,	-17.60,	-17.35,
		-17.10,	-16.85,	-16.60,	-16.35,	-16.10,	-15.85,	-15.60,	-15.35,
		-15.10,	-14.85
	};
	for (ii=0;ii<26;ii++)
		m_fC2IIndex[ii]=(float)fC2IIndex[ii];

	double fFER_3[26]=
	{	1,		1,		1,		1,		1,		0.90,	0.80,	0.70,
		0.60,	0.50,	0.45,	0.40,	0.35,	0.30,	0.20,	0.15,
		0.09,	0.04,	0.015,	0.007,	0.004,	0.002,	0.001,	0.0005,
		0.0003,	0.00015
	};
	for (ii=0;ii<26;ii++)
		m_fFER_3[ii]=(float)fFER_3[ii];

	double fFER_30[26]=
	{	1,		1,		1,		1,		0.95,	0.85,	0.70,	0.60,
		0.55,	0.45,	0.40,	0.30,	0.20,	0.15,	0.07,	0.04,
		0.025,	0.012,	0.004,	0.003,	0.002,	0.001,	0.0005,	0.0003,
		0.00015,0.00008
	};
	for (ii=0;ii<26;ii++)
		m_fFER_30[ii]=(float)fFER_30[ii];

	double fFER_100[26]=
	{	1,		1,		1,		0.90,	0.80,	0.75,	0.70,	0.55,
		0.50,	0.40,	0.30,	0.20,	0.15,	0.10,	0.05,	0.02,
		0.011,	0.008,	0.003,	0.002,	0.0015,	0.0008,	0.0004,	0.0002,
		0.0001,	0.00005
	};
	for (ii=0;ii<26;ii++)
		m_fFER_100[ii]=(float)fFER_100[ii];


	double fFER_0[26]=
	{	1,		1,		1,		0.80,	0.60,	0.55,	0.40,	0.35,
		0.30,	0.25,	0.20,	0.10,	0.07,	0.04,	0.02,	0.008,
		0.004,	0.001,	0.0005,	0.0002,	0.0001,	0.00005,0.00003,0.00002,
		0.00001,0.000005
	};
	for (ii=0;ii<26;ii++)
		m_fFER_0[ii]=(float)fFER_0[ii];
	//..................................//
}

void CMsManager::AddUser()
{
		//移動臺管理模塊根據移動臺數量、類型分布等參數循環產生相應數量的
	//各種移動臺模塊

	//產生話音移動臺模塊
	for(int i=0;i<m_iVoiceNumInSys;i++)
	{
		CVoiceMs* pVoiceMs=new CVoiceMs;
		m_VoiceList.AddTail(pVoiceMs);
	}

	//產生Http移動臺模塊
	for(i=0;i<m_iHttpNum;i++)
	{
		CHttpDataMs* pHttpDataMs=new CHttpDataMs;
		m_HttpDataList.AddTail(pHttpDataMs);
	}

	//產生Ftp移動臺模塊
	for(i=0;i<m_iFtpNum;i++)
	{
		CFtpDataMs* pFtpDataMs=new CFtpDataMs;
		m_FtpDataList.AddTail(pFtpDataMs);
	}
}

/////////////////////////////////////////////////////////////////////////
//
//	TITLE:	Functions initializing the mobiles' lists
//
//	PURPOSE:Initialize the three mobiles' lists:
//			Voice mobiles' list
//			Http data mobiles' list
//			Ftp data mobiles' list
//
//	ALGORITHMS:
//			In this function, the mobiles' lists will be initialized by
//			the initialization functions. Since these initialization
//			functions are parallel, all of them should be called. 
//			Specificly, when initializing a voice mobile, we should call
//			the two initialization functions: CMobile::MobileInitialization(),
//			and CVoiceMs::VoiceInitialization(). And three in the case
//			of initializing a http of ftp data mobile.
//
//			The function scans each items in the three lists and calls
//			the corresponding initialization functions.
//
//			The function CMobile::MobileInitialization() is called by each
//			mobile. When calling this function, we should give four input
//			arguments: the ID, the channel type, the velocity, and the
//			standard dviation of slow fanding. The ID can be added before
//			initialization. The standard dviation of slow fanding is fixed.
//			And the channel type and the velocity are corresponding. They
//			are all determined stochasticly.
//
//			For example, there are 5 types of channel models, the probabilities
//			of them are 0.3, 0.3, 0.2, 0.1, 0.1. Then we can let the function
//			produce a random pp between 0 and 1. When pp<0.3, the channel
//			type is 1. When 0.3<=pp<0.6, the channel type is 2, and so on.
//
//			So the function does it like this:
//			1.Determine the intervals. In the case of the above example, the
//			intervals should be: (0, 0.3), (0.3, 0.6), (0.6, 0.8), (0.8, 0.9),
//			and (0.9, 1.0). In fact, the function determines the point dividing
//			the intervals. The dividing points are stored in the array called
//			fV[10]. Considering the extendability of the function, I give the
//			array ten units of space and let fV[4] to fV[9] be 1.0.
//			2.Produce a random in uniform distribution between 0 and 1.
//			3.Compare the random with the dividing points, and determine the 
//			channel type and velocity according to the result.
//
//	CALLING FUNCTIONS:
//			CDataMs::DataMsInitialization()
//			CMobile::MobileInitialization()
//			CFtpDataMs::FtpInitialization()
//			CHttpDataMs::HttpInitialization()
//			CVoiceMs::VoiceInitialization()
//	
//	CALLED BY FUNCTIONS:
//			CNetworkDrive::DropInitialization()
//
//	AUTHOR:	Ouyang Hui
//
//	DATE:	01/04/06
//
//	MODIFICTIONS SINCE 01/04/06
//
//////////////////////////////////////////////////////////////////////////
void CMsManager::MsInitialization(CServiceArea* pService)
{
	POSITION pos;
	int ID=0;
	int nType=0;
	float fV[10];
	float fVelocity,pp;

	//determine the interval division points
	fV[0]=m_fFractionOfChannel[0];
	for (int i=1;i<10;i++)
		fV[i]=1.;
	for (i=1;i<m_iChannelNumber;i++)
		fV[i]=fV[i-1]+m_fFractionOfChannel[i];
	
	//initialize the voice mobiles' list
	pos=m_VoiceList.GetHeadPosition();
	CVoiceMs* pVoiceMs=NULL;
	while (pos!=NULL)
	{
		//...... added by cqm, Apr.8 .......//
		int iVoice=Voice; //產生話音業務移動臺
		//..................................//
		pVoiceMs=m_VoiceList.GetNext(pos);
		//
		ID++;	//determine the ID

		cout<<"Mobile #"<<ID<<" initialization..."<<endl;

		//determine the channel type and the correspondent velocity
		pp=xUniform(0.,1.);		//produce a random between 0 and 1
		if (pp<fV[0])			//if the random is between 0 and fV[0]
		{fVelocity=3.;nType=1;}
		else if (pp<fV[1])		//if the random is between fV[0] and fV[1]
		{fVelocity=10.;nType=2;}
		else if (pp<fV[2])		//if the random is between fV[1] and fV[2]
		{fVelocity=30.;nType=3;}
		else if (pp<fV[3])		//if the random is between fV[2] and fV[3]
		{fVelocity=120.;nType=4;}
		else					//if the random is between fV[3] and fV[4]
		{fVelocity=0.;nType=5;}

		cout<<"	Channel type:	"<<nType<<endl;

		//call the initializing functions

		//...... modified by cqm, Apr.8 ......//
		pVoiceMs->MobileInitialization(ID,this,pService,
			fVelocity,nType,m_fStdSlowFading,iVoice); //加了一個參數
		//....................................//
		pVoiceMs->VoiceInitialization();
	}

	//initialize the http data mobiles' list
	pos=m_HttpDataList.GetHeadPosition();
	CHttpDataMs* pHttpDataMs=NULL;
	while (pos!=NULL)
	{
		//...... added by cqm, Apr.8 .......//
		int iData=Data; //產生數據業務移動臺
		//..................................//
		pHttpDataMs=m_HttpDataList.GetNext(pos);
		ID++;	//determine the ID

		cout<<"Mobile #"<<ID<<" initialization..."<<endl;

		//determine the channel type and the correspondent velocity
		pp=xUniform(0.,1.);		//produce a random between 0 and 1
		if (pp<fV[0])			//if the random is between 0 and fV[0]
		{fVelocity=3.;nType=1;}
		else if (pp<fV[1])		//if the random is between fV[0] and fV[1]
		{fVelocity=10.;nType=2;}
		else if (pp<fV[2])		//if the random is between fV[1] and fV[2]
		{fVelocity=30.;nType=3;}
		else if (pp<fV[3])		//if the random is between fV[2] and fV[3]
		{fVelocity=120.;nType=4;}
		else					//if the random is between fV[3] and fV[4]
		{fVelocity=0.;nType=5;}

		cout<<"	Channel type:	"<<nType<<endl;

		//call the initializing functions
		pHttpDataMs->MobileInitialization(ID,this,pService,
			fVelocity,nType,m_fStdSlowFading,iData);
		pHttpDataMs->DataMsInitialization(
			m_pLinkPrediction);
		pHttpDataMs->HttpInitialization();
	}

	//initialize the ftp mobiles' list
	pos=m_FtpDataList.GetHeadPosition();
	CFtpDataMs* pFtpDataMs=NULL;
	while (pos!=NULL)
	{
		//...... added by cqm, Apr.9 .......//
		int iData=Data; //產生數據業務移動臺
		//..................................//
		pFtpDataMs=m_FtpDataList.GetNext(pos);
		ID++;	//determine the ID

		cout<<"Mobile #"<<ID<<" initialization..."<<endl;

		//determine the channel type and the correspondent velocity
		pp=xUniform(0.,1.);		//produce a random between 0 and 1
		if (pp<fV[0])			//if the random is between 0 and fV[0]
		{fVelocity=3.;nType=1;}
		else if (pp<fV[1])		//if the random is between fV[0] and fV[1]
		{fVelocity=10.;nType=2;}
		else if (pp<fV[2])		//if the random is between fV[1] and fV[2]
		{fVelocity=30.;nType=3;}
		else if (pp<fV[3])		//if the random is between fV[2] and fV[3]
		{fVelocity=120.;nType=4;}
		else					//if the random is between fV[3] and fV[4]
		{fVelocity=0.;nType=5;}

		cout<<"	Channel type:	"<<nType<<endl;

		//call the initializing functions
		pFtpDataMs->MobileInitialization(ID,this,pService,
			fVelocity,nType,m_fStdSlowFading,iData);
		pFtpDataMs->DataMsInitialization(
			m_pLinkPrediction);
		pFtpDataMs->FtpInitialization();
	}

	//initialize other parameters
//zdy
//還應加入一些統計packet和時延的屬性
//
    m_fTotalBits=0.0;						//總的傳輸比特量		
    m_fMeanThroughputPerSector=0.0;		//Drop內的平均吞吐量
	m_pServiceArea=pService;
	m_fMeanPER=0.0;

//zdy新加屬性初始化
	m_lTotalErrorPacket=0;				//總的差錯Packet數
    m_lTotalGoodPacket=0;			//總的正確Packet數		

	
	//cyu于5.14修改	
	m_iDropNumOfVoice=0;				//話音業務掉話用戶數
	m_iBadNumOfVoice=0;					//話音業務不滿意用戶數
	m_iVoiceUserOfCurrentDrop=0;		//本時隙結束通話的話音用戶
	m_fDropTimeLimit=(float)5000./m_fSlotTime;	//話音業務掉話時間限
										//定義為5秒鐘,此處折換為時隙
	m_fBadRatioOfVoice=0;				//話音用戶的不滿意率
	m_fDropRatioOfVoice=0;				//話音用戶掉話率
}




//////////////////////////////////////////////////////////////////////////////
//
//	PURPOSE:Process the voice mobiles
//
//	AUTHOR:	Cheng Yu
//
//	AUDITOR:Ouyang Hui
//
//	DATE:	01/04/09
//	
//	TEST RECORD:
//
//	MODIFICATIONS:
//
//////////////////////////////////////////////////////////////////////////////
void CMsManager::VoiceProcess()
{
//	float i;
	int m=0;
	int p=0,q=0;
	POSITION pos;
	pos=m_VoiceList.GetHeadPosition();
	CVoiceMs* pVoiceMs=NULL;
	//...... added by cqm, Apr.9 ......//
	int iVoice=Voice;
	//.................................//

	while(pos!=NULL)
	{
		pVoiceMs=m_VoiceList.GetNext(pos);

		
		//cyu于5.14修改
		//在對每個移動臺進行處理時,同時判斷服務時長是否到時以及用戶是否掉話
		//若服務時長到時,則判斷是否為不滿意用戶,是則累加不滿意用戶數
		//若掉話,則完成對掉話用戶數的累加
		//若已經完成或掉話,則重新調用移動臺初始化函數,重新初始化,并增加激活話音用戶數。
		
		//...... modified by cqm, Apr.9 ......//
		if(pVoiceMs->IsServiceOver())//去掉另外一個條件,即不考慮掉話
		{
			
			//cyu于5.17修改
			p=pVoiceMs->GetFERIndicator();//單位為幀
			q=pVoiceMs->GetServiceTime(); //單位為幀 
//			if((float(p)/(float(q)/20.)>0.01)&&(q>2000)&&(!pVoiceMs->m_bIsSHOOut))//統計的幀數應該大于1000幀	
//				m_iBadNumOfVoice++;
			//...................................//
		
			
			//只累加包括本時隙結束通話的話音用戶,跨drop通話的用戶不統計
//			if((q>2000)&&(!pVoiceMs->m_bIsSHOOut))//test
//				m_iVoiceUserOfCurrentDrop++;
			m_iVoiceNumGenerated[pVoiceMs->GetLocationSector().s-1]--;
			
			int ID=pVoiceMs->GetMsID();
			

			int nType=0;
			float fV[10];
			float fVelocity,pp;
			fV[0]=m_fFractionOfChannel[0];
			for (int i=1;i<10;i++)
				fV[i]=1.;
			for (i=1;i<m_iChannelNumber;i++)
				fV[i]=fV[i-1]+m_fFractionOfChannel[i];

			pp=xUniform(0.,1.);
			if (pp<fV[0])
			{fVelocity=3.;nType=1;}
			else if (pp<fV[1])
				{fVelocity=10.;nType=2;}
			else if (pp<fV[2])
				{fVelocity=30.;nType=3;}
			else if (pp<fV[3])
				{fVelocity=120.;nType=4;}
			else
				{fVelocity=0.;nType=5;}
			pVoiceMs->MobileInitialization(ID,this,m_pServiceArea,
				fVelocity,nType,m_fStdSlowFading,iVoice);
			pVoiceMs->Clean();
			pVoiceMs->VoiceInitialization();
			//test by cqm
			pVoiceMs->SetFERIndicator(p);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产99久久久精品| 激情五月播播久久久精品| 欧美日韩在线观看一区二区 | 717成人午夜免费福利电影| 精品999在线播放| 亚洲电影中文字幕在线观看| 成人免费观看av| 精品少妇一区二区三区在线视频 | 在线观看免费视频综合| 久久午夜色播影院免费高清| 日韩激情在线观看| 欧美自拍偷拍一区| 1区2区3区国产精品| 国产98色在线|日韩| 精品不卡在线视频| 美女视频一区在线观看| 欧美日韩一区久久| 一区二区不卡在线播放| 色综合久久88色综合天天| 国产欧美一区二区精品性色超碰| 久久精品噜噜噜成人av农村| 4hu四虎永久在线影院成人| 一二三四社区欧美黄| 色狠狠综合天天综合综合| 国产精品久久久久久久久果冻传媒| 国产一区二区免费看| 精品国产乱码久久久久久久| 日韩精品成人一区二区三区| 欧美日韩国产在线播放网站| 夜夜嗨av一区二区三区中文字幕| 成人动漫在线一区| 国产精品美女久久久久久久久久久 | 成人免费在线视频观看| 99国产精品99久久久久久| 国产精品伦一区| 91美女精品福利| 亚洲女人小视频在线观看| 91日韩在线专区| 亚洲一区中文在线| 欧美日韩视频不卡| 蜜臀精品久久久久久蜜臀| 日韩精品中文字幕在线不卡尤物 | 欧美精品一区二区三| 狠狠久久亚洲欧美| 中日韩免费视频中文字幕| 成人av在线播放网址| 亚洲欧美日韩国产另类专区| 在线一区二区三区四区五区| 丝袜亚洲另类欧美| 国产欧美日韩另类一区| 偷窥少妇高潮呻吟av久久免费| 欧美色区777第一页| 天堂成人免费av电影一区| 精品国产91亚洲一区二区三区婷婷 | av在线不卡网| 亚洲免费视频成人| 欧美日韩黄视频| 国产精品一区久久久久| 亚洲色欲色欲www在线观看| 欧美日韩一级二级三级| 激情偷乱视频一区二区三区| 日韩一区中文字幕| 欧美三级在线播放| 国产高清精品在线| 亚洲综合视频网| 久久免费看少妇高潮| 91黄色在线观看| 国产一区二区三区在线观看精品| 国产精品成人一区二区三区夜夜夜| 欧美日韩国产片| 国产电影精品久久禁18| 亚洲午夜三级在线| 国产日韩欧美在线一区| 欧美年轻男男videosbes| 国产91精品一区二区麻豆网站 | 激情都市一区二区| 亚洲乱码国产乱码精品精小说| 欧美一区二区三区影视| 欧美怡红院视频| 91麻豆精品国产91久久久使用方法| 久久99蜜桃精品| 亚洲欧美色一区| 久久久久综合网| 欧美日韩免费在线视频| 国产成人aaa| 日韩av一区二区三区四区| 亚洲天堂精品视频| 国产午夜亚洲精品理论片色戒 | 欧美成人三级电影在线| 91免费国产在线观看| 国产一区二区三区在线观看免费视频 | 欧美高清激情brazzers| 91丨九色丨蝌蚪丨老版| 国产精品一级片| 免费在线观看视频一区| 亚洲香蕉伊在人在线观| 亚洲欧美在线另类| 国产精品少妇自拍| 久久日一线二线三线suv| 91麻豆精品国产91久久久更新时间| av在线播放一区二区三区| 国产成人av在线影院| 国产一区在线精品| 国产一区二区三区久久久| 日韩1区2区日韩1区2区| 石原莉奈在线亚洲三区| 午夜视频在线观看一区二区| 亚洲欧美日韩国产综合在线| 日韩一区在线免费观看| 亚洲天堂网中文字| 亚洲欧美色综合| 有坂深雪av一区二区精品| 一区二区三区av电影| 亚洲综合自拍偷拍| 一区二区三区四区国产精品| 亚洲精品中文在线观看| 日韩理论片在线| 一区二区三区不卡视频在线观看| 一区二区三区中文在线观看| 亚洲一区二区三区中文字幕在线| 一区二区三区色| 亚洲h动漫在线| 青娱乐精品视频| 国产在线观看一区二区| 成人视屏免费看| 色婷婷久久综合| 欧美日韩一卡二卡三卡 | 综合久久国产九一剧情麻豆| 亚洲日本电影在线| 亚洲成人一区在线| 精品一区二区国语对白| 国产不卡视频在线观看| 91视频www| 欧美一级电影网站| 国产日产欧美一区| 亚洲精品成a人| 美女精品自拍一二三四| 国产成人午夜高潮毛片| 色视频成人在线观看免| 91精品国产一区二区三区蜜臀| 欧美精品一区二区三区四区| 国产精品久99| 日日欢夜夜爽一区| 国产99久久久国产精品免费看 | aaa国产一区| 欧美精品免费视频| 久久精品在这里| 一级特黄大欧美久久久| 国产一区二区免费看| 色偷偷久久一区二区三区| 欧美成人精品福利| 亚洲精品视频一区二区| 久久机这里只有精品| 99久久综合国产精品| 欧美一区日本一区韩国一区| 国产亚洲短视频| 婷婷久久综合九色国产成人| 成人精品一区二区三区四区| 欧美日高清视频| 亚洲欧洲另类国产综合| 日本成人在线一区| 91在线免费播放| 精品国产91乱码一区二区三区| 一区二区三区在线观看网站| 国产精品资源在线看| 91精品国产综合久久蜜臀| 亚洲男人的天堂网| 国产成人免费视频| 欧美大尺度电影在线| 一区二区三区欧美日韩| 成人精品国产一区二区4080| 日韩欧美一级在线播放| 亚洲宅男天堂在线观看无病毒| 国产成人激情av| 精品国产百合女同互慰| 五月天国产精品| 欧美性色综合网| 亚洲免费在线看| 91在线观看污| 国产精品理伦片| 高清国产一区二区三区| 欧美成人一区二区| 蜜桃久久av一区| 欧美一区二区黄色| 午夜精品久久一牛影视| 在线观看亚洲一区| 一区二区视频在线看| 99精品视频在线观看| 国产精品色一区二区三区| 国产一区二区精品久久99| 久久综合色播五月| 极品少妇一区二区| 精品日韩一区二区三区| 久久国产精品99久久久久久老狼 | 欧美日韩综合不卡| 亚洲永久免费av| 欧美日韩国产精选| 日韩av电影天堂| 日韩精品一区二| 国产精一区二区三区|