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

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

?? lb_recv.c

?? 中國石油二期加油站IC系統后臺通訊軟件
?? C
字號:
/*
***********************************************************************************************************
													  Amos
										  The Real_Time Operation System
												   Multi Task
								 (c) Copyright 1998-2002, ShangYaoHui, Shenzhen
											  All Right Reserved
												  VERSION 6.01

" By  : 商耀揮(ShangYaoHui)
 create time: 2002-7-1 16:31:29  
***********************************************************************************************************
*/

/************ head file list *************/
/* header include files -- defines (.h) */
#include "envopt.h"        /* environment options */
#include "envdep.h"        /* environment dependent */
#include "envind.h"        /* environment independent */

#include "gen.h"           /* general */
#include "cm5.h"           /* common functions */
#include "ssi.h"           /* system services */

/* header/extern include files (.x) */

#include "gen.x"           /* general */
#include "cm5.x"           /* common functions */
#include "ssi.x"           /* system services */

#include "cm_llist.h"
#include "cm_llist.x"

#ifdef WIN32
	#include "winbase.h"
	#include "winsock2.h"
#endif

#include "rx.h"
#include "rx.x"

#include "rx_msg.h"
#include "rx_msg.x"

#include "lb_cm.h"
#include "lb_cm.x"

#include "lb_recv.h"
#include "lb_recv.x"
#include "lb_xmit.h"
#include "lb_xmit.x"
#include "lb_msg.h"
#include "lb_msg.x"

#include "lb_bdy1.h"
#include "lb_bdy1.x"
#include "lb_bdy2.h"
#include "lb_bdy2.x"
#include "lb_bdy4.h"
#include "lb_bdy3.h"
#include "lb_bdy3.x"
#include "lb_bdy4.h"
#include "lb_bdy4.h"
#include "lb_bdy4.x"
#include "lb_bdy5.h"
#include "lb_bdy5.x"

/************* const define **************/

/******** import variable declare ********/

/******* gloable variable declare ********/

/*********** function declare ************/

/********** function prototype ***********/
S16 lbRecvProcess(ScCommCb_s * scCommCb)
{
	COMSTAT commStat;
	S32 err, len, actualLen;
	S16 ret = RFAILED;

	err = ClearCommError(scCommCb->comm, &err, &commStat );
	if(err == 0)
	{
		err = GetLastError();
	}

	len = commStat.cbInQue;

	if(len > 0)
	{
#if 0
		Data * recvBuf;
#endif	
		Data   recvBuf[2048];
#if 0
		if(ROK != SGetSBuf(0, 0, &recvBuf, len))
		{
			RXLOGERROR(ENTSC, 0, 0, "Error: no buf to recv comm message");
			RETVALUE(RFAILED);
		}
#endif
		ret = ReadFile(scCommCb->comm, recvBuf, len, &actualLen, NULLP);
		if(ret != FALSE)
		{
			#ifdef LO_DEBUG
			lbCmPrntBuf("Recv buf: ", recvBuf, (MsgLen)actualLen);
			LBLOG(scCommCb->commName, 0, 0);
			LBLOG("Recv msg", recvBuf, actualLen);

			#endif
			ret = lbParseRecvMsg(scCommCb, (Data *)recvBuf, (MsgLen)actualLen);
		}
#if 0
		SPutSBuf(0, 0, recvBuf, len);
#endif

	}
	RETVALUE(ret);
}


S16 lbRecvReadTotleAck(EquCfgEntry_s * equ, TranCb_s * tran, ReadTotleAck_s * ack)
{
	U8 gunId;
	U32 * volume;

	if(ack->ackCode != 'A')
	{
		printf("error : ackcode\n");
		RETVALUE(RFAILED);
	}

	if(ack->gunNum != 1)
	{
		printf("error gun num\n");
		RETVALUE(RFAILED);
	}
	volume = (U32 *)(ack+1) ;

	for(gunId = 0; gunId < ack->gunNum; gunId++)
	{
		equ->totleVolume = ntohl(volume[gunId]);
		equ->duringVolume = ntohl(volume[gunId + ack->gunNum]);
	}

	RETVALUE(ROK);
}

S16 lbRecvReadFillCardAsnAck(EquCfgEntry_s * equ, TranCb_s * tran, ReadCardAsnAck_s * ack)
{

	if(ack->ackCode != 'A')
	{
		printf("error : ackcode\n");
		RETVALUE(RFAILED);
	}

    memcpy(equ->crrntCardNo, ack->asn, 10);

	RETVALUE(ROK);
}

S16 lbRecvReadBlkCardAsnAck(EquCfgEntry_s * equ, TranCb_s * tran, ReadCardAsnAck_s * ack)
{
	RxCmdEntry_s * entry;
    CardAsn_s * ent;

	if(ack->ackCode != 'A')
	{
		printf("error : ackcode\n");
		RETVALUE(RFAILED);
	}

	LBGETCMDENTRY(0, CMD_DIR, entry);
	LBGETTRAN(entry, equ, tran);
	lbBuildCfm(equ,tran , BLK_CARD_RQST, NULLP);
	if(ROK != cmHashListFind(&rxCb.BlkListHl, ack->asn, 10, 0, (PTR*)&ent))
	{
		equ->cfmStat = RFAILED;
	}
	else
	{
		equ->cfmStat = ROK;

		LBGETCMDENTRY(0, CMD_DIR, entry);
		LBGETTRAN(entry, equ, tran);
		lbBuildGetCardInfo(equ,tran , NULLP);


		LBGETCMDENTRY(0, IND_DIR, entry);
		LBGETTRAN(entry, equ, tran);

		lbIndCardInfoMsg(equ,tran , NULLP);
	}

	RETVALUE(ROK);
}


S16 lbRecvReadWorkerCardAsnAck(EquCfgEntry_s * equ, TranCb_s * tran, ReadCardAsnAck_s * ack)
{

	if(ack->ackCode != 'A')
	{
		printf("error : ackcode\n");
		RETVALUE(RFAILED);
	}


	memcpy(equ->workerCardNo, ack->asn, 10);

	RETVALUE(ROK);
}


S16 lbRecvReadCardInfoAck(EquCfgEntry_s * equ, TranCb_s * tran, ReadCardInfoAck_s * ack)
{

	if(ack->ackCode != 'A')
	{
		printf("error : ackcode\n");
		RETVALUE(RFAILED);
	}


	memcpy(equ->crrntCardNo, ack->asn, 10);

	equ->crrntCardInfo.cardType = ack->cardType;
	equ->crrntCardInfo.cardValue = ntohl(ack->cardValue);
	equ->crrntCardInfo.cardStat = ack->cardStat;
	equ->crrntCardInfo.cardBallencStat = ack->cardBallencStat;
	equ->crrntCardInfo.cardBallencValue = ntohl(ack->cardBallencValue);

	RETVALUE(ROK);
}

S16 lbRecvAuthAck( EquCfgEntry_s * equ, TranCb_s * tran, CommonAck_s * ack)
{
	if(ack->ackCode != 'A')
	{
		printf("error : ackcode\n");
		RETVALUE(RFAILED);
	}
	RETVALUE(ROK);
}

S16 lbRecvFinishFillAck( EquCfgEntry_s * equ, TranCb_s * tran, CommonAck_s * ack)
{
	if(ack->ackCode != 'A')
	{
		printf("error : ackcode\n");
		RETVALUE(RFAILED);
	}
	RETVALUE(ROK);
}

S16 lbRecvCloseDuringAck( EquCfgEntry_s * equ, TranCb_s * tran, CommonAck_s * ack)
{

	if(ack->ackCode != 'A')
	{
		printf("error : ackcode\n");
		RETVALUE(RFAILED);
	}
	equ->duringVolume = 0;

	RETVALUE(ROK);
}

S16 lbRecvGetCrrntPriceAck(EquCfgEntry_s * equ, TranCb_s * tran,  ReadCrrntPriceAck_s * ack)
{
	if(ack->ackCode != 'A')
	{
		equ->cmdProcErrCode |= 0x01;
		printf("error : ackcode\n");
		RETVALUE(RFAILED);
	}


	equ->crrntPrice = ack->price;

	RETVALUE(ROK);

}

S16 lbRecvWriteBackupPriceAck( EquCfgEntry_s * equ, TranCb_s * tran, CommonAck_s * ack)
{
	if(ack->ackCode != 'A')
	{
		printf("error : ackcode\n");
		RETVALUE(RFAILED);
	}
	RETVALUE(ROK);
}


S16 lbRecvReadOilTypeAck(EquCfgEntry_s * equ, TranCb_s * tran, ReadOilTypeAck_s * ack)
{

	if(ack->ackCode != 'A')
	{
		printf("error : ackcode\n");
		RETVALUE(RFAILED);
	}
	equ->readOilType = ack->oilType;

	RETVALUE(ROK);
}

S16 lbRecvWriteOilTypeAck( EquCfgEntry_s * equ, TranCb_s * tran, CommonAck_s * ack)
{
	if(ack->ackCode != 'A' && ack->ackCode != 'W')
	{
		printf("error : ackcode\n");
		RETVALUE(RFAILED);
	}
	RETVALUE(ROK);
}



S16 lbRecvSpecCodeAck(EquCfgEntry_s * equ, TranCb_s * tran, CommonAck_s * ack, CmdMsg_s * cmdNode)
{
	if(ack->ackCode == 'W')
	{
		cmdNode->stat = HAVE_ACK_W;
		RETVALUE(RFAILED);
	}
	else if(ack->ackCode == 'E')
	{
		equ->cmdProcErrCode |= 0x01;
	}
	else if(ack->ackCode != 'A')
	{
		RETVALUE(RFAILED);
	}
	RETVALUE(ROK);
}

S16 lbRecvWriteGreyAck(EquCfgEntry_s * equ, TranCb_s * tran, CommonAck_s * ack, CmdMsg_s * cmdNode)
{
	if(ack->ackCode == 'W')
	{
		cmdNode->stat = HAVE_ACK_W;
		RETVALUE(RFAILED);
	}
	else if(ack->ackCode == 'E')
	{
		equ->cmdProcErrCode |= 0x01;
	}
	else if(ack->ackCode != 'A')
	{
		RETVALUE(RFAILED);
	}
	RETVALUE(ROK);
}

S16 lbRecvSetTimeAck(EquCfgEntry_s * equ, TranCb_s * tran, CommonAck_s * ack, CmdMsg_s * cmdNode)
{
	if(ack->ackCode == 'W')
	{
		cmdNode->stat = HAVE_ACK_W;
		RETVALUE(RFAILED);
	}
	else if(ack->ackCode == 'E')
	{
		equ->cmdProcErrCode |= 0x01;
	}
	else if(ack->ackCode != 'A')
	{
		RETVALUE(RFAILED);
	}
	RETVALUE(ROK);
}

S16 lbRecvSetNetModeAck(EquCfgEntry_s * equ, TranCb_s * tran, CommonAck_s * ack, CmdMsg_s * cmdNode)
{
	if(ack->ackCode == 'W')
	{
		cmdNode->stat = HAVE_ACK_W;
		RETVALUE(RFAILED);
	}
	else if(ack->ackCode == 'E')
	{
		equ->cmdProcErrCode |= 0x01;
	}
	else if(ack->ackCode != 'A')
	{
		RETVALUE(RFAILED);
	}
	RETVALUE(ROK);
}

S16 lbRecvGetRecAck(EquCfgEntry_s * equ, TranCb_s * tran, GetRecAck_s * ack, CmdMsg_s * cmdNode)
{
	RxCmdEntry_s * entry;

	if(ack->ackCode == 'W')
	{
		cmdNode->stat = HAVE_ACK_W;
		RETVALUE(RFAILED);
	}
	else if(ack->ackCode == 'E')
	{
		equ->cmdProcErrCode |= 0x01;
	}
	else if(ack->ackCode != 'A')
	{
		RETVALUE(RFAILED);
	}

	memcpy(&equ->record, &ack->rec, sizeof(Record_s));

	LBGETCMDENTRY(0, IND_DIR, entry);
	LBGETTRAN(entry, equ, tran);
	lbIndRecMsg(equ, tran);

	LBGETCMDENTRY(0, CMD_DIR, entry);
	LBGETTRAN(entry, equ, tran);
	lbBuildCfm(equ, tran, IND_REC_RQST, NULLP);





	RETVALUE(ROK);
}

S16 lbRecvGetGreyAck(EquCfgEntry_s * equ, TranCb_s * tran, GetGreyAck_s * ack, CmdMsg_s * cmdNode)
{
	CmHashListCp * hash;
	GreyRecordEnt_s * ent;
	RxCmdEntry_s * entry;
	EquCfgEntry_s * blastEqu;

	S16 seq = 0;
	
	if(ack->ackCode == 'W')
	{
		cmdNode->stat = HAVE_ACK_W;
		RETVALUE(RFAILED);
	}
	else if(ack->ackCode == 'E')
	{
		equ->cmdProcErrCode |= 0x01;
	}
	else if(ack->ackCode != 'A')
	{
		RETVALUE(RFAILED);
	}

	if(cmdNode->action == 1)
	{

		if(cmLListLen(&rxCb.pEquCfgList) < 2)
		{
			RETVALUE(ROK);
		}

		blastEqu = (EquCfgEntry_s *)cmLListFirst(&rxCb.pEquCfgList);

		LBGETCMDENTRY(0, CMD_DIR, entry);
		while(blastEqu != NULLP)
		{
			if(blastEqu == equ)
			{
				blastEqu = (EquCfgEntry_s *)cmLListNext(&rxCb.pEquCfgList);
				continue;
			}
			memcpy(&blastEqu->grey, &ack->record, 28);
			LBGETTRAN(entry, blastEqu, tran);

			lbBuildWriteGreyCmd(blastEqu, tran);
			blastEqu = (EquCfgEntry_s *)cmLListNext(&rxCb.pEquCfgList);
		}
		LBGETCMDENTRY(0, CMD_DIR, entry);
		LBGETTRAN(entry, equ, tran);
		lbBuildCfm(equ,tran , LOAD_GREY_RQST, NULLP);
	}
	else if(cmdNode->action == 2)
	{
		switch (ack->record.mark)
		{
		case 0x01:
			hash = &rxCb.GreyListProteroHl;
			break;

		case 0x02:
			hash = &rxCb.GreyListIBankHl;
			break;

		case 0x03:
			hash = &rxCb.GreyListPoneyHl;
			break;
		}

		while(ROK == cmHashListFind(hash, ack->record.asn, 10, seq, (PTR *)&ent))
		{
			if(memcmp(ent->record.time, ack->record.time, 7) == 0)
			{
				LBGETCMDENTRY(0, CMD_DIR, entry);
				LBGETTRAN(entry, equ, tran);
				lbBuildReleaseGreyCmd(equ,tran , (Data *)&ent->record);

				RETVALUE(ROK);;
			}
			seq++;
		}
		LBGETCMDENTRY(0, CMD_DIR, entry);
		LBGETTRAN(entry, equ, tran);
		lbBuildCfm(equ,tran , REL_GREY_RQST, NULLP);

	}




	RETVALUE(ROK);
}

S16 lbRecvBlkListAck(EquCfgEntry_s * equ, TranCb_s * tran, CommonAck_s * ack, CmdMsg_s * cmdNode)
{
	if(ack->ackCode == 'W')
	{
		cmdNode->stat = HAVE_ACK_W;
		RETVALUE(RFAILED);
	}
	else if(ack->ackCode == 'E')
	{
		equ->cmdProcErrCode |= 0x01;
	}
	else if(ack->ackCode != 'A')
	{
		RETVALUE(RFAILED);
	}
	RETVALUE(ROK);
}

S16 lbRecvSendGreyAck(EquCfgEntry_s * equ, TranCb_s * tran, CommonAck_s * ack, CmdMsg_s * cmdNode)
{
	if(ack->ackCode == 'W')
	{
		cmdNode->stat = HAVE_ACK_W;
		RETVALUE(RFAILED);
	}
	else if(ack->ackCode == 'E')
	{
		equ->cmdProcErrCode |= 0x01;
	}
	else if(ack->ackCode != 'A')
	{
		RETVALUE(RFAILED);
	}
	RETVALUE(ROK);
}


S16 lbRecvSysCfgAck(EquCfgEntry_s * equ, TranCb_s * tran, CommonAck_s * ack, CmdMsg_s * cmdNode)
{
	if(ack->ackCode == 'W')
	{
		cmdNode->stat = HAVE_ACK_W;
		RETVALUE(RFAILED);
	}
	else if(ack->ackCode == 'E')
	{
		equ->cmdProcErrCode |= 0x01;
	}
	else if(ack->ackCode != 'A')
	{
		RETVALUE(RFAILED);
	}
	RETVALUE(ROK);
}





S16 lbRecvGetHistroyAck(EquCfgEntry_s * equ, TranCb_s * tran, GetHistoryAck_s * ack, CmdMsg_s * cmdNode)
{
	HistroyEntry_s * hisEntry;
	MsgLen idx;

	if(ack->ackCode == 'W')
	{
		cmdNode->stat = HAVE_ACK_W;
	}
	else if(ack->ackCode == 'E')
	{
		equ->cmdProcErrCode |= 0x01;
		lbCmDestroyCmdNode(cmdNode);
	}
	else
	{
		if(ack->stat == 0x00) /* null record */
		{
			lbCmDestroyCmdNode(cmdNode);
		}
		else if (ack->stat == 0x01) /* please continue */
		{
			if (ROK != SGetSBuf(0, 0, (Data **)&hisEntry, sizeof(HistroyEntry_s )))
			{
				RXLOGERROR(0, 0, 0, "ERROR");
				RETVALUE(RFAILED);
			}

			memcpy(&hisEntry->record, &ack->record, sizeof(Record_s));

			cmLListAdd2Tail(&equ->histroy, (CmLList *)hisEntry);

			cmdNode->stat = RDY_SEND;
			cmdNode->timer = 1;
			cmdNode->retry = CMD_RETRY_TIMES;
			cmdNode->loadTimer = CMD_RETRY_TIMEOUT;

			FIELD_INDEX(MsgB_s, val, idx);

			SRepMsg(0x03, cmdNode->msg, idx);

		}
		else if(ack->stat == 0x02) /* complete */
		{
			lbCmDestroyCmdNode(cmdNode);
		}
	}
	RETVALUE(ROK);
}


S16 lbRecvCmdCfmAck( EquCfgEntry_s * equ, TranCb_s * tran, CommonAck_s * ack, CmdMsg_s * cmdNode)
{
	if(ack->ackCode == 'W')
	{
		rxLog("WROKING");
		cmdNode->stat = HAVE_ACK_W;
		RETVALUE(RFAILED);
	}
	else if(ack->ackCode == 'E')
	{
		rxLog("error: cfm cmd error");
//		equ->cmdProcErrCode |= 0x01;
	}
	else if(ack->ackCode != 'A')
	{
		RETVALUE(RFAILED);
	}
	RETVALUE(ROK);
}




/******************* modify histroy list *******************
001. create at: 2002-7-1 16:31:29 by Shangyaohui

****************** modify histroy list end ****************/


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠色狠狠色综合系列| 国产精品久久影院| 欧美色综合久久| 欧美三级日韩在线| 4438x成人网最大色成网站| 欧美精品精品一区| 日韩欧美你懂的| 亚洲视频综合在线| 亚洲国产视频直播| 麻豆精品在线看| 97国产精品videossex| 欧美日韩国产经典色站一区二区三区| 一区二区高清在线| 伊人一区二区三区| 欧美一级片免费看| gogo大胆日本视频一区| 亚洲成a人片综合在线| 国产精品久久99| 中文字幕亚洲不卡| 亚洲三级在线播放| 亚洲国产裸拍裸体视频在线观看乱了 | 美日韩一级片在线观看| 99国产一区二区三精品乱码| 91浏览器在线视频| 精品国内片67194| 亚洲成人中文在线| 成人美女在线视频| 精品国产乱码久久久久久1区2区 | 亚洲精品在线网站| 亚洲在线视频免费观看| 琪琪一区二区三区| 欧美自拍偷拍一区| 最近日韩中文字幕| 国产一区二区在线看| 在线免费一区三区| 国产精品乱码人人做人人爱| 麻豆freexxxx性91精品| 欧美亚男人的天堂| 成人欧美一区二区三区| 懂色av一区二区三区免费观看| 91精品免费在线| 亚洲综合久久av| 7799精品视频| 日韩vs国产vs欧美| 日韩欧美的一区二区| 韩国女主播一区二区三区| 5858s免费视频成人| 日本不卡123| 国产欧美日韩久久| 成人av中文字幕| 亚洲一区在线看| 日韩欧美中文字幕制服| 午夜在线成人av| 日韩亚洲电影在线| 国产精品99久| 一二三区精品视频| 精品国产乱码久久久久久免费| 国产伦精品一区二区三区在线观看 | 欧美日韩性生活| 免费成人av在线播放| 欧美精品一区二区高清在线观看| 国产传媒欧美日韩成人| 一区二区三区视频在线观看| 91精品国产高清一区二区三区蜜臀| 美国十次综合导航| 亚洲精选视频在线| 久久婷婷色综合| 在线亚洲人成电影网站色www| 亚洲一卡二卡三卡四卡无卡久久| 91麻豆精品国产自产在线| 不卡的av网站| 蜜桃一区二区三区四区| 欧美男女性生活在线直播观看| 久久精品国产一区二区三| 婷婷国产v国产偷v亚洲高清| 国产精品不卡在线| 亚洲一区在线播放| 强制捆绑调教一区二区| 国产一区二区三区久久悠悠色av| 韩国一区二区在线观看| 成人av在线播放网址| 欧美无砖砖区免费| 日韩欧美中文字幕一区| 国产无一区二区| 无码av免费一区二区三区试看 | 久久午夜国产精品| 成人欧美一区二区三区在线播放| 亚洲bt欧美bt精品777| 韩国视频一区二区| 欧美午夜一区二区| 久久日一线二线三线suv| 亚洲综合视频在线观看| 国产乱子轮精品视频| 91成人在线精品| 2020国产精品自拍| 亚洲午夜视频在线| 波多野结衣在线aⅴ中文字幕不卡| 欧美三级电影网站| 国产精品久久免费看| 久久99热国产| 日韩欧美国产三级| 成人免费一区二区三区视频| 免费一级欧美片在线观看| 成人理论电影网| 欧美日韩电影一区| 国产亚洲自拍一区| 夜夜揉揉日日人人青青一国产精品| 日韩av不卡一区二区| k8久久久一区二区三区| 91.com在线观看| 亚洲欧洲色图综合| 国产999精品久久| 日韩一级视频免费观看在线| 一区二区免费在线播放| 国产成人免费在线观看| 国产三级三级三级精品8ⅰ区| 日韩在线一区二区| 久久精品夜夜夜夜久久| 午夜影院久久久| 欧美老肥妇做.爰bbww视频| 一区二区三区在线播放| 日本丶国产丶欧美色综合| 亚洲欧美日韩国产综合| 成人性生交大片免费看在线播放| 精品国产免费一区二区三区四区| 亚洲mv在线观看| 欧美一区二区三区思思人| 奇米888四色在线精品| 欧美高清视频在线高清观看mv色露露十八| 亚洲自拍偷拍麻豆| 欧美三片在线视频观看| 日韩av在线免费观看不卡| 欧美成人猛片aaaaaaa| 国产精品一区二区三区网站| 欧美大度的电影原声| 国产久卡久卡久卡久卡视频精品| 亚洲国产精品ⅴa在线观看| 97久久超碰国产精品| 欧美高清一级片在线观看| 一本到不卡免费一区二区| 国产一区二区免费看| 亚洲成人动漫一区| 亚洲精品免费看| 亚洲欧美偷拍另类a∨色屁股| 久久综合成人精品亚洲另类欧美 | 欧美视频日韩视频| 天堂午夜影视日韩欧美一区二区| 久久亚洲综合色一区二区三区| 国产不卡免费视频| 日韩经典一区二区| 中文文精品字幕一区二区| 日韩亚洲欧美一区| 免费高清不卡av| 欧美日韩一区在线| 色94色欧美sute亚洲13| 久久精品国产免费| 日韩视频在线永久播放| 欧美日韩在线播放三区| 欧美高清精品3d| 欧美一区二区精品| 精品国产91乱码一区二区三区 | 日韩成人免费看| 麻豆精品新av中文字幕| 久久精品免费观看| 成人欧美一区二区三区黑人麻豆 | 亚洲九九爱视频| 91啪亚洲精品| 蜜桃视频在线一区| 国产女人水真多18毛片18精品视频 | 精品一区二区三区的国产在线播放| 日韩视频一区二区三区在线播放| 美女任你摸久久| 国产精品无码永久免费888| 色狠狠av一区二区三区| 午夜精品福利一区二区三区蜜桃| 日韩一级免费观看| 99久免费精品视频在线观看| 婷婷开心激情综合| 中文字幕欧美激情一区| av电影在线观看一区| 蜜臀国产一区二区三区在线播放| 国产校园另类小说区| 9191久久久久久久久久久| 国产剧情一区二区| 韩国成人精品a∨在线观看| 成人欧美一区二区三区| 亚洲免费成人av| 亚洲成在线观看| 久久国产婷婷国产香蕉| 亚洲精品中文在线观看| 亚洲伦理在线精品| 日韩精品福利网| 亚洲国产精品99久久久久久久久 | 欧美大片日本大片免费观看| 成人av网在线| 精品国产99国产精品| 国产真实精品久久二三区| 欧美理论片在线| 精品99一区二区| 综合电影一区二区三区 |