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

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

?? mxd_sdk_api.c

?? MXD_SDK_Ax.x.xxx :MXD1320 軟件開發包源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
	PDEVICE_PROPERTY_S psDeviceProperty;
	
	psDeviceProperty = (PDEVICE_PROPERTY_S)hDevice;
	for(i=0;i<5;i++)
	{
		DDS_ReadReg( hDevice,  DTMB_TDP_PWM_THD_REG, &agcVal );
		agcSum += agcVal;
	}
	agcVal = (MXD_U8)(agcSum/i)*2;
	if(agcVal>=100)
	{
		agcVal = 95;
	}

	DDS_ReadReg( hDevice,  DTMB_TDP_IQREF_REG, &regVal );
	DDS_ReadReg( hDevice,  DTMB_TDP_PWM_CLK_STEP_REG, &stepVal );
	DDS_ReadReg( hDevice,  DTMB_FEC_ITER_REAL_NUM_REG, &iterNum );
	snrVal = (agcVal*100*64)/(regVal*stepVal)-100;
	if(snrVal<0)
	{
		snrVal = - snrVal;
	}

	DDS_ReadReg( hDevice,  DTMB_TDP_TPS_REG, &regVal );
	regVal &= 0x0f;

	if((snrVal<=5)&&(iterNum>iterRefNum[regVal]))
	{
		snrVal = 5;
	}
	if((snrVal>40)&&(iterNum<3))
	{
		snrVal = 40;
	}
	snrVal = snrVal*2;
	if(snrVal<10)
	{
		snrVal = 10;
	}
	if(snrVal>90)
	{
		snrVal = 90;
	}
	/*Add judge condition here */
	psDeviceProperty->m_LastErrStatus = MXD_RTN_OK;
    OAL_DebugPrint(1, "DTMB_GetSnr:: the snr val:0x%x\n", snrVal);
	return (MXD_U8)snrVal;
}/* end of DTMB_GetSnr( ) */ 	
 
 /*!
  * Query the RSSI of DTMB signal after AGC.
  *
  * \param hDevice:		[in] Device handle
  *
  * \return RSSI value.
  *
  * \remark null
  *
  */
MXD_U32 MXD_API DTMB_GetRssi( IN HMXDDEV hDevice )
{

	MXD_U32 rssiVal;
	MXD_U8 regVal;
	PDEVICE_PROPERTY_S psDeviceProperty;
	
	psDeviceProperty = (PDEVICE_PROPERTY_S)hDevice;

	DDS_WriteReg( hDevice,  DTMB_MISC_READ_FREEZE_REG, MISC_RSSI_READ_FREEZE_SET);
	
	DDS_ReadReg( hDevice,  DTMB_TDP_RSSI_REG, &regVal );

	rssiVal = regVal*4;
	psDeviceProperty->m_LastErrStatus = MXD_RTN_OK;

	return rssiVal;
}/* end of DTMB_GetRssi( ) */ 

 /*!
  * Query the LDPC BLER of DTMB signal.
  *
  * \param hDevice:		[in] Device handle
  *
  * \return BLER of LDPC in DTMB mode.
  *
  * \remark : The return value is 0:4096;
  *
  */
MXD_U32 MXD_API DTMB_GetBler( IN HMXDDEV hDevice )
{ 
	MXD_U8 fecBlerH,fecBlerL;
	MXD_U32 fecBlerVal;
	PDEVICE_PROPERTY_S psDeviceProperty;
	
	psDeviceProperty = (PDEVICE_PROPERTY_S)hDevice;

	DDS_WriteReg( hDevice,  DTMB_MISC_READ_FREEZE_REG, MISC_BLER_READ_FREEZE_SET );
	DDS_ReadReg( hDevice,  DTMB_FEC_BLER_H_REG, &fecBlerH ); 
	DDS_ReadReg( hDevice,  DTMB_FEC_BLER_L_REG, &fecBlerL ); 

	fecBlerVal =  (MXD_U32)( ( fecBlerH&0x1f)<<8 ) + fecBlerL ;

	psDeviceProperty->m_LastErrStatus = MXD_RTN_OK;
	return fecBlerVal;
}/* end of DTMB_GetBler( ) */  


 /*!
  * Query the DTMB system information.
  *
  * \param hDevice:		[in] Device handle
  * \param psDtmbSystemInfo: [out] pointer to the DTMB system information structure.
  *
  * \return Return code by MXD_RTN_CODE_E enumeration.
  *
  * \remark null
  *
  */
MXD_RTN_CODE_E MXD_API DTMB_GetSystemInfo( 
 					IN HMXDDEV hDevice,
 					OUT DTMB_SYSTEM_INFO_S *psDtmbSystemInfo )
{
	MXD_RTN_CODE_E eRtnCode = MXD_RTN_OK;
	MXD_U8 regVal = 0;
	MXD_U8 interleaveType = 0;
   	MXD_U8 qamldpc = 0;
	MXD_U8 qamType = 0;
	MXD_U8 ldpcCodeRate = 0; 

	DDS_ReadReg( hDevice,  DTMB_TDP_TPS_REG, &regVal );
	/* Decode Interleave type */
	interleaveType = ( regVal&0x3f )>>5;
	if( 0 == interleaveType )
	{
		psDtmbSystemInfo->m_InterleaveType = INTERLEAVE_TYPE_240;/*Type 1: Interleave Width(B = 52), Interleave Depth(M = 240)*/
	}
	else
	{
		psDtmbSystemInfo->m_InterleaveType = INTERLEAVE_TYPE_720;/*Type 2: Interleave Width(B = 52), Interleave Depth(M = 720)*/
	}
    
	/* Decode QAM type and LDPC Code Rate */
	qamldpc = regVal&0x0f;
	switch( qamldpc )
	{
		case 0x0:
		{
			qamType = QAM_TYPE_4NR; /*4QAM-NR*/
			ldpcCodeRate = LDPC_CODE_RATE_0_8; /* LDPC Code Rate  Type 3: 0.8;*/
			break;
		}
		case 0x1:
		{
			qamType = QAM_TYPE_16; /* 16QAM */
			ldpcCodeRate = LDPC_CODE_RATE_0_8;  /* LDPC Code Rate  Type 3: 0.8;*/
			break;
	    }
		case 0x2:
		{
			qamType = QAM_TYPE_4; /* 4QAM ;*/
			ldpcCodeRate = LDPC_CODE_RATE_0_8;/* LDPC Code Rate Type 3: 0.8;*/
			break;
		}
		case 0x4:
		{
			qamType = QAM_TYPE_4; /* 4QAM ;*/
			ldpcCodeRate = LDPC_CODE_RATE_0_4;/* LDPC Code Rate Type 1: 0.4;*/
			break;
		}
		case 0x5:
		{
			qamType = QAM_TYPE_4; /* 4QAM ;*/
			ldpcCodeRate = LDPC_CODE_RATE_0_6; /*LDPC Code Rate Type 2: 0.6;*/
			break;
		}
		case 0x7:
		{
			qamType = QAM_TYPE_16; /* 16QAM ;*/
			ldpcCodeRate = LDPC_CODE_RATE_0_4; /* LDPC Code Rate  Type 1: 0.4; */
			break;
		}
		case 0x8:
		{
			qamType = QAM_TYPE_16; /*16QAM ;*/
			ldpcCodeRate = LDPC_CODE_RATE_0_6; /* LDPC Code Rate Type 2: 0.6;*/
			break;
		}
		case 0xC:
		{
			qamType = QAM_TYPE_32; /* 32QAM */
			ldpcCodeRate = LDPC_CODE_RATE_0_8; /* LDPC Code Rate  Type 3: 0.8;*/
			break;
		}
		case 0xD:
		{
			qamType = QAM_TYPE_64; /* 64QAM ;*/
			ldpcCodeRate = LDPC_CODE_RATE_0_4; /* LDPC Code Rate  Type 1: 0.4;*/
			break;
		}
		case 0xE:
		{
			qamType = QAM_TYPE_64; /* 64QAM ;*/
			ldpcCodeRate = LDPC_CODE_RATE_0_6; /* LDPC Code Rate Type 2: 0.6;*/
			break;
		}
		case 0xF:
		{
			qamType = QAM_TYPE_64; /* 64QAM ;*/
			ldpcCodeRate = LDPC_CODE_RATE_0_8; /* LDPC Code Rate Type 3: 0.8; */
			break;
		}
		default:
		{
			return MXD_RTN_NOT_SUPPORTED;
		}
	}
	psDtmbSystemInfo->m_QamType = qamType;
	psDtmbSystemInfo->m_LdpcCodeRateType = ldpcCodeRate;

	return eRtnCode; 	
}/* end of DTMB_GetSystemInfo( ) */

/*!
  * Get the DTMB service map.
  *
  * \param hDevice:		[in] Device handle
  * \param psDtmbServiceMap: [out] pointer to the DTMB service map structure.
  *
  * \return Return code by MXD_RTN_CODE_E enumeration.
  *
  * \remark null
  *
  */
MXD_RTN_CODE_E MXD_API DTMB_GetServiceMap( 
 					IN HMXDDEV hDevice,
 					OUT DTMB_SERVICE_MAP_S *psDtmbServiceMap )
{
	MXD_RTN_CODE_E eRtnCode = MXD_RTN_OK;
	PDEVICE_PROPERTY_S psDeviceProperty;
	DTMB_SYSTEM_INFO_S sDtmbSystemInfo;
	MXD_U8 regVal;

	psDeviceProperty = (PDEVICE_PROPERTY_S)hDevice;
	
	eRtnCode = DTMB_GetSystemInfo(psDeviceProperty, &sDtmbSystemInfo );
	if( MXD_SUCCESS(eRtnCode) )
	{
		psDtmbServiceMap->m_TpsId = (MXD_U8)(sDtmbSystemInfo.m_QamType<<3) + (MXD_U8)(sDtmbSystemInfo.m_LdpcCodeRateType<<1) + sDtmbSystemInfo.m_InterleaveType;
		psDtmbServiceMap->m_FreqHz = psDeviceProperty->m_FreqHz;

		if( DEV_MODE_DTMB_MC == psDeviceProperty->m_eDevMode )
		{
			psDtmbServiceMap->m_McOrSc = 1;
		}
		else
		{
			psDtmbServiceMap->m_McOrSc = 0;
		}

		DDS_ReadReg( hDevice,  DTMB_TDP_FID_RESULT_REG, &regVal );
		psDeviceProperty->m_PnType = regVal&0x07; /* update pntype to hDevice */
		psDtmbServiceMap->m_PnType = psDeviceProperty->m_PnType;

		psDtmbServiceMap->m_sDtmbSysInfo = sDtmbSystemInfo;

		OAL_DebugPrint(MXD_ULTRA_TRACE," DTMB_GetServiceMap:: DeviceMode: %d, QamType:0x%x,LdpcCodeRate:0x%x,InterleaveType:0x%x....... ! \n",
			psDtmbServiceMap->m_McOrSc,sDtmbSystemInfo.m_QamType,sDtmbSystemInfo.m_LdpcCodeRateType,sDtmbSystemInfo.m_InterleaveType );
	}
	return eRtnCode; 	
}/* end of DTMB_GetServiceMap( ) */


/*!
  * Check TPS ok interrupt..
  *
  * \param hDevice:		[in] Device handle
  * \param milliseconds:[in] Check the status after delay( unit: ms )
  *
  * \return Return code by MXD_RTN_CODE_E enumeration.
  *
  * \remark null
  *
  */
MXD_RTN_CODE_E MXD_API DTMB_IsTpsOk(
				 	IN HMXDDEV hDevice,
 					IN MXD_U32 milliseconds )
{
	MXD_RTN_CODE_E eRtnCode = MXD_RTN_FAIL;
	MXD_U8 regVal = 0;
	MXD_U32 i;

	PDEVICE_PROPERTY_S psDeviceProperty;
	PDEMOD_PROPERTY_S psDemodProperty;
	
	psDeviceProperty = (PDEVICE_PROPERTY_S)hDevice;
	psDemodProperty = &(psDeviceProperty->m_sDemod);

	if( 1 == psDemodProperty->m_TpsStatus )
	{
		return MXD_RTN_OK;
	}

	for( i=0; i<milliseconds; i++)
	{
		OAL_Sleep( 1 );
		DDS_ReadReg(hDevice,  DTMB_TDP_INT_STATUS_REG, &regVal );
			
		DDS_WriteReg( hDevice,  DTMB_TDP_INT_MASK_REG, 0xff );
		if( 0 != regVal )
		{
			if( regVal&0x08 )
			{
				psDemodProperty->m_TpsStatus = 0;
				/* clear tdp tps fail interrupt */
				DDS_WriteRegFields(  
								hDevice, 									
								DTMB_TDP_INT_CLEAR_REG,
								0x3,
								1, 
								0x1 );

				OAL_DebugPrint( MXD_ULTRA_TRACE, "DTMB_IsTpsOk:: FID Failed interrupt! \n" );
				return eRtnCode;					
			}
			if( regVal&0x40 )
			{
				psDemodProperty->m_TpsStatus = 0;
				/* clear tdp tps fail interrupt */
				DDS_WriteRegFields(  
								hDevice, 									
								DTMB_TDP_INT_CLEAR_REG,
								0x6,
								1, 
								0x1 );

				OAL_DebugPrint( MXD_ULTRA_TRACE, "DTMB_IsTpsOk:: CPE Timeout interrupt! \n" );
				return eRtnCode;					
			}
			if( regVal&0x04 )
			{
				psDemodProperty->m_TpsStatus = 1;
				/* clear tdp tps ok interrupt */
				DDS_WriteRegFields(  
								hDevice, 									
								DTMB_TDP_INT_CLEAR_REG,
								DTMB_TDP_TPS_OK_INT_SET,
								1, 
								0x1 );
			}
			if( regVal&0x20 )
			{
				psDemodProperty->m_TpsStatus = 0;
				/* clear tdp tps fail interrupt */
				DDS_WriteRegFields(  
									hDevice, 									
									DTMB_TDP_INT_CLEAR_REG,
									DTMB_TDP_TPS_FAIL_INT_SET,
									1, 
									0x1 );
				OAL_DebugPrint( MXD_ULTRA_TRACE, "DTMB_IsTpsOk:: TPS Failed interrupt! \n" );
				return eRtnCode;
			}
		}

		DDS_WriteReg( hDevice,  DTMB_TDP_INT_MASK_REG, 0x00 );

		if( 1 == psDemodProperty->m_TpsStatus )
		{
			OAL_DebugPrint( MXD_ULTRA_TRACE, "DTMB_IsTpsOk:: TPS ok interrupt ! tdpisr:0x%x\n", regVal );
			return MXD_RTN_OK;
		}

	}

	OAL_DebugPrint( MXD_ULTRA_TRACE, "DTMB_IsTpsOk:: TPS ok interrupt timeout! tdpisr:0x%x\n", regVal );
	return eRtnCode;
}/* end of DTMB_IsTdpInitOk( ) */


/*!
  * Check signal is exist or not.
  *
  * \param hDevice:		[in] Device handle
  *
  * \return Return code by MXD_RTN_CODE_E enumeration.
  *
  * \remark null
  *
  */
MXD_RTN_CODE_E MXD_API DTMB_IsSignalExist(
				 	IN HMXDDEV hDevice,
 					IN MXD_S32 milliseconds )
{
	MXD_RTN_CODE_E eRtnCode = MXD_RTN_OK;
	MXD_U8 regVal = 0;
	MXD_S32 i;
	MXD_U8 noSignalFlag = 0;

	PDEVICE_PROPERTY_S psDeviceProperty;
	PTUNER_PROPERTY_S psTunerProperty;
	
	psDeviceProperty = (PDEVICE_PROPERTY_S)hDevice;
	psTunerProperty = &(psDeviceProperty->m_sTuner);

	psDeviceProperty->m_InitFo = DTMB_CalcCpp(  psTunerProperty->m_LifFreqKhz, psTunerProperty->m_IfRate );	

	DDS_WriteReg( hDevice,  DTMB_TDP_CTS_THD_REG, 0x5 );

	DDS_WriteReg( hDevice,  DTMB_TDP_WORK_MODE_REG, 0x09 );

	DDS_WriteReg( hDevice,  DTMB_TDP_INIT_FO_H_REG, (MXD_U8)(psDeviceProperty->m_InitFo>>16));
	DDS_WriteReg( hDevice,  DTMB_TDP_INIT_FO_M_REG, (MXD_U8)(psDeviceProperty->m_InitFo>>8));	
	DDS_WriteReg( hDevice,  DTMB_TDP_INIT_FO_L_REG, (MXD_U8)(psDeviceProperty->m_InitFo));
	DDS_WriteReg( hDevice,  DTMB_TDP_INIT_REG, 0x01 );

	for( i=0; i<milliseconds; i++)
	{
		OAL_Sleep(1);
		DDS_ReadReg( hDevice,  DTMB_TDP_INT_STATUS_REG, &regVal );
		if( 0 != regVal )
		{
			if( regVal&0x80 )
			{			
				DDS_WriteReg( hDevice,  DTMB_TDP_INT_CLEAR_REG, 0xff );
				OAL_DebugPrint( MXD_ULTRA_TRACE, "DTMB_IsSignalExist:: NO Signal!\n" );
				return  MXD_RTN_FAIL;
			}
			else
			{
				DDS_WriteReg( hDevice,  DTMB_TDP_INT_CLEAR_REG, 0xff );	
				noSignalFlag = 1;
				break;
			}
		}
		else
		{
			noSignalFlag = 0;
		}
	
	}

	if( 0 == noSignalFlag )
	{
		OAL_DebugPrint( MXD_ULTRA_TRACE, "DTMB_IsSignalExist:: Timeout! ISR is 0x%x\n" ,regVal);
		return  MXD_RTN_FAIL;		
	}

	DDS_WriteReg( hDevice,  DTMB_TDP_CTS_THD_REG, 0 );
	DDS_WriteReg( hDevice,  DTM

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91高潮流白浆在线麻豆 | 色综合久久久久综合体桃花网| 欧美一级淫片007| 色欧美88888久久久久久影院| 青草av.久久免费一区| 亚洲精品乱码久久久久久久久| 久久久久久9999| 宅男在线国产精品| 欧美日韩一区 二区 三区 久久精品 | 欧美狂野另类xxxxoooo| 不卡的电影网站| 奇米色777欧美一区二区| gogo大胆日本视频一区| 韩国视频一区二区| 看电影不卡的网站| 日本欧美一区二区三区乱码 | 欧美成人精品1314www| 欧美狂野另类xxxxoooo| 欧美日韩精品二区第二页| 色综合亚洲欧洲| av电影在线不卡| 成人黄色软件下载| 成人毛片老司机大片| 粉嫩av一区二区三区粉嫩| 国产成人精品亚洲777人妖| 国产精品一区二区久久不卡| 国产真实乱偷精品视频免| 久久国产精品露脸对白| 青青草国产成人av片免费| 日韩国产精品久久久久久亚洲| 亚洲国产精品久久不卡毛片| 一区二区三区高清在线| 亚洲一区二区三区小说| 亚洲中国最大av网站| 亚洲自拍都市欧美小说| 亚洲一区二区精品视频| 日韩和的一区二区| 免费人成精品欧美精品 | 色综合天天在线| 91一区二区三区在线观看| 欧美精品777| 国产丝袜欧美中文另类| 亚洲精品高清在线| 久久精品国产色蜜蜜麻豆| jlzzjlzz欧美大全| 欧美一区二区视频免费观看| 久久―日本道色综合久久| 国产精品你懂的在线欣赏| 亚洲高清在线视频| 国产乱子轮精品视频| 色婷婷一区二区三区四区| 精品国产乱码久久| 亚洲欧美一区二区三区久本道91 | 成人一道本在线| 欧美日韩国产高清一区二区三区| 久久久久国产精品人| 亚洲综合免费观看高清完整版在线| 麻豆国产精品一区二区三区 | 欧美放荡的少妇| 国产欧美日韩一区二区三区在线观看| 一区二区三区 在线观看视频| 日本亚洲电影天堂| 99久久亚洲一区二区三区青草| 日韩一区二区免费视频| 玉足女爽爽91| 国产99久久精品| 91精品国产综合久久小美女| 亚洲女女做受ⅹxx高潮| 精品一区二区三区蜜桃| 欧美网站一区二区| 国产精品萝li| 精品一区二区三区在线观看国产| 亚洲人成网站色在线观看| 激情另类小说区图片区视频区| 色哟哟精品一区| 国产人成亚洲第一网站在线播放 | 另类成人小视频在线| 色婷婷精品大视频在线蜜桃视频| 日韩欧美国产系列| 亚洲电影一区二区三区| 97久久精品人人做人人爽| 精品国产乱码久久久久久影片| 亚洲丰满少妇videoshd| 色综合视频在线观看| 国产精品美女久久久久久久久 | 欧美一区二区精美| 亚洲韩国一区二区三区| 色综合一个色综合| 国产精品久久久久久久裸模| 国产精品自拍av| 精品日产卡一卡二卡麻豆| 午夜激情一区二区三区| 在线观看欧美精品| 亚洲激情一二三区| 一本色道久久加勒比精品| 1区2区3区欧美| 成人精品高清在线| 国产精品久久久久婷婷| 成av人片一区二区| 国产精品久久久久一区| 99久久国产免费看| 国产精品第13页| 不卡的电影网站| 亚洲视频一二三区| 97se亚洲国产综合自在线不卡| 中文字幕一区二区不卡| www.成人网.com| 最好看的中文字幕久久| 91视频一区二区| 亚洲欧美激情小说另类| 欧美视频一区在线观看| 五月婷婷欧美视频| 91精品啪在线观看国产60岁| 日韩av电影一区| 欧美大片拔萝卜| 韩国精品在线观看| 国产欧美日韩另类一区| www.亚洲激情.com| 一区二区高清免费观看影视大全| 欧美午夜在线观看| 日韩二区三区在线观看| 91精品国产高清一区二区三区| 午夜视频在线观看一区二区| 日韩欧美国产小视频| 国产福利精品一区| 亚洲婷婷在线视频| 欧美日韩三级一区二区| 琪琪一区二区三区| 久久久欧美精品sm网站 | 国产丝袜欧美中文另类| 97se亚洲国产综合自在线不卡| 亚洲国产中文字幕在线视频综合| 91精品国产综合久久小美女| 国产一区在线看| 国产精品久久久久久一区二区三区| 91九色最新地址| 免费视频最近日韩| 亚洲国产精品激情在线观看| 色婷婷久久99综合精品jk白丝| 亚洲在线中文字幕| 日韩一级片在线观看| 国产成人av影院| 亚洲精品国产第一综合99久久| 欧美久久久久久久久| 国产一区二三区好的| 综合婷婷亚洲小说| 欧美日韩亚洲不卡| 国产精品99久久不卡二区| 色综合久久中文综合久久牛| 亚洲福中文字幕伊人影院| 久久综合av免费| 在线免费视频一区二区| 国产一区二区不卡在线| 亚洲综合区在线| 久久男人中文字幕资源站| 91视视频在线直接观看在线看网页在线看| 亚洲成年人网站在线观看| 久久精品亚洲精品国产欧美kt∨ | 亚洲精品视频一区二区| 日韩欧美电影一区| 在线观看视频一区二区| 国产成人在线影院| 免费视频最近日韩| 亚洲激情五月婷婷| 久久久久国产一区二区三区四区| 欧美性色aⅴ视频一区日韩精品| 国产成人福利片| 日本不卡123| 亚洲美女屁股眼交| 欧美成人aa大片| 欧美日韩中文字幕一区二区| 国产精品性做久久久久久| 日韩激情一区二区| 一区二区三区在线观看动漫| 久久久久久日产精品| 欧美女孩性生活视频| www.久久久久久久久| 国产九色sp调教91| 日韩不卡在线观看日韩不卡视频| 亚洲精品视频在线| 中文字幕中文乱码欧美一区二区| 欧美不卡视频一区| 欧美精品一级二级| 色综合久久综合中文综合网| 成人午夜精品在线| 狠狠色丁香久久婷婷综合丁香| 丝袜美腿亚洲色图| 一区二区三区中文字幕精品精品| 国产精品少妇自拍| 久久你懂得1024| 精品盗摄一区二区三区| 91精品婷婷国产综合久久| 欧美日韩精品一区二区三区蜜桃 | 亚洲成人免费av| 亚洲色图.com| 亚洲视频一二三区| 国产精品久久久一本精品 | 国产精品水嫩水嫩| 久久久久久99久久久精品网站| 精品国产亚洲在线|