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

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

?? iap.c

?? 本程序為ST公司開發(fā)的源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
/************************************************** * * iAP.c * * CVS ID:   $Id: iAP.c,v 1.9 2007/11/09 11:20:45 longauer Exp $ * Author:   Leos Longauer [LL] - STM * Date:     $Date: 2007/11/09 11:20:45 $ * Revision: $Revision: 1.9 $ *  * Description: *  *   source code: iPod Accessory Protocol layer * *************************************************** *  * COPYRIGHT (C) ST Microelectronics  2005 *            All Rights Reserved * *************************************************** * * STM CVS Log: * * $Log: iAP.c,v $ * Revision 1.9  2007/11/09 11:20:45  longauer * long ipod packets/telegrams transmission is supported + variables/functions movement * * Revision 1.8  2007/11/07 11:57:06  trubac * fixes for message tx and rx * * Revision 1.7  2007/11/06 15:23:11  trubac * added ipod message handling for virtual navigation * * Revision 1.6  2007/10/18 10:47:42  longauer * handle authentication and automatically switches to the extended mode * * Revision 1.5  2007/09/20 21:35:52  longauer * virtual iPod authentication is working * * Revision 1.4  2007/09/04 16:54:27  longauer * coprocessor data processing; IAP_ProcessFsm() established; * * Revision 1.3  2007/09/03 13:25:19  longauer * Ipod Rx Archive; files affected: ACP.h,  iAP.*, player.c, gendef.h * * Revision 1.2  2007/08/10 12:33:29  longauer * IPOD_AP compilation switch enables future iAP * * Revision 1.1  2007/07/09 10:45:08  longauer * first commit * * ***************************************************/#include "configuration.h"#include "debug.h"#include "gendef.h"#if (0 != IPOD_AP)#include "hwreg.h"#include "osal.h"#ifdef _USB_DEBUG#include "utility.h" /* GPIO */#endif /*_USB_DEBUG*/#include "controller.h"#include "usb.h"#include "ACP.h"#include "iAP.h"//#include "utility.h"	//dbg/*************************** DEBUGGING ****************************/#ifdef _IAP_DEBUG#endif /*_IAP_DEBUG*//**************************** GLOBALS *****************************/tIap gIap;uint8 gIapArchiveBuffer[C_IAP_ARCHIVE_BUFFER_SIZE];uint8 gIapCmdBuffer[C_IAP_BUFFER_SIZE];uint8 gIapTxBuffer[C_IAP_BUFFER_SIZE];#if 0 //moved to ipodvirt.ct_iap_msg IPod_Message;t_iap_msg *pIPod_Message = NULL;uint8* pIPodMessageData;#endif#define M_IAP_GET_CMD_BUFFER_BASE() gIapCmdBuffer#define M_IAP_GET_TX_BUFFER_BASE() gIapTxBuffer#define M_IAP_TX_BUFFER_FREE_SIZE() (C_IAP_BUFFER_SIZE - gIap.Tx.DataLength)#define M_IAP_IS_TX_BUFFER_FREE_FOR(_req_free_len_) (_req_free_len_<=(C_IAP_BUFFER_SIZE - gIap.Tx.DataLength))/******************************************************************///TBD - following definitions will be moved/restructuralizedtypedef struct{	uint8 AccInfoNAME[16];	uint8 AccInfoMFACTURER[8];	uint8 AccInfoMODEL[16];	uint8 AccInfoSN[8];	uint8 AccInfoMaxPSize;	union	{		uint32 flags;		tIapGenDevLingoesSpoken flag;	} DevLingoesSpoken;} tIapPRESET;tIapPRESET gIapPRESET = {	{"ACCORDO+\0"},	{"ST\0"},	{"STA1052\0"},	{"???\0"},	128,	0x11000000};/****************************** FORWARDS **********************************/void IAP_SetTimer(uint32 time);void IAP_PauseTimer(void);void IAP_ContinueTimer(void);void IAP_Init(tIap* pIap);void IAP_Close(tIap* pIap);t_player_state IAP_ProcessRx(tIapRx* pIapRx);t_player_state IAP_ProcessAcpRx(tIapAcp* pIapAcp);t_player_state IAP_ProcessCmd(tIapReq* pIapReq, uint8 bIsExtMode);t_player_state IAP_ProcessFsm(tIap* pIap);t_player_state IAP_ProcessTxCopro(tIapAcp* pIapAcp, t_acp_cmd Cmd, void* pCmdData);t_player_state IAP_ProcessTxRequest(tIap* pIap, teIapLingoId IapLingoId, tIapCmdId IapCmdId, tIapItem* pCmdItem, void* pCmdData);t_player_state IAP_DecodeRx(tIap* pIap, tIapItem* pRxItem);t_player_state IAP_DecodeRxGen(tIap* pIap, tIapItem* pRxItem);t_player_state IAP_DecodeRxExt(tIap* pIap, tIapItem* pRxItem);t_player_state IAP_DecodeRxAud(tIap* pIap, tIapItem* pRxItem);t_player_state IAP_DecodeAcp(tIap* pIap, tIapAcp* pIapAcp);t_player_state IAP_DecodeCmd(tIap* pIap, tIapReq* pIapReq);/*t_player_state IAP_DecodeCmdGen(tIap* pIap, tIapItem* pCmdItem);t_player_state IAP_DecodeCmdExt(tIap* pIap, tIapItem* pCmdItem);t_player_state IAP_DecodeCmdAud(tIap* pIap, tIapItem* pCmdItem);*///void IAP_Refresh(tIap* pIap);void IAP_ConsolidateArchive(tIapArchive* pArchive, uint8 bReset);t_player_state IAP_CheckArchive(tIapArchive* pArchive);t_bool IAP_IsArchiveEmpty(tIapArchive* pArchive);t_player_state IAP_PushOntoArchive(tIapArchive* pArchive, uint8* pData, uint16 DataLength);t_player_state IAP_PopArchive(tIapArchive* pArchive, tIapItem** ppRxItem);t_player_state IAP_ParsePacket(tIapItem* pRxItem, 	uint8* pPosition, uint16* pPositionOffset, 	uint8** ppPacket, uint16* pPacketSize, 	uint32 AvailableLen);void IAP_PrepareRefreshPacket(tIapTx* pIapTx);t_player_state IAP_PreparePacket(tIapTx* pIapTx, tIapItem* pTxItem);	//LL//uint16 IAP_FillPacketHeaderAndChecksum(uint8* pPacket, uint8 LingoId, uint16 CmdId, /*uint8* pCmdData,*/ //	uint16 RemainDataLen, uint16 ChunkDataLen, teIapItemState ComplState);uint16 IAP_FillPacketHeader(uint8* pPacket, tIapItem* pTxItem, uint8* pCheckSum);uint16 IAP_FillPacketData(uint8* pPacket, tIapItem* pTxItem, uint8* pCheckSum, uint16 MaxLenToCopy);uint16 IAP_OmitPacketData(uint8* pPacket, tIapItem* pTxItem, uint8* pCheckSum, uint16 MaxLenToCopy);uint16 IAP_FillPacketChecksum(uint8* pPacket, tIapItem* pTxItem, uint8 CheckSum);t_player_state IAP_SetCmd(tIap* pIap, tIapItem* pCmd, uint8* pCmdData, uint8 bIsRemoteCmd);/****************************** PATCHING **********************************//****************************** FUNCTIONS **********************************//*** buffer handling ***/void IAP_ConsolidateArchive(tIapArchive* pArchive, uint8 bReset){	uint8 count;	tIapItem* pItem0 = &(pArchive->aIapArchiveItem[0]);	tIapItem* pItem;	if(bReset)	{		pArchive->pPosition = gIapArchiveBuffer;		for(count=0; count<C_IAP_ARCHIVE_MAX_LEN; count++)		{			pItem = &(pArchive->aIapArchiveItem[count]);			pItem->CompleteState = IAP_ARCHIVE_ITEM_FREE;		}	}	else	{		if((pArchive->bIncomplete) && 			(pItem0->CompleteState != IAP_ARCHIVE_ITEM_INCOMPLETE))		{			for(count=1; count<C_IAP_ARCHIVE_MAX_LEN; count++)			{				pItem = &(pArchive->aIapArchiveItem[count]);				if(pItem->CompleteState == IAP_ARCHIVE_ITEM_INCOMPLETE)				{					memcpy(pItem0, pItem, sizeof(tIapItem));					memcpy(gIapArchiveBuffer, pItem->pData, pItem->RemainLen);					pItem0->pData = gIapArchiveBuffer;				}				pItem->CompleteState = IAP_ARCHIVE_ITEM_FREE;			}		}	}}t_player_state IAP_CheckArchive(tIapArchive* pArchive){	t_player_state err = IAP_OK;	uint8 count;	uint32 LengthSum = 0;	uint8 bIncomplete = pArchive->bIncomplete ? 1 : 0;		if((pArchive->Count + bIncomplete > C_IAP_ARCHIVE_MAX_LEN) ||		(pArchive->Count < 0))	{		err = E_IAP;		DBG_REPORT_ERROR(err);	}	for(count=0; count<C_IAP_ARCHIVE_MAX_LEN; count++)	{		if(pArchive->aIapArchiveItem[count].CompleteState != IAP_ARCHIVE_ITEM_FREE)		{			LengthSum += pArchive->aIapArchiveItem[count].RemainLen;		}	}	if ((LengthSum > C_IAP_ARCHIVE_BUFFER_SIZE) /*||		(LengthSum > pArchive->pPosition - gIapArchiveBuffer)*/)	{		err = E_IAP;		DBG_REPORT_ERROR(err);	}	return err;}t_bool IAP_IsArchiveEmpty(tIapArchive* pArchive){	t_player_state err;	err = IAP_CheckArchive(pArchive);	if(M_IS_IAP_ERROR(err))	{		DBG_REPORT_ERROR(err);		DBG_PRINTF("iap: *E - Archive error!\r\n");	}	if((err == IAP_OK) && (pArchive->Count))	{		return FALSE;	}	return TRUE;}t_player_state IAP_PushOntoArchive(tIapArchive* pArchive, uint8* pData, uint16 DataLength){	t_player_state err = IAP_OK;	uint8 Count = 0;	uint8* pPosition;	/* local pointer to the first free buffer position */	uint8* pDataTmp;	/* pointer to the packet remaining data */	uint16 DataLen;	/* pointer to the packet remaining length */	uint16 PositionOffset;	uint32 AvailableLen;	tIapItem* pRxItem;	DataLen = DataLength;	pPosition = pArchive->pPosition;	pDataTmp = pData;	while(DataLen)	{		if(Count == C_IAP_ARCHIVE_MAX_LEN)		{			DBG_PRINTF("iap: *W - data doesn't fit into the Archive");			break;		}		AvailableLen = C_IAP_ARCHIVE_BUFFER_SIZE - (gIapArchiveBuffer-pPosition);//		if(!AvailableLen)//			break;	/* nothing to parse anymore */		pRxItem = &(pArchive->aIapArchiveItem[Count]);		err = IAP_ParsePacket(pRxItem, 			pPosition, &PositionOffset, 			&pDataTmp, &DataLen, 			AvailableLen);		if(M_IS_IAP_ERROR(err))		{			//TBD			DBG_REPORT_ERROR(err);			break;		}		else		{//			if(PositionOffset != 0)//			{				if (err == W_IAP_INCOMPLETE)				{					M_SET_FLAG(pArchive->bIncomplete);					pRxItem->CompleteState = IAP_ARCHIVE_ITEM_INCOMPLETE;					break;				}				else				{					M_CLEAR_FLAG(pArchive->bIncomplete);					pRxItem->CompleteState = IAP_ARCHIVE_ITEM_COMPLETE;					Count++;				}				pPosition += PositionOffset;//			}//			else//			{//				break; /* nothing to parse anymore *///			}		}	}	pArchive->pPosition = pPosition;	pArchive->Count = Count;	return err;}t_player_state IAP_PopArchive(tIapArchive* pArchive, tIapItem** ppRxItem){	uint8 count;	tIapItem* pRxItem;	for(count=0; count<C_IAP_ARCHIVE_MAX_LEN; count++)	{		pRxItem = &(pArchive->aIapArchiveItem[count]);		if( (IAP_ARCHIVE_ITEM_COMPLETE == pRxItem->CompleteState) )		{			*ppRxItem = pRxItem;			pRxItem->CompleteState = IAP_ARCHIVE_ITEM_FREE;	/* clear slot anyway before data provessing */			/* (writing to slot will be available later after command processing) */			pArchive->Count--;			if(pArchive->Count == 0)			{				return IAP_RX_DONE;			}			else				return IAP_OK;		}	}	return E_IAP;	/* no item found */ }t_iap_handler iap_open(void){	tIap* pIap = &gIap;	teIapFsmState* pFsmState = &(pIap->FsmState);	IAP_Init(pIap);	*pFsmState = IAP_FSM_INIT;	return (t_iap_handler)pIap;}void iap_close(t_iap_handler hIap){	tIap* pIap = (tIap*)hIap;	teIapFsmState* pFsmState = &(pIap->FsmState);	IAP_Close(pIap);	*pFsmState = IAP_FSM_DONE;}t_bool iap_is_transition_required(t_iap_handler hIap){	tIap* pIap = (tIap*)hIap;	if( (pIap->InEvent.flags) || (pIap->OutEvent.flags) )		return TRUE;	else		return FALSE;}t_player_state iap_pop_transition_required(t_iap_handler hIap){	tIap* pIap = (tIap*)hIap;	tuIapInEvent* pInEvent = &(pIap->InEvent);	tuIapOutEvent* pOutEvent = &(pIap->OutEvent);	if(M_IS_SET(pInEvent->flag.Rx))	{		M_CLEAR_FLAG(pInEvent->flag.Rx);		return IAP_REP_RX;	}	if(M_IS_SET(pInEvent->flag.TxAck))	{		M_CLEAR_FLAG(pInEvent->flag.TxAck);		return IAP_REP_TX;	}	if(M_IS_SET(pInEvent->flag.RxAcp))	{		M_CLEAR_FLAG(pInEvent->flag.RxAcp);		return IAP_REP_RX_ACP;	}	if(M_IS_SET(pOutEvent->flag.RxAck))	{		M_CLEAR_FLAG(pOutEvent->flag.RxAck);		return IAP_RX_DONE;	}	if(M_IS_SET(pOutEvent->flag.Tx))	{		M_CLEAR_FLAG(pOutEvent->flag.Tx);		return IAP_REQ_TX;	}	if(M_IS_SET(pOutEvent->flag.TxCP))	{		M_CLEAR_FLAG(pOutEvent->flag.TxCP);		return IAP_REQ_ACP;	}	else		return IAP_OK;}//t_player_state IAP_SetCmd(tIap* pIap, tIapCmdCode CmdCode, //	uint16 CmdRemainLen, uint16 CmdChunkLen, uint8* pCmdData, teIapItemState CmdState, //	uint8 bIsRemoteCmd)t_player_state IAP_SetCmd(tIap* pIap, tIapItem* pCmd, uint8* pCmdData, uint8 bIsRemoteCmd){	t_player_state err = IAP_OK;	tIapItem* pIapCmd = &(pIap->Req.Item);	/* to check up user command meaning */	if( (pIap->FsmState != IAP_FSM_DONE) || (!pCmdData) )	{		if( (pCmd->CompleteState == IAP_ARCHIVE_ITEM_FREE) ||			(pCmd->RemainLen < pCmd->ChunkLen) )		{			err = E_IAP_CMD;		}		else if//( ((pIap->FsmState == IAP_FSM_IDLE) || (pIap->FsmState == IAP_FSM_CMD)) && 			( (pIap->FsmState == IAP_FSM_IDLE) && 			(pIap->bReady) && 			(!(pIap->InEvent.flags)) )		{			if(bIsRemoteCmd)			{	/* remote command */				if(pCmd->Code.LingoId == IAP_LINGO_EXT_INTERF)				{					switch(pCmd->Code.CmdId)					{	/* supported remote commands below */					case IAP_EXT_SET_DISP_IMG:					case IAP_EXT_GET_MONO_DISP_IMG_LIM:					case IAP_EXT_GET_COLORDISP_IMG_LIM:						break;					default:						err = E_IAP_CMD;						break;					}				}				else					err = E_IAP_CMD;			}		}		else			err = IAP_BUSY;	}	else		err = E_IAP;	/* to check up the user command basic consistency */	if( !(M_IS_IAP_ERROR(err)) )	{		if( (M_IS_SET(pIap->Req.bSemifinished)) &&			(pCmd->CompleteState == IAP_ARCHIVE_ITEM_START) || (pCmd->CompleteState == IAP_ARCHIVE_ITEM_INCOMPLETE) )		{			err = E_IAP_CMD;		}		else if( (pCmd->CompleteState == IAP_ARCHIVE_ITEM_END) || (pCmd->CompleteState == IAP_ARCHIVE_ITEM_COMPLETE) )		{			if(pCmd->RemainLen != pCmd->ChunkLen)				err = E_IAP_CMD;			else				M_CLEAR_FLAG(pIap->Req.bSemifinished);		}		else		{			M_SET_FLAG(pIap->Req.bSemifinished);		}	}	if(M_IS_IAP_ERROR(err))	{		if(M_IS_SET(pIap->Req.bSemifinished))		{	/* in the case of pending transfer relinquish it and refresh downstream pipe */			M_CLEAR_FLAG(pIap->Req.bSemifinished);			pIap->FsmState = IAP_FSM_REFRESH_TX;			DBG_PRINTF("iap: *W - REFRESHING");		}		DBG_REPORT_ERROR(err);	}	else	{		tuIapInEvent* pInEvent = &(pIap->InEvent);		/* command should be of correct form -> store it for processing */		memcpy(pIapCmd, pCmd, sizeof(t_iap_cmd));		memcpy(pIapCmd->pData, pCmdData, pCmd->ChunkLen);		M_CLEAR_FLAG(pIap->bReady);	/* nobody can set new command request until bit is set */		M_SET_FLAG(pInEvent->flag.Cmd);	}	return err;}/******************************************************************************//* Function:  iap_remote_cmd                                                  *//*                                                                            *//*! \brief    used to send remote iPod command*  \param*  \return*  \remark    only small portion of the extended lingo commands are supported*******************************************************************************/t_player_state iap_set_remote_cmd(t_iap_handler hIap, t_iap_cmd* pRemoteCmd, uint8* pRemoteCmdData)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区成人在线| 日韩午夜精品视频| 亚洲精品一二三| 91污片在线观看| 亚洲无线码一区二区三区| 欧美日韩综合不卡| 久久国产夜色精品鲁鲁99| 精品国产乱码久久久久久1区2区| 久久国产人妖系列| 久久久99精品免费观看不卡| 春色校园综合激情亚洲| 成人欧美一区二区三区黑人麻豆| 日本高清免费不卡视频| 丝袜诱惑亚洲看片| 久久久亚洲午夜电影| 色综合久久久久综合体桃花网| 一区二区三区色| 日韩午夜在线影院| 成人激情图片网| 亚洲激情第一区| 在线播放一区二区三区| 国产精品88888| 亚洲精品中文字幕在线观看| 日韩小视频在线观看专区| 国产99精品国产| 伊人色综合久久天天人手人婷| 日韩欧美区一区二| 成人小视频在线| 五月婷婷欧美视频| 国产欧美日韩三级| 欧美人体做爰大胆视频| 国产综合色在线视频区| 一区二区欧美精品| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 精品国产青草久久久久福利| 成人午夜电影网站| 天天操天天综合网| 国产精品久久久久久亚洲毛片| 欧美日韩免费一区二区三区| 国产福利视频一区二区三区| 亚洲电影视频在线| 国产精品理伦片| 欧美xxxxx裸体时装秀| 91免费观看视频在线| 国产在线精品一区二区不卡了 | 麻豆精品一区二区三区| 亚洲蜜臀av乱码久久精品| 精品久久久久久无| 欧美日韩视频在线观看一区二区三区 | 精品国产一二三区| 欧美婷婷六月丁香综合色| 国产成人精品综合在线观看| 日韩av一二三| 一区二区三区蜜桃| 中文子幕无线码一区tr| 精品国产亚洲一区二区三区在线观看 | 亚洲美女少妇撒尿| 国产欧美日韩激情| 精品国产伦一区二区三区观看方式 | 国产午夜亚洲精品理论片色戒| 欧美精选一区二区| 91久久精品一区二区三| 波多野结衣91| 国产精品一区二区久久精品爱涩 | 亚洲图片激情小说| 中文字幕一区av| 中文字幕乱码亚洲精品一区| 久久亚洲精品小早川怜子| 日韩欧美二区三区| 日韩欧美一区二区在线视频| 欧美系列一区二区| 欧美日韩不卡视频| 欧美区一区二区三区| 欧美三级日韩在线| 欧美日免费三级在线| 欧美体内she精高潮| 在线观看视频91| 欧洲精品在线观看| 欧美专区亚洲专区| 欧美日韩一区国产| 欧美精品xxxxbbbb| 欧美一区二区三区婷婷月色| 91精品午夜视频| 日韩欧美激情一区| 久久综合中文字幕| 久久奇米777| 国产精品沙发午睡系列990531| 国产精品福利一区二区| 中文字幕中文在线不卡住| 毛片av一区二区三区| 男女激情视频一区| 九九九久久久精品| 国产成人精品影院| 一本色道久久综合狠狠躁的推荐 | 欧美色男人天堂| 欧美日韩激情一区二区三区| 欧美日韩高清一区二区不卡| 欧美一区日韩一区| 国产日韩欧美电影| **欧美大码日韩| 五月激情六月综合| 国产一区免费电影| 99久久久精品| 欧美精品一二三区| 精品日韩99亚洲| 中文字幕在线不卡一区二区三区| 国产精品福利一区二区| 亚洲电影第三页| 国产一区二区影院| 91免费在线播放| 91精品视频网| 国产精品色在线| 亚洲国产精品精华液网站 | 国产一区二三区| 97se亚洲国产综合自在线不卡| 欧美日韩美少妇| 久久精品人人做人人爽人人| 一区二区三国产精华液| 久久激情综合网| 在线看日韩精品电影| 精品乱人伦小说| 亚洲综合区在线| 国产成人aaaa| 91精品国产91热久久久做人人 | 日韩精品一区第一页| 国产aⅴ综合色| 69av一区二区三区| 中文字幕一区二区三区乱码在线| 丝袜亚洲精品中文字幕一区| 国产不卡一区视频| 91精品国产福利| 一区二区三区国产精华| 国产毛片精品视频| 91精品视频网| 亚洲一区在线视频观看| 国产69精品久久99不卡| 91精品国产高清一区二区三区 | 免费成人在线影院| 色老汉av一区二区三区| 久久精品人人做人人综合| 日韩av高清在线观看| 91成人免费电影| 国产精品美女视频| 国内精品伊人久久久久av一坑| 欧美日韩一区二区三区免费看| 日本一区二区三区电影| 久久99精品久久只有精品| 欧美日韩一区二区三区在线看 | 欧美无乱码久久久免费午夜一区| 久久色中文字幕| 精品一区二区三区蜜桃| 6080日韩午夜伦伦午夜伦| 一区二区三区蜜桃| 色婷婷激情一区二区三区| 国产欧美va欧美不卡在线| 另类小说图片综合网| 91麻豆精品久久久久蜜臀| 亚洲一区二区三区视频在线 | 亚洲综合丁香婷婷六月香| 成人aaaa免费全部观看| 久久精品日韩一区二区三区| 国产一区在线看| 337p日本欧洲亚洲大胆精品| 另类的小说在线视频另类成人小视频在线 | 国产毛片精品视频| 亚洲精品一区二区三区99| 美女免费视频一区| 日韩欧美亚洲国产精品字幕久久久| 日韩av电影免费观看高清完整版在线观看| 欧美制服丝袜第一页| 一区二区三区国产精华| 欧美视频一区在线| 五月天国产精品| 欧美一区二区三区视频免费 | 亚洲午夜激情网页| 欧美日韩一区 二区 三区 久久精品| 一区二区三区四区乱视频| 欧美日韩不卡在线| 日本在线播放一区二区三区| 精品少妇一区二区三区日产乱码| 极品美女销魂一区二区三区| 国产亚洲制服色| 成人avav在线| 亚洲在线视频网站| 7777精品伊人久久久大香线蕉的 | 国产精品久久久久久户外露出| www.久久久久久久久| 亚洲精品视频在线| 欧美伦理电影网| 国产一区 二区 三区一级| 亚洲国产电影在线观看| 日本精品视频一区二区三区| 午夜不卡av在线| 久久久精品免费网站| va亚洲va日韩不卡在线观看| 亚洲一区在线看| www欧美成人18+| 91丨porny丨最新| 日本亚洲三级在线| 欧美—级在线免费片|