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

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

?? packagedealnew.c

?? 基于嵌入式linux下
?? C
?? 第 1 頁 / 共 3 頁
字號:
#include "dispatch.h"

const char *Dispatch_SureFile="/bus/config/dispatch.msg";
const char *Dispatch_BusMenuFile="/bus/config/BusReport.menu";
const char *Dispatch_EveMenuFile="/bus/config/EveReport.menu";
extern unsigned short CurCarState;

/*根據byte數組和指定的位置,返回其對應的數值

*/
//將傳入的字節數組進行倒序
void ConvertData(char *dataByte,char *rDataByte,int charLen)
{
	int i; 	
	for (i=0;i<charLen ;i++)
	{
		rDataByte[i]= dataByte[charLen-1-i];
	}
	return;

}

//將16位無符號整形轉化為字節數組
void CInt16ToBytes(unsigned short bytedata,char *rbytesData)
{
	byte bytesdata[2];
	
	bytesdata[0]=BASE_DATA_ONE(bytedata);
	bytesdata[1]=BASE_DATA_TWO(bytedata);
	
	//memcpy(rbytesData,ConvertData(bytesdata),2);
	memcpy(rbytesData,bytesdata,2);

	return;
}

//將32位無符號整形轉化為字節數組
void CInt32ToBytes(unsigned int bytedata,char *rbytesData)
{
	byte bytesdata[4] ;
	
	bytesdata[0]=BASE_DATA_ONE(bytedata);
	bytesdata[1]=BASE_DATA_TWO(bytedata);
	bytesdata[2]=BASE_DATA_THREE(bytedata);
	bytesdata[3]=BASE_DATA_FOUR(bytedata);
	
	//memcpy(rbytesData,ConvertData(bytesdata),4);
	
	memcpy(rbytesData,bytesdata,4);	
	return;
}

//根據傳入的字節數組和指點的位置,從相連的兩個字節中返回對應的數值
unsigned short BytesToUshort(char *bytesdata,int index)
{
	unsigned short rushort;
	
	rushort =BACK_DATA_TWO(bytesdata[index]);
	rushort =rushort+BACK_DATA_ONE(bytesdata[index+1]);

	return rushort;

}

//根據傳入的字節數組和指點的位置,從相連的四個字節中返回對應的數值
unsigned int BytesToUInt(char *bytesdata,int index)
{
	unsigned int ruint;
	
	ruint =BACK_DATA_FOUR(bytesdata[index]);
	ruint =ruint+BACK_DATA_THREE(bytesdata[index+1]);
	ruint =ruint+BACK_DATA_TWO(bytesdata[index+2]);
	ruint =ruint+BACK_DATA_ONE(bytesdata[index+3]);
	
	return ruint;

}

//把數字型轉換為字符型,位數不夠則前面補零
void NumtoStr(const unsigned long Num,char *target,int intLength)
{
	char *value;
	unsigned long sourceL,charByte;
	int i;
	
	sourceL = Num;

	i=0;
	while(sourceL > 0)
	{
		charByte = sourceL % 10;
		target[intLength-i-1]= (char)charByte+'0';
		sourceL = sourceL/10;
		i++;
	}
	while (i<intLength)
	{
		target[intLength-i-1]= (char)0+'0';
		i++;
	}
	return;
}

//把數字型轉換為字符型
int NumtoStrL(const unsigned long Num,char *target)
{
	char *value,tmpstr[ECHOMAX];
	unsigned long sourceL,charByte;
	int i,j;
	
	sourceL = Num;

	i=0;
	while(sourceL > 0)
	{
		charByte = sourceL % 10;
		tmpstr[i]= (char)charByte+'0';
		sourceL = sourceL/10;
		i++;
	}

	for (j=0;j<i;j++)
	{
		target[j]=tmpstr[i-1-j];
	}
	
	return i;
}
//把所有內存中未發送的GPS數據全部刪除
//把文件中所有未發送的GPS數據全部標記為已發送
void ClearSendGPS(void)
{
	int i;
	char buf[2];

	for (i=0;i<ECHOMAX;i++)
	{
		//把當前隊列中所有未發送的GPS數據清除
		if((CurDispatch_SendInfo[i].SerialNo!=0)&&(CurDispatch_SendInfo[i].OperationNo==63))
		{
			memset(&CurDispatch_SendInfo[i],0,sizeof(CurDispatch_SendInfo[i]));			
		}
	}
	//把文件中的未發送數據全部標記
	while(1)
	{
		memset(buf,1,sizeof(buf));
		if(GPS_fd<=0)
		{
			printf("Clear GPS Info error!\n");
			return;
		}
		lseek(GPS_fd,Offset_UnSendGPS*GPS_RECORD_LEN,SEEK_SET);

		write(GPS_fd,buf,1);
		Offset_UnSendGPS = (Offset_UnSendGPS + 1) % RECORDMAX;
		lseek(GPS_fd,Offset_UnSendGPS*GPS_RECORD_LEN,SEEK_SET);
		read(GPS_fd,buf,1);
		if(buf[0]==1)
		{
			printf("Clear all file!\n");
			break;
		}
	}
}
//從本地保存的文件中找出需要的歷史數據,填入到發送隊列中
//填入到發送隊列中的所有數據全部立即生成,加入內存隊列中發送
void RequestHistoryData(unsigned short RequestType,unsigned short DataMode,time_t Start_time,time_t End_time)
{
	char	*tmpbuf;
	char	tmpGps[25],tmpAPC[36],tmpCR[20];
	int		recordnum;
	int		i;
	Package_Info commInter;

	printf("start time is %s!\n",gmtime(&Start_time));
	printf("end time is %s!\n",gmtime(&End_time));
	switch (RequestType)
	{
		case 1:		//GPS定位數據
			if(DataMode==1)				//返回歷史數據
			{
				tmpbuf = GetGpsHisData(Start_time,End_time,&recordnum);
				printf("Find history data %d!\n",recordnum);
				for(i=0;i<recordnum;i++)
				{		//把找到的GPS數據加入到內存中					
					memset(tmpGps,0,sizeof(tmpGps));
//					printf("Send data from history file!\n");
					memcpy(tmpGps,tmpbuf+(25*i),sizeof(tmpGps));
					//形成GPS數據的包頭信息
					commInter.BeginEnd=HEAD_GPS_PACKAGE;
					commInter.ByteLength=0x06;
					memcpy(commInter.SerialNum,GPSID_Send,12);
					commInter.AppType=0x16;
					commInter.OperationNo=0x3F;
					commInter.SerialNo=staticSendSeriNO;
					commInter.DataType=0x02;
					commInter.DataLength=0x19;

					tmpGps[19]=tmpGps[19]|0x08;
					memcpy(commInter.DataContent,tmpGps,sizeof(tmpGps));

					Deal_SendInfo(commInter,1);
				}
				free(tmpbuf);
			}
			else if(DataMode==2)		//返回當前最新的GPS數據
			{
				char LongP[4],SpeedH[2],Dispatch[3];
				int tmpInfo;

				GPS_Info LocalCurGPS_Info; 
				Dispatch_Info LocalDispatch_Info;			//Point the share mem

				printf("Get real time data ");
				IPC_ProcState_Read(PROCID_GPS,CurGPS_Info,&LocalCurGPS_Info);	
				IPC_ProcState_Read(PROCID_DISPATCH,CurDispatch_Info,&LocalDispatch_Info);
				CInt32ToBytes(LocalCurGPS_Info.GPSData.longitude,LongP);				
				tmpGps[0]=LongP[3];	tmpGps[1]=LongP[2];	tmpGps[2]=LongP[1];	tmpGps[3]=LongP[0];
				CInt32ToBytes(LocalCurGPS_Info.GPSData.latitude,LongP);				
				tmpGps[4]=LongP[3];	tmpGps[5]=LongP[2];	tmpGps[6]=LongP[1];	tmpGps[7]=LongP[0];
				CInt16ToBytes(LocalCurGPS_Info.GPSData.speed,SpeedH);				
				tmpGps[8]=SpeedH[1]; tmpGps[9]=SpeedH[0];
				CInt16ToBytes(LocalCurGPS_Info.GPSData.direction,SpeedH);				
				tmpGps[10]=SpeedH[1]; tmpGps[11]=SpeedH[0];
				CInt32ToBytes(LocalCurGPS_Info.GPSData.datetime,LongP);				
				tmpGps[12]=LongP[3]; tmpGps[13]=LongP[2]; tmpGps[14]=LongP[1]; tmpGps[15]=LongP[0];
				//報警標志
				if (LocalDispatch_Info.CarState>0)
				{
					CInt16ToBytes(CurCarState,SpeedH);
					tmpGps[16]=SpeedH[1]; tmpGps[17]=SpeedH[0];
				}
				else
				{
					tmpGps[16]=0x00; tmpGps[17]=0x00;
				}
				//信息標志
				if (LocalCurGPS_Info.GPSData.valid=='A')
				{
					tmpInfo=0x00;
				}
				else
				{
					tmpInfo=0x01;
				}
				if ((LocalDispatch_Info.CarState & 0xFFFF)>0)
				{
					tmpInfo=tmpInfo+0x04;
				}
				tmpGps[18]=0x00;
				tmpGps[19]=tmpInfo|0x10;		//置實時數據返回標志				
				tmpGps[20]=LocalCurGPS_Info.GPSData.amount;
				
				CInt16ToBytes(LocalCurGPS_Info.GPSData.hpop,SpeedH);				
				tmpGps[21]=SpeedH[1];
				tmpGps[22]=SpeedH[0];
				
				CInt16ToBytes(LocalCurGPS_Info.GPSData.hpe,SpeedH);				
				tmpGps[23]=SpeedH[1];
				tmpGps[24]=SpeedH[0];

				commInter.BeginEnd=HEAD_GPS_PACKAGE;
				commInter.ByteLength=0x06;
				memcpy(commInter.SerialNum,GPSID_Send,12);
				commInter.AppType=0x16;
				commInter.OperationNo=0x3F;
				commInter.SerialNo=staticSendSeriNO;
				commInter.DataType=0x02;
				commInter.DataLength=0x19;

				tmpGps[19]=tmpGps[19]|0x08;
				memcpy(commInter.DataContent,tmpGps,sizeof(tmpGps));

				Deal_SendInfo(commInter,1);
			}
			break;
		case 2:		//客流檢測數據
			if(DataMode==1)		//歷史數據
			{
				tmpbuf = GetAPCHisData(Start_time,End_time,&recordnum);
				for(i=0;i<recordnum;i++)
				{	//把找到的APC數據加入到內存中					
					memset(tmpAPC,0,sizeof(tmpAPC));
					memcpy(tmpAPC,tmpbuf+(35*i),25);	//首先復制GPS數據
					tmpAPC[25] = 0x1;		//數據標志,表示為歷史數據
					memcpy(tmpAPC+26,tmpbuf+(35*i)+25,10);	//再復制客流數據

//					memcpy(commInter.DataContent,tmpAPC,sizeof(tmpAPC));
					//形成APC數據的包頭信息
					commInter.BeginEnd=HEAD_GPS_PACKAGE;
					commInter.ByteLength=0x06;
					memcpy(commInter.SerialNum,GPSID_Send,12);
					commInter.AppType=0x16;
					commInter.OperationNo=0x40;		//客流量計數據的操作碼64
					commInter.SerialNo=staticSendSeriNO;
					commInter.DataType=0x02;
					commInter.DataLength=0x24;		//客流量計數據的長度
					memcpy(commInter.DataContent,tmpAPC,sizeof(tmpAPC));
					Deal_SendInfo(commInter,1);
				}
				free(tmpbuf);
			}
			else if(DataMode==2)	//當前最新的APC數據
			{
			}
			break;
		case 3:		//行車狀況數據
			if(DataMode==1)		//歷史數據
			{
				tmpbuf = GetCRHisData(Start_time,End_time,&recordnum);
				for(i=0;i<recordnum;i++)
				{	//把找到的APC數據加入到內存中					
					memcpy(tmpCR,tmpbuf+(20*i),20);	//再復制客流數據
					tmpCR[0] = 0x1;		//數據標志,表示為歷史數據
//					memcpy(commInter.DataContent,tmpCR,sizeof(tmpCR));
					//形成CR數據的包頭信息
					commInter.BeginEnd=HEAD_GPS_PACKAGE;
					commInter.ByteLength=0x06;
					memcpy(commInter.SerialNum,GPSID_Send,12);
					commInter.AppType=0x16;
					commInter.OperationNo=0x41;		//carstate數據的操作碼65
					commInter.SerialNo=staticSendSeriNO;
					commInter.DataType=0x02;
					commInter.DataLength=sizeof(tmpCR);
					memcpy(commInter.DataContent,tmpCR,sizeof(tmpCR));
					//memcpy(commInter.DataContent,tmpGps,sizeof(tmpGps));

					Deal_SendInfo(commInter,1);
				}
				free(tmpbuf);
			}
			else if(DataMode==2)	//當前最新的CR數據
			{
			}
			break;
		default:
			break;
	}
}
//檢驗校驗位是否對
int CheckData(char *ReadByteData,int dataLen)
{
	int rFlag =FALSE;
	unsigned short Check;
	byte bytedatas[dataLen-2];
	unsigned short JiSuanCheck;

	Check=BytesToUshort(ReadByteData ,dataLen-2);
	memcpy(bytedatas,ReadByteData,dataLen-2);
	
	JiSuanCheck=GetCheckData(bytedatas,dataLen-2);

	if (Check !=JiSuanCheck )
	{
		rFlag=FALSE;
	}
	else if (Check ==JiSuanCheck)
	{
		rFlag=TRUE;
	}
	return rFlag;
}

//取得校驗碼 
unsigned short GetCheckData(char *bytedatas,int dataLen)
{
	unsigned short JiSuanCheck;
	
	int i;
	JiSuanCheck=0;
	
	for (i=0;i<dataLen;i++)
	{
		JiSuanCheck=(JiSuanCheck ^ bytedatas[i]) & 0xFF;
	}
	return JiSuanCheck;
}

//GPRS注冊
//GPRS發送,由毛鵬修改過,修改內容為不把注冊信息加入內存
#if 1
int RegesterInfo(int sockFD, Package_Info commInter,struct sockaddr_in echoServAddr)
{
	int i;
	char RecvDataAll[ECHOMAX];
	unsigned short echoStringLen;   /* Length of string to echo */
	char *echoString;                /* String to send to echo server */
	Dispatch_Info LocalDispatch_Info;			//Point the share mem
	
//	Deal_SendInfo(commInter,1);		//此處移去把注冊信息添加到內存中的發送隊列中的內容

	//此處添加為當前注冊信息生成流水號的內容
	staticSendSeriNO=staticSendSeriNO+1;
	commInter.SerialNo=staticSendSeriNO;

//	printf("Here to send!\r\n");
	if (commInter.SerialNo!=0)
	{
		
		echoStringLen=SendMessageCreate(commInter,RecvDataAll);
//		printf("Here2!\r\n");
	    echoString=malloc(echoStringLen);	    
	    memcpy(echoString,RecvDataAll,echoStringLen);
	
	    if (echoStringLen > ECHOMAX)  /* Check input length */
			printf("word too length!\r\n");
//		printf("Here to echo string!\r\n");
/*		for(i=0;i<echoStringLen;i++)
		{
			printf("-%02x",*(echoString+i)&0xff);
		}
*/
	    /* Send the string to the server */
	    if (sendto(sockFD, echoString, echoStringLen, 0, (struct sockaddr *)
	               &echoServAddr, sizeof(echoServAddr)) != echoStringLen)
	    {
	        printf("RegesterInfo sendto fail!\r\n");
	        //修改共享內存(注冊失敗)
			IPC_ProcState_Read(PROCID_DISPATCH,CurDispatch_Info,&LocalDispatch_Info);
			//LocalDispatch_Info.CarState=0;
			LocalDispatch_Info.CommState=0;
			LocalDispatch_Info.Proc_Info.PID = getpid();
			time(&(LocalDispatch_Info.Proc_Info.ctime));
			
			//Share mem write
			IPC_ProcState_Write(PROCID_DISPATCH,CurDispatch_Info,&LocalDispatch_Info);
			
			//IPC_ProcState_Read(PROCID_DISPATCH,CurDispatch_Info,&LocalDispatch_Info);
			
			//put DISPATCH data and com status to sharemem
			//printf("DISPATCH read success!\r\n");
			//printf("DISPATCH Data CarState:%d\r\n",LocalDispatch_Info.CarState);
			//printf("DISPATCH Data Proc_Info.CommState:%d\r\n",LocalDispatch_Info.CommState);
			//printf("DISPATCH Data Proc_Info.PID:%d\r\n",LocalDispatch_Info.Proc_Info.PID);
			//printf("DISPATCH Data Proc_Info.ctime:%s\r\n",ctime(&(LocalDispatch_Info.Proc_Info.ctime)));
	        return 0;
	    }
	    
	    free(echoString);
	}
    
    return 1;
}
#endif
//GPRS發送數據
int SocketSendInfo(int sockFD, Package_Info commInter,struct sockaddr_in echoServAddr)
{
	char RecvDataAll[ECHOMAX];
	unsigned short echoStringLen;   /* Length of string to echo */
	char *echoString;                /* String to send to echo server */
	Dispatch_Info LocalDispatch_Info;			//Point the share mem

	//把要發送的數據放進發送隊列
	Deal_SendInfo(commInter,1);
	//發送隊列中的首個數據包
	if (CurDispatch_SendInfo[0].SerialNo!=0)
	{
		echoStringLen=SendMessageCreate(CurDispatch_SendInfo[0],RecvDataAll);
		
	    echoString=malloc(echoStringLen);
	    
	    memcpy(echoString,RecvDataAll,echoStringLen);
	
	    if (echoStringLen > ECHOMAX)  /* Check input length */
			printf("word too length!\r\n");
	
	    /* Send the string to the server */
	    if (sendto(sockFD, echoString, echoStringLen, 0, (struct sockaddr *)
	               &echoServAddr, sizeof(echoServAddr)) != echoStringLen)
	    {
	        printf("SocketSendInfo sendto fail!\r\n");
	        //修改共享內存()
			IPC_ProcState_Read(PROCID_DISPATCH,CurDispatch_Info,&LocalDispatch_Info);
			//LocalDispatch_Info.CarState=0;
			LocalDispatch_Info.CommState=0;
			LocalDispatch_Info.Proc_Info.PID = getpid();
			time(&(LocalDispatch_Info.Proc_Info.ctime));
			
			//Share mem write
			IPC_ProcState_Write(PROCID_DISPATCH,CurDispatch_Info,&LocalDispatch_Info);
			
			//IPC_ProcState_Read(PROCID_DISPATCH,CurDispatch_Info,&LocalDispatch_Info);
			
			//put DISPATCH data and com status to sharemem
			//printf("DISPATCH read success!\r\n");
			//printf("DISPATCH Data CarState:%d\r\n",LocalDispatch_Info.CarState);
			//printf("DISPATCH Data Proc_Info.CommState:%d\r\n",LocalDispatch_Info.CommState);
			//printf("DISPATCH Data Proc_Info.PID:%d\r\n",LocalDispatch_Info.Proc_Info.PID);
			//printf("DISPATCH Data Proc_Info.ctime:%s\r\n",ctime(&(LocalDispatch_Info.Proc_Info.ctime)));
	    }
		else
		{
//			printf("Here send out data!");
			Waitresp = 1;
		}
	    free(echoString);
		return 0;
	}    
    return 1;
}
//用于從內存中發送數據時,發送的數據已經存在緩沖中,此時,無須再次把要發送的數據再次加入內存
int SocketReSendInfo(int sockFD, Package_Info commInter,struct sockaddr_in echoServAddr)
{
	char RecvDataAll[ECHOMAX];
	unsigned short echoStringLen;   /* Length of string to echo */
	char *echoString;                /* String to send to echo server */
	Dispatch_Info LocalDispatch_Info;			//Point the share mem
	int	i=0;
	
//	Deal_SendInfo(commInter,1);			和socketSendInfo的差別在這里
	for(i=0;i<ECHOMAX;i++)
	{
		if (CurDispatch_SendInfo[i].SerialNo!=0)
		{
			printf("Unsend in position %d!",i);
			echoStringLen=SendMessageCreate(CurDispatch_SendInfo[i],RecvDataAll);
			
			echoString=malloc(echoStringLen);
			
			memcpy(echoString,RecvDataAll,echoStringLen);
		
			if (echoStringLen > ECHOMAX)  /* Check input length */
				printf("word too length!\r\n");
		
			/* Send the string to the server */
			if (sendto(sockFD, echoString, echoStringLen, 0, (struct sockaddr *)
					   &echoServAddr, sizeof(echoServAddr)) != echoStringLen)
			{
				printf("SocketSendInfo sendto fail!\r\n");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美第一区| 亚洲女性喷水在线观看一区| 国产精品午夜在线观看| 一区二区国产盗摄色噜噜| 精品一区二区三区在线观看| 91一区一区三区| 久久精品水蜜桃av综合天堂| 一级女性全黄久久生活片免费| 国产精品一卡二卡在线观看| 538prom精品视频线放| 一区二区免费视频| 成人手机在线视频| 2014亚洲片线观看视频免费| 亚洲电影视频在线| 色婷婷一区二区三区四区| 久久久精品影视| 久草热8精品视频在线观看| 精品视频在线免费看| 1000精品久久久久久久久| 精品一区二区免费视频| 5858s免费视频成人| 亚洲成人免费电影| 欧美视频自拍偷拍| 亚洲精品少妇30p| 91麻豆免费视频| 亚洲视频一二三| 91美女在线观看| 一区二区三区四区在线免费观看| 97精品久久久久中文字幕 | 中文字幕一区日韩精品欧美| 精品一区二区在线观看| 欧美成人女星排名| 久久成人免费网站| wwwwww.欧美系列| 国产美女精品在线| 国产午夜精品久久久久久免费视 | 国产一区视频在线看| 欧美一区二区三区在线视频 | 国产成人精品一区二| 欧美激情中文字幕一区二区| 国产成人无遮挡在线视频| 国产午夜精品福利| 成人av电影在线观看| 亚洲婷婷综合色高清在线| 一本久久a久久精品亚洲| 一个色妞综合视频在线观看| 欧美在线免费观看视频| 亚洲午夜av在线| 91精品国模一区二区三区| 青青草国产精品97视觉盛宴 | 国精产品一区一区三区mba视频 | 精品在线一区二区三区| 久久久精品日韩欧美| 成人av免费在线| 天堂va蜜桃一区二区三区漫画版| 8x8x8国产精品| 国产精品自在欧美一区| 亚洲人成7777| 欧美一区二视频| 国产成人精品亚洲日本在线桃色 | 日本一区二区久久| 91碰在线视频| 日本va欧美va欧美va精品| 国产午夜精品一区二区| 色噜噜狠狠色综合欧洲selulu| 日韩精品亚洲专区| 久久精品亚洲麻豆av一区二区 | 99精品国产一区二区三区不卡| 一片黄亚洲嫩模| 精品国产伦一区二区三区免费| 不卡在线视频中文字幕| 丝袜美腿亚洲一区二区图片| 中文字幕国产一区| 欧美日韩国产片| 高清在线成人网| 石原莉奈在线亚洲二区| 国产精品每日更新| 日韩精品一区二区三区四区| 91免费看视频| 狠狠久久亚洲欧美| 亚洲妇女屁股眼交7| 久久精品亚洲乱码伦伦中文| 欧美日韩国产高清一区二区 | 国产精品免费人成网站| 91精品国产aⅴ一区二区| 色综合久久中文综合久久牛| 久久99最新地址| 亚洲午夜av在线| 亚洲欧美日韩国产中文在线| 国产午夜精品理论片a级大结局| 欧美日韩一区二区三区在线看| 成人18视频日本| 国产精品系列在线观看| 久久精品99国产精品| 亚洲韩国一区二区三区| 亚洲欧美在线视频| 久久久久99精品一区| 精品免费视频一区二区| 欧美日韩免费一区二区三区| 99re66热这里只有精品3直播 | 欧美亚洲综合网| 91亚洲大成网污www| 成人黄色a**站在线观看| 国产精品夜夜爽| 国产精品综合一区二区三区| 精品写真视频在线观看| 久久精品99久久久| 麻豆精品一区二区三区| 日本麻豆一区二区三区视频| 五月天久久比比资源色| 亚洲国产cao| 国产成人精品影视| 一区二区三区日韩精品视频| 国产精品麻豆一区二区| 中文字幕av一区二区三区免费看 | 成人av午夜电影| 99在线视频精品| 9色porny自拍视频一区二区| 成人福利视频在线看| 99免费精品在线观看| 不卡欧美aaaaa| 色综合天天性综合| 欧美艳星brazzers| 678五月天丁香亚洲综合网| 欧美一级日韩一级| 久久女同精品一区二区| 国产欧美视频一区二区三区| 亚洲国产精品精华液2区45| 亚洲欧洲精品一区二区三区 | 奇米综合一区二区三区精品视频| 秋霞av亚洲一区二区三| 国产精品中文字幕欧美| av欧美精品.com| 欧美中文字幕一区| 欧美一区二区三区日韩| 26uuu色噜噜精品一区二区| 国产欧美精品在线观看| 亚洲精品乱码久久久久久黑人 | 欧美视频在线观看一区二区| 欧美美女一区二区| 精品精品国产高清a毛片牛牛 | 日韩一区二区三区三四区视频在线观看 | 欧美日韩在线观看一区二区| 5858s免费视频成人| 国产日韩欧美麻豆| 亚洲综合小说图片| 久久精品国产亚洲a| 成人av在线影院| 在线电影欧美成精品| www国产成人免费观看视频 深夜成人网| 国产日产精品1区| 亚洲在线中文字幕| 男人的天堂亚洲一区| 成人国产在线观看| 欧美一区永久视频免费观看| 国产精品视频观看| 肉色丝袜一区二区| 成人一道本在线| 91 com成人网| 综合欧美一区二区三区| 久久不见久久见中文字幕免费| 97久久精品人人做人人爽| 日韩一区二区三区高清免费看看| 亚洲欧美另类小说| 另类小说图片综合网| 91蝌蚪porny九色| 2020国产精品| 日本不卡视频在线| 在线观看91精品国产入口| 欧美一区二区三区视频免费| 综合久久国产九一剧情麻豆| 首页综合国产亚洲丝袜| 成人av网站免费| wwwwxxxxx欧美| 日韩—二三区免费观看av| 91久久精品一区二区三区| 久久综合久久综合久久| 日韩中文字幕区一区有砖一区| 99热国产精品| 欧美国产日韩精品免费观看| 久久99精品视频| 欧美一级视频精品观看| 天天av天天翘天天综合网色鬼国产| 成人免费视频一区| 欧美变态口味重另类| 日韩精彩视频在线观看| 欧美在线综合视频| 亚洲综合视频在线| 波多野结衣视频一区| 国产香蕉久久精品综合网| 久久国产精品一区二区| 欧美电影一区二区| 午夜免费欧美电影| 欧美日韩精品欧美日韩精品| 亚洲一区二区免费视频| 欧美色老头old∨ideo| 婷婷综合在线观看| 欧美久久高跟鞋激| 性感美女久久精品| 欧美日韩成人综合天天影院|