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

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

?? xmodem.c

?? DVB軟件,基于CT216軟件的開發(fā)源程序.
?? C
?? 第 1 頁 / 共 2 頁
字號:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ct_uart.h"		//Marlin 20060523 Add
#include "ct_drammap.h"
//#include "types.h"
#include "xmodem.h"
#include "db_defs.h"
#include "dvb_sys.h"
#include "dvb_flash.h"
#include "dvb_fp.h"			//Marlin 20060523 Add
#include "db_api.h"
#include "mpegcrc32.h"
#include "ap_model.h"

/*****************************xmodem****************************************************/

#if 1	// SLSLSL
#define CT216_AFTA_DRAM_START	0x40050000
#else
#define CT216_AFTA_DRAM_START	0x40400000
#endif

#if 0
	#define xmrecv_debug(p)		printf p
#else
	#define xmrecv_debug(p)
#endif

#if 1
	#define xmrecv_message(p)	printf p
#else
	#define xmrecv_message(p)
#endif

#if 1
	#define xmsend_message(p)	printf p
#else
	#define xmsend_message(p)
#endif

//Marlin 20060523 Add
typedef enum
{
	EN_BURN_UNKNOWN,			/* Unknown image */
	EN_BURN_OVERALL,			/* Burn image from bank 1 (includes database banks). */
	EN_BURN_DATABASE_ONLY,		/* Burn image to database banks only. */
	EN_BURN_DEFAULTDB_ONLY,		/* Burn image to default data bank only. */
	EN_BURN_CWDATABASE_ONLY,	/* Burn image to CW database bank only */
	EN_BURN_LOGO_ONLY,			/* Burn image to logo banks only */
	EN_BURN_WICE_OVERALL,		/* Burn image from bank 0 */
	EN_BURN_CODE_ONLY,			/* Burn image from bank 1 (depends on image length) */
	EN_BURN_CODE_CWDB,			/* Burn image from bank 1 (not includes database banks) and to CW database bank. */
	EN_BURN_DATABASE2_ONLY		/* Burn image to database banks only, but not includes dummy EEPROM data. */
} EN_BURN_TYPE;

/*****************/
/* XMODEM  parameters */
#define XMODEM_MAX_ERRORS	10

/*****************************xmodem***************************************/
static bool8 user_abort(void)
{
	u8	u8Key;

	if(DVB_DetectKey() == FALSE)	return FALSE;

	u8Key = DVB_GetKey();
	return TRUE;
}

u16 readbyte(u32 msec)
{
	for(msec *= 250; msec > 0; msec--)
	{
		if(CT_UART_Data_Ready() == DRV_OK)
			return CT_UART_ReadChar_NoCheck();

		if(user_abort() == TRUE)	return ABORT;
	}

	return TIMEOUT;
}

#ifdef DBTOOL_ENABLE			//edited for DB TOOL  by Carson 2008/01
u16 readbyte_no_abort(u32 msec)
#else
static u16 readbyte_no_abort(u32 msec)
#endif
{
	for(msec *= 6000; msec > 0; msec--)
	{
		if(CT_UART_Data_Ready() == DRV_OK)
			return CT_UART_ReadChar_NoCheck();
	}

	return TIMEOUT;
}

#ifdef DBTOOL_ENABLE			//edited for DB TOOL  by Carson 2008/01
u16 readbuf(u8 *buffer, u16 length, u32 msec)
#else
static u16 readbuf(u8 *buffer, u16 length, u32 msec)
#endif
{
	u16		i, data;

	for(i = 0; i < length; i++)
	{
		data = readbyte_no_abort(msec);

		/* the correct data is 8-bits, over 8-bits means error code. */
		if(data & 0xFF00)	return data;

		buffer[i] = (u8)data;
	}

	return 0;
}

#ifdef DBTOOL_ENABLE			//edited for DB TOOL  by Carson 2008/01
u16 sendbyte(u8 data)
#else
static u16 sendbyte(u8 data)
#endif
{
	CT_UART_PutChar(data);
	return 0;
}

#ifdef DBTOOL_ENABLE			//edited for DB TOOL  by Carson 2008/01
u16 sendbuf(u8 *buffer, u16 length)
#else
static u16 sendbuf(u8 *buffer, u16 length)
#endif
{
	u16		i;
	bool8	b_abort = FALSE;

	/* even user abort the transfer, send one package completely. */
	for(i = 0; i < length; i++)
	{
		sendbyte(buffer[i]);
		if(user_abort() == TRUE)	b_abort = TRUE;
	}

	if(b_abort == TRUE)
	{
		return ABORT;
	}	
	else
	{
		return 0;
	}	
}

#ifdef DBTOOL_ENABLE
u16 xmodem_cal_chksum(bool8 b8XModem1K, u8 *pu8Data, u16 u16Len)

#else
static u16 xmodem_cal_chksum(bool8 b8XModem1K, u8 *pu8Data, u16 u16Len)
#endif
{
	u16		i, chksum;
	u8		j;

	for(i = chksum = 0; i < u16Len; i++)
	{
		chksum = chksum ^ pu8Data[i] << 8;
		for(j = 0; j < 8; j++)
		{
			//re-write		chksum = (chksum & 0x8000) ? (chksum << 1 ^ 0x1021) : (chksum << 1);
			if(chksum&0x8000)
			{
				chksum = (chksum << 1 ^ 0x1021);
			}
			else
			{
				chksum = (chksum << 1);
			}
		}
	}

	if(!b8XModem1K)
	{
		chksum >>= 8;
	}
	return chksum;
}

#ifdef DBTOOL_ENABLE
bool8 xmodem_crc_check(bool8 b8xmodem1k, u8 *pu8data, u16 u16length)
#else
static bool8 xmodem_crc_check(bool8 b8xmodem1k, u8 *pu8data, u16 u16length)
#endif
{
	u16		u16crcchk, u16crcsum;

// re-write >>	u16crcchk = b8xmodem1k ? (pu8data[u16length] << 8) + pu8data[u16length + 1] : pu8data[u16length];
	if(b8xmodem1k == TRUE)
	{
		u16crcchk = (pu8data[u16length] << 8) + pu8data[u16length + 1];
	}
	else
	{
		u16crcchk = pu8data[u16length];
	}

	u16crcsum = xmodem_cal_chksum(b8xmodem1k, pu8data, u16length);

	return(u16crcchk == u16crcsum);
}

static bool8 xmodem_flash_write(u8 u8startbank, u8 *pu8data, u32 u32length, u8 u8MaxBanks)
{
	u8	u8banknum, i;

	u8banknum = u32length / FLASHSRV_BYTE_MODE_BANK_SIZE;
	if(u32length % FLASHSRV_BYTE_MODE_BANK_SIZE)	u8banknum++;
	if(u8banknum > u8MaxBanks)
	{
		xmrecv_debug(("\nThe image length is overflow!!\n"));
		return FALSE;
	}

	xmrecv_debug(("\nTotal flash banks occupied by image: %d\n", u8banknum));

	for(i = 0; i < u8banknum; i++)
	{
		xmrecv_debug(("\nBurning to bank %d ... ", u8startbank + i));
		if(DVB_FlashWriteBank(u8startbank + i, (u32)pu8data) == FALSE)
		{
			xmrecv_debug(("failed\n"));
			return FALSE;
		}

		xmrecv_debug(("done\n"));
		pu8data += FLASHSRV_BYTE_MODE_BANK_SIZE;

		// send the progress command to master STB.
		sendbyte(0x20 + i);
		sendbyte(0x20 + i);
		sendbyte(0x20 + i);
	}

	xmrecv_debug(("\n\nImage file burnning succeed!!\n\n"));
	return TRUE;
}

static EN_BURN_TYPE xmodem_burn_type(u8 *pu8data)
{
	u32		u32temp;

	if(memcmp(pu8data, "CTMODE", 6) == 0)
	{
		if(	((pu8data[6] + pu8data[7]) == 0x6A) &&
			(pu8data[6] == (0x30 + 1)))
			return EN_BURN_OVERALL;
	}
	else if(memcmp(pu8data, "d__B", 4) == 0)
	{
		u32temp = (pu8data[4] << 24) | (pu8data[5] << 16) | (pu8data[6] << 8) | pu8data[7];
		if(u32temp == DVB_DBGetDigest())
			return EN_BURN_DATABASE_ONLY;
	}
	else if(memcmp(pu8data, "default", 7) == 0)
		return EN_BURN_DEFAULTDB_ONLY;
	else if(memcmp(pu8data, "CTcWd__B", 8) == 0)
		return EN_BURN_CWDATABASE_ONLY;
	else if(memcmp(pu8data, "CT__LOgo", 8) == 0)
		return EN_BURN_LOGO_ONLY;
	else if(memcmp(pu8data, "CTK_WICE", 8) == 0)
		return EN_BURN_WICE_OVERALL;
	else if(memcmp(pu8data, DVB_GetImageHeader(), HEADER_LEN) == 0)
		return EN_BURN_CODE_ONLY;
	else if(memcmp(pu8data, "CTCdCwDb", 8) == 0)
		return EN_BURN_CODE_CWDB;
	else if(memcmp(pu8data, "d_B2", 4) == 0)
	{
		u32temp = (pu8data[4] << 24) | (pu8data[5] << 16) | (pu8data[6] << 8) | pu8data[7];
		if(u32temp == DVB_DBGetDigest())
			return EN_BURN_DATABASE2_ONLY;
	}

	return EN_BURN_UNKNOWN;
}

static u8 xmodem_burn_data(EN_BURN_TYPE enBurnType, u8 *pu8data)
{
	u32		u32length, u32crcchk, u32crcsum;
	u32		u32length2;

	u32length = (u32)((pu8data[HEADER_LEN    ] << 24) |
					  (pu8data[HEADER_LEN + 1] << 16) |
					  (pu8data[HEADER_LEN + 2] <<  8) |
					  (pu8data[HEADER_LEN + 3]      ));
	u32crcchk = (u32)((pu8data[HEADER_LEN + u32length    ] << 24) |
					  (pu8data[HEADER_LEN + u32length + 1] << 16) |
					  (pu8data[HEADER_LEN + u32length + 2] <<  8) |
					  (pu8data[HEADER_LEN + u32length + 3]      ));
	u32crcsum = CRC_MPEG32(pu8data, HEADER_LEN + u32length);

	if(u32crcchk != u32crcsum)
	{
		xmrecv_debug(("\n\nImage length=0x%08lX, CRC32[%08lX:%08lX] check failed!!\n\n", u32length, u32crcsum, u32crcchk));
		return 6;
	}

	pu8data   += (HEADER_LEN + 4);
	u32length -= 4;

	switch(enBurnType)
	{
	case EN_BURN_DATABASE2_ONLY:
#ifdef FLASH_EEPROM
		{
		    u8		u8E2pBankID;
		    u32		u32E2pAddress, u32E2pLength;
		    u8		*pu8E2pDramAddress;

		    if(FLASH_EEPROM_Info(&u8E2pBankID, &u32E2pAddress, &u32E2pLength) == TRUE)
		    {
		    	u32E2pAddress += ((u8E2pBankID - DB_START_BANK_ID) << 16);
		    	pu8E2pDramAddress = (u8*)(pu8data + u32E2pAddress);

		    	FLASH_EEPROM_ReadAll(pu8E2pDramAddress);
		    }
		}
#endif
	case EN_BURN_DATABASE_ONLY:
		if(xmodem_flash_write(DVB_DBGetStartBank(), pu8data, u32length, DVB_DBGetBankNum()) != TRUE)
			return 7;
		break;
	case EN_BURN_DEFAULTDB_ONLY:
		if(xmodem_flash_write(DVB_DBGetStartBank()-1, pu8data, u32length, 1) != TRUE)
			return 7;
		break;
	case EN_BURN_CODE_ONLY:
		if(xmodem_flash_write(1, pu8data, u32length, DVB_DBGetStartBank()-1) != TRUE)
			return 7;
		break;
	case EN_BURN_CWDATABASE_ONLY:
		if(xmodem_flash_write(31, pu8data, u32length, 1) != TRUE)
			return 7;
		break;
	case EN_BURN_LOGO_ONLY:
		if(xmodem_flash_write(DVB_DBGetStartBank()-2, pu8data, u32length, 1) != TRUE)
			return 7;
		break;
	case EN_BURN_WICE_OVERALL:
		if(xmodem_flash_write(0, pu8data, u32length, 32) != TRUE)
			return 7;
		break;
	case EN_BURN_OVERALL:
		if(xmodem_flash_write(1, pu8data, u32length, 31) != TRUE)
			return 7;
		break;
	case EN_BURN_CODE_CWDB:	//Update code + database
		u32length2 = (DVB_DBGetStartBank() - 1) << 16;
		if(xmodem_flash_write(1, pu8data, u32length2, DVB_DBGetStartBank() - 1) != TRUE)
			return 7;
		if(u32length > u32length2)
		{
			if(xmodem_flash_write(31, pu8data, u32length-u32length2, 1) != TRUE)
				return 7;
		}
		break;
	default:
		return 7;
	}

	return 0;
}

void XModemGetBoxInfo(u8 *pu8Info)
{
	u8	au8DateTime[15];
	u16	u8Month, u8Day, u16Year, u8Hour, u8Min;
	u8  u8tmp =0;
	u8  u8tmp_1 =0;


	sprintf(au8DateTime, "%s", __DATE__);

    if(memcmp(au8DateTime, "Jan", 3) == 0)	
    {
		u8Month =  1;
    }	
	else if(memcmp(au8DateTime, "Feb", 3) == 0)	
	{
		u8Month =  2;
	}	
	else if(memcmp(au8DateTime, "Mar", 3) == 0)	
	{
		u8Month =  3;
	}	
	else if(memcmp(au8DateTime, "Apr", 3) == 0)	
	{
		u8Month =  4;
	}	
	else if(memcmp(au8DateTime, "May", 3) == 0)
	{
		u8Month =  5;
	}	
	else if(memcmp(au8DateTime, "Jun", 3) == 0)	
	{
		u8Month =  6;
	}	
	else if(memcmp(au8DateTime, "Jul", 3) == 0)	
	{
		u8Month =  7;
	}	
	else if(memcmp(au8DateTime, "Aug", 3) == 0)	
	{
		u8Month =  8;
	}	
	else if(memcmp(au8DateTime, "Sep", 3) == 0)	
	{
		u8Month =  9;
	}	
	else if(memcmp(au8DateTime, "Oct", 3) == 0)	
	{
		u8Month = 10;
	}	
	else if(memcmp(au8DateTime, "Nov", 3) == 0)	
	{
		u8Month = 11;
	}	
	else if(memcmp(au8DateTime, "Dec", 3) == 0)	
	{
		u8Month = 12;
	}	
	else
	{
		u8Month =  1;
	}
	//----------------------------------------------------------------------------------------------------------//

	//re-write >> u8Day = (((au8DateTime[4] < 0x30) || (au8DateTime[4] > 0x39)) ? 0 : au8DateTime[4] - 0x30) * 10
	//				  + (((au8DateTime[5] < 0x30) || (au8DateTime[5] > 0x39)) ? 0 : au8DateTime[5] - 0x30);

	//u8tmp = (((au8DateTime[5] < 0x30) || (au8DateTime[5] > 0x39)) ? 0 : au8DateTime[5] - 0x30);
	if((au8DateTime[5] < 0x30) || (au8DateTime[5] > 0x39))
	{
    	u8tmp = 0;
	}
	else
	{
		u8tmp = au8DateTime[5] - 0x30;
	}


	//u8Day = (((au8DateTime[4] < 0x30) || (au8DateTime[4] > 0x39)) ? 0 : au8DateTime[4] - 0x30) * 10+ u8tmp
	if((au8DateTime[4] < 0x30) || (au8DateTime[4] > 0x39))
	{
    	u8Day = u8tmp;
	}
	else
	{
		u8Day =	 (au8DateTime[4] - 0x30) * 10+ u8tmp;	
	}
   //----------------------------------------------------------------------------------------------------------//
   

	// re-write >> u16Year = (((au8DateTime[ 7] < 0x30) || (au8DateTime[ 7] > 0x39)) ? 0 : au8DateTime[ 7] - 0x30) * 1000
	//		    	+ (((au8DateTime[ 8] < 0x30) || (au8DateTime[ 8] > 0x39)) ? 0 : au8DateTime[ 8] - 0x30) * 100
	//		    	+ (((au8DateTime[ 9] < 0x30) || (au8DateTime[ 9] > 0x39)) ? 0 : au8DateTime[ 9] - 0x30) * 10
	//	    		+ (((au8DateTime[10] < 0x30) || (au8DateTime[10] > 0x39)) ? 0 : au8DateTime[10] - 0x30);

	//u8tmp=(((au8DateTime[10] < 0x30) || (au8DateTime[10] > 0x39)) ? 0 : au8DateTime[10] - 0x30);
	if((au8DateTime[10] < 0x30) || (au8DateTime[10] > 0x39))
	{
    	u8tmp = 0;
	}
	else
	{
    	u8tmp = au8DateTime[10] - 0x30;
	}

	//u8tmp_1 = (((au8DateTime[ 9] < 0x30) || (au8DateTime[ 9] > 0x39)) ? 0 : au8DateTime[ 9] - 0x30) * 10 + u8tmp;
	//(((au8DateTime[ 9] < 0x30) || (au8DateTime[ 9] > 0x39)) ? 0 : au8DateTime[ 9] - 0x30)
	if((au8DateTime[ 9] < 0x30) || (au8DateTime[ 9] > 0x39))
	{
    	u8tmp_1 = u8tmp;
	}
	else
	{
    	u8tmp_1 = ( au8DateTime[ 9] - 0x30)*10 + u8tmp;
	}

	//u8tmp = (((au8DateTime[ 8] < 0x30) || (au8DateTime[ 8] > 0x39)) ? 0 : au8DateTime[ 8] - 0x30) * 100 + u8tmp_1
	//(((au8DateTime[ 8] < 0x30) || (au8DateTime[ 8] > 0x39)) ? 0 : au8DateTime[ 8] - 0x30)
	if((au8DateTime[ 8] < 0x30) || (au8DateTime[ 8] > 0x39))
	{
    	u8tmp = u8tmp_1;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区在线观看| 99亚偷拍自图区亚洲| 日韩欧美中文字幕公布| 日本va欧美va精品发布| 欧美电影精品一区二区| 国产毛片精品视频| 中文字幕亚洲成人| 91国在线观看| 理论电影国产精品| 国产日本一区二区| 91久久奴性调教| 日本在线不卡一区| 国产欧美综合在线观看第十页| 高清免费成人av| 亚洲自拍欧美精品| 日韩欧美一区在线| 国产aⅴ综合色| 一区二区三区日韩精品| 日韩一级黄色片| 成人av中文字幕| 亚洲成人动漫一区| 精品99一区二区三区| 丁香亚洲综合激情啪啪综合| 亚洲自拍偷拍麻豆| 久久众筹精品私拍模特| 91黄视频在线| 国产成人精品免费视频网站| 亚洲猫色日本管| 欧美va天堂va视频va在线| 99久久精品免费看| 蜜臀久久99精品久久久画质超高清 | 91精品国产aⅴ一区二区| 欧美日本视频在线| 激情久久久久久久久久久久久久久久 | 国产精品456| 亚洲第一搞黄网站| 国产精品视频一区二区三区不卡| 欧美人与性动xxxx| 成人黄色777网| 麻豆久久久久久久| 亚洲黄色性网站| 国产欧美一区二区在线| 欧美高清性hdvideosex| jlzzjlzz亚洲日本少妇| 久久99精品久久只有精品| 一级精品视频在线观看宜春院 | 欧美精品v日韩精品v韩国精品v| 国产成人精品一区二区三区四区| 午夜精品久久久久久| 国产精品免费久久| 精品国产乱码久久久久久夜甘婷婷 | 91欧美一区二区| 国产麻豆精品theporn| 亚洲成人一二三| 亚洲人快播电影网| 欧美激情综合五月色丁香小说| 91麻豆精品国产91久久久久久| 在线亚洲免费视频| 99精品久久只有精品| 国产精品一区二区在线看| 免费一区二区视频| 婷婷久久综合九色国产成人 | 国产亚洲欧美日韩日本| 91精品婷婷国产综合久久性色| 色哟哟亚洲精品| av电影一区二区| 国产成人精品免费看| 国产在线看一区| 久久精工是国产品牌吗| 男人操女人的视频在线观看欧美| 亚洲一区二区精品视频| 一区二区三区在线播| 亚洲毛片av在线| 一区二区三区不卡视频 | 欧美精品精品一区| 欧美日韩一区久久| 欧美日韩在线一区二区| 欧美性淫爽ww久久久久无| 欧美又粗又大又爽| 欧美自拍偷拍一区| 欧美日韩免费观看一区二区三区| 91久久久免费一区二区| 欧美在线观看视频在线| 欧美日韩电影一区| 欧美一区二区啪啪| 欧美大白屁股肥臀xxxxxx| 欧美精品一区二区三区蜜桃| 欧美tk—视频vk| 国产欧美日韩在线看| 国产精品欧美久久久久一区二区| 国产精品伦一区| 樱花影视一区二区| 午夜免费久久看| 久久99精品国产.久久久久久| 久久99精品国产麻豆婷婷洗澡| 国产激情偷乱视频一区二区三区| 国产99久久久国产精品潘金| 99久久伊人网影院| 欧美午夜精品久久久久久孕妇 | 欧美午夜精品久久久| 欧美精品国产精品| 久久久久久久久久久电影| 国产精品免费看片| 亚洲超碰精品一区二区| 久久99久久精品欧美| 成人丝袜视频网| 欧美日韩一区二区三区在线看| 日韩一区二区免费高清| 国产欧美1区2区3区| 一区二区三区在线视频观看| 免费观看久久久4p| 成人的网站免费观看| 欧美日韩激情在线| 久久精品亚洲国产奇米99| 玉米视频成人免费看| 精品在线视频一区| 97精品超碰一区二区三区| 欧美精品一卡二卡| 国产丝袜在线精品| 午夜av区久久| 成人开心网精品视频| 在线观看91av| 亚洲欧洲国产专区| 麻豆精品新av中文字幕| 91在线视频18| 26uuu久久天堂性欧美| 一区二区三区免费观看| 国产剧情一区二区| 欧美日韩在线综合| **网站欧美大片在线观看| 麻豆成人91精品二区三区| 91社区在线播放| 久久亚洲精品小早川怜子| 亚洲一区精品在线| 波多野结衣一区二区三区| 日韩欧美一级二级三级| 亚洲一级电影视频| av在线综合网| 久久久午夜精品理论片中文字幕| 天天综合日日夜夜精品| 色综合天天综合色综合av | 中文字幕av一区 二区| 麻豆国产精品官网| 欧美区视频在线观看| 亚洲人成在线播放网站岛国| 岛国一区二区在线观看| 精品国产乱码久久久久久久| 午夜免费欧美电影| 在线免费观看日韩欧美| 亚洲丝袜另类动漫二区| 国产成人三级在线观看| 精品福利一区二区三区| 青青草97国产精品免费观看无弹窗版| 一本大道av伊人久久综合| 中文字幕不卡三区| 春色校园综合激情亚洲| 久久久亚洲国产美女国产盗摄| 蜜臀精品久久久久久蜜臀| 欧美一区二区久久久| 天天射综合影视| 9191久久久久久久久久久| 一区二区三区四区国产精品| 91麻豆国产福利在线观看| 亚洲欧洲日本在线| 99久久国产综合精品麻豆| 亚洲欧洲三级电影| 不卡的av网站| 亚洲欧洲av在线| 色综合中文字幕| 一级做a爱片久久| 欧美日韩国产一二三| 图片区小说区国产精品视频| 欧美日韩国产系列| 蜜臀久久久久久久| 精品久久久久久综合日本欧美| 久久99国产精品麻豆| 久久人人97超碰com| 国产成人福利片| 国产精品丝袜91| 91久久精品国产91性色tv | 婷婷成人综合网| 日韩限制级电影在线观看| 狠狠v欧美v日韩v亚洲ⅴ| 国产欧美一区二区在线观看| 99久久免费视频.com| 一区二区三区**美女毛片| 欧美高清视频不卡网| 美腿丝袜亚洲色图| 日本一区二区成人在线| 色一情一伦一子一伦一区| 亚洲国产日韩一级| 日韩免费电影一区| 春色校园综合激情亚洲| 一区二区三区欧美日韩| 日韩久久免费av| av激情亚洲男人天堂| 视频一区中文字幕| 国产欧美日韩不卡免费| 在线免费观看不卡av| 久久激五月天综合精品|