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

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

?? serialcsr.cpp

?? 關于S3C2442平臺藍牙模塊驅動
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
	{
		if(gpfnCOM_Seek)
			lResult = gpfnCOM_Seek(pHead, Position, Type);
	}
	
	return lResult;
}

/////////////////////////////////////////////////////////////////////
// COM_PowerUp Wrapper
//
// The CSR implementation of this function is a simple passthrough
//
//   Powerup is flagged to ensure PS update is performed on next
//   access.
//
BOOL
WINAPI
CSR_PowerUp(HANDLE pContext)
{
	BOOL bResult = NULL;
	HANDLE hPort = NULL;
	RETAILMSG(SC_DBG,(TEXT("CSR_PowerUp:enter !!!!\r\n")));	
	if(ghLibInst)
	{
		if(gpfnCOM_PowerUp)
			bResult = gpfnCOM_PowerUp(pContext);
	}
	RETAILMSG(SC_DBG,(TEXT("CSR_PowerUp:Finish")));
	return bResult;
}

/////////////////////////////////////////////////////////////////////
// COM_PowerDown Wrapper
//
// The CSR implementation of this function is a simple passthrough
//
//   PowerDown is flagged to ensure PS update is performed on next
//   access.  Even though
//
BOOL
WINAPI
CSR_PowerDown(HANDLE pContext)
{
	BOOL bResult = NULL;
   	
     	RETAILMSG(SC_DBG,(TEXT("CSR_PowerDown:enter\r\n")));
	if(ghLibInst)
	{
		if(gpfnCOM_PowerDown)
			bResult = gpfnCOM_PowerDown(pContext);
	}
	BTEnable(FALSE);
	RETAILMSG(SC_DBG,(TEXT("CSR_PowerDown:leave\r\n")));
	return bResult;
}

/////////////////////////////////////////////////////////////////////
// COM_IOControl Wrapper
//
// The CSR implementation of this function is a simple passthrough
//
BOOL
WINAPI
CSR_IOControl(DWORD dwOpenData, DWORD dwCode, PBYTE pBufIn, 
	      DWORD dwLenIn, PBYTE pBufOut, DWORD dwLenOut, 
	      PDWORD pdwActualOut)
{
  BOOL bResult = FALSE;
  PHW_OPEN_INFO     pOpenData  = (PHW_OPEN_INFO)dwOpenData;
  pSkey.pSerialHead = (PHW_INDEP_INFO)pOpenData->pSerialHead;
  RETAILMSG(SC_DBG,(TEXT("CSR_IOControl:enter\r\n")));
  switch ( dwCode ) 
  {
      case IOCTL_BT_TESTMOD:
      {
      	
      	bTestMode = TRUE;
      	BTEnable(TRUE);
      	UpdatePersistentStore(hBTTest);
      	Sleep(100);
      	UpdatePersistentStore(hBTTest);
        SetTestModeCMD(hBTTest);
        
        bResult = TRUE;
      }
      break;
 
      case IOCTL_POWER_CAPABILITIES:
  	   if (pBufOut && dwLenOut >= sizeof (POWER_CAPABILITIES) && pdwActualOut)
  	   {
                PPOWER_CAPABILITIES PowerCaps = (PPOWER_CAPABILITIES)pBufOut;
	        memset(PowerCaps, 0, sizeof (*PowerCaps));
		PowerCaps->DeviceDx = 0x11;	//support D0 and D4
		*pdwActualOut = sizeof (*PowerCaps);
		bResult = TRUE;
  	   }
      break;

      case IOCTL_POWER_SET :
   	   {
	        WCHAR		state[1024] = {0};
	        LPWSTR 	pState = &state[0];
	        DWORD		dwBufChars = (sizeof(state) / sizeof(state[0]));
	        DWORD		dwStateFlags = 0;
	        DWORD		dwErr;         			
   			
    	        CEDEVICE_POWER_STATE NewDx = *(PCEDEVICE_POWER_STATE)pBufOut;
		RETAILMSG(1, (TEXT("CSR: IOCTL_POWER_SET NewDx=%d\r\n"), NewDx));

		dwErr = GetSystemPowerState(pState, dwBufChars, &dwStateFlags);
		if (ERROR_SUCCESS != dwErr) 
		{
			RETAILMSG(TRUE,(TEXT("CSR: GetSystemPowerState:ERROR:%d\r\n"), dwErr));
		} 
		else 
		{
			RETAILMSG(SC_DBG,(TEXT("CSR: System Power state is '%s', flags 0x%08x\r\n"), state, dwStateFlags));
		}
										 	    
    	       switch(NewDx)
               {
                  case D0:	//On, backlightOff, ScreenOff, Unattended
                  //case D1:	//None
                  //case D2:	//Resuming, UserIdle
                  //To-Do: Must check why is "resuming" state after suspend!!! 
                  RETAILMSG(SC_DBG,(TEXT("CSR: IOCTL_POWER_SET--D0\r\n")));
                      
	          BTEnable(TRUE);
	          if(ghLibInst)
	          {
	             if(gpfnCOM_PowerUp)
	             	pSkey.bBTPowerControl = gpfnCOM_PowerUp(pSkey.pSerialHead);
	          }
	          
	          RETAILMSG(SC_DBG,(TEXT("CSR: bBTPowerControl_gpfnCOM_PowerUp:%d\r\n"), pSkey.bBTPowerControl));
	          			
	          SetEvent(pSkey.PSKeyEvent);
		    							
                  break;
                  
                  default:	//D3: Suspend
                  		//D4:	ColdReboot, Reboot, ShutDown,  
                  RETAILMSG(SC_DBG,(TEXT("CSR: IOCTL_POWER_SET--D4\r\n")));
                  
	          
	          if(ghLibInst)
	          {
	          	if(gpfnCOM_PowerDown)
	          	   pSkey.bBTPowerControl = gpfnCOM_PowerDown(pSkey.pSerialHead);
	          }
	  
	          RETAILMSG(SC_DBG,(TEXT("CSR: bBTPowerControl_gpfnCOM_PowerDown:%d\r\n"), pSkey.bBTPowerControl));
                
                  break;
                }
   	    }
   	 
   	 bResult = TRUE;
      break;   

     default:
      RETAILMSG(SC_DBG,(TEXT("CSR: IOCTL Default\r\n")));
      if(ghLibInst)
      {
        if(gpfnCOM_IOControl)
        	bResult = gpfnCOM_IOControl(dwOpenData, dwCode, pBufIn, dwLenIn, pBufOut, dwLenOut, pdwActualOut);
      }       
     break;
  }
  RETAILMSG(SC_DBG,(TEXT("CSR: CSR_IOControl :leave:bResult:%d\r\n"), bResult));
  return bResult;
}

/////////////////////////////////////////////////////////////////////
// SerialGetDroppedByteNumber Wrapper
//
// The CSR implementation of this function is a simple passthrough
//
//SERIALCSR_API ULONG SerialGetDroppedByteNumber(HANDLE pHead)
ULONG SerialGetDroppedByteNumber(HANDLE pHead)
{
	ULONG lResult = NULL;

	if(ghLibInst)
	{
		if(gpfnSerialGetDroppedByteNumber)
			lResult = gpfnSerialGetDroppedByteNumber(pHead);
	}
	return lResult;
}

/////////////////////////////////////////////////////////////////////
// UpdatePersistentStore
//
// Sets DCB and updates persistent store on chip
//
// Check that this does not interfere with any previous DCB settings
//
BOOL UpdatePersistentStore(HANDLE hPort)
{
	BOOL               bRet                   = FALSE;
	BOOL               bRestoreSettings       = FALSE;
	DWORD*             dwLen                  = 0;
	DCB                dcbOrigConfig;
        COMMTIMEOUTS       ctoTimeouts;
	SERIAL_QUEUE_SIZE  sqsQueue;
	
        RETAILMSG(SC_DBG,(TEXT("UpdatePersistentStore:enter\r\n")));
	
 	// Store current DCB settings
	memset(&dcbOrigConfig, 0, sizeof (dcbOrigConfig));
	dcbOrigConfig.DCBlength     = sizeof(DCB); 
	bRestoreSettings = CSR_IOControl((DWORD)hPort, IOCTL_SERIAL_GET_DCB, 0, 0, (unsigned char*)&dcbOrigConfig, sizeof(dcbOrigConfig), dwLen);

        // *** WARNING - IOCTL_SERIAL_GET_DCB fails with Widcomm bluetooth driver.  No fix completed as this is for MS + out of time

	// Setup DCB
	DCB dcbConfig;
	memset(&dcbConfig, 0, sizeof (dcbConfig));
	dcbConfig.DCBlength         = sizeof(DCB); 
	dcbConfig.BaudRate          = DEFAULTBAUD;
	dcbConfig.Parity            = EVENPARITY;        
	dcbConfig.ByteSize          = 8;                 
	dcbConfig.StopBits          = ONESTOPBIT;   
	if(!CSR_IOControl((DWORD)hPort, IOCTL_SERIAL_SET_DCB, (PBYTE)&dcbConfig, sizeof(dcbConfig), 0, 0, 0))
		return FALSE;

        // Setup the com port timeouts
	ctoTimeouts.ReadIntervalTimeout         = MAXDWORD;
	ctoTimeouts.ReadTotalTimeoutConstant    = 0;
	ctoTimeouts.ReadTotalTimeoutMultiplier  = 0;
	ctoTimeouts.WriteTotalTimeoutConstant   = 0;
	ctoTimeouts.WriteTotalTimeoutMultiplier = 0;
	if(!CSR_IOControl((DWORD)hPort, IOCTL_SERIAL_SET_TIMEOUTS, (PBYTE)&ctoTimeouts, sizeof(ctoTimeouts), 0, 0, 0))
		return FALSE;

        // Queues
	sqsQueue.InSize  = 16;
	sqsQueue.OutSize = 16;
	if(!CSR_IOControl((DWORD)hPort, IOCTL_SERIAL_SET_QUEUE_SIZE, (PBYTE)&sqsQueue, sizeof(sqsQueue), 0, 0, 0))
		return FALSE;

	// Call uBCSP update routine
	if(hPort)
		bRet = PSConfig(hPort);

	// Reapply stored settings
        if(bRestoreSettings)
		CSR_IOControl((DWORD)hPort, IOCTL_SERIAL_SET_DCB, (unsigned char*)&dcbOrigConfig, sizeof(dcbOrigConfig), 0, 0, 0);
        
        
        RETAILMSG(SC_DBG,(TEXT("UpdatePersistentStore:leave\r\n")));
	return bRet;
}



PVOID VirtualAllocCopyPhysical(unsigned size, char *str, PVOID pPhysicalAddress)
{
    	PVOID ptr;
    	unsigned offset;
 
    	offset = (unsigned)pPhysicalAddress & ALIGNMENT_MASK;
 
    	size +=offset ? PAGE_SIZE : 0;
    	ptr = VirtualAlloc(0, size, MEM_RESERVE, PAGE_NOACCESS);
 
    	if (ptr == NULL)
    	{
        	RETAILMSG(TRUE,(TEXT("VirtualAllocCopyPhysical failed! %s : size=0x%x,\r\n"),str,size));
        	return(0);
    	}
 
    	if (!VirtualCopy((PVOID)ptr, (PVOID)(((unsigned)pPhysicalAddress - offset) >> 8), size, PAGE_PHYSICAL | PAGE_READWRITE | PAGE_NOCACHE))
    	{
        	RETAILMSG(TRUE,(TEXT("VirtualCopyCopyPhysical failed! %s : addr=0x%x, offset=0x%x\r\n"),str,(unsigned)pPhysicalAddress,offset));
        	return(0);
    	}
    	return((PVOID)((PBYTE)ptr+offset));
}



static DWORD PSKeyUpdate(PPSKEY_UPDATE _pSkey)
{
	DWORD we;
	HANDLE hPort = NULL;
	
	RETAILMSG(SC_DBG, (TEXT("PSKeyUpdate:enter\r\n")));
	
	if (!_pSkey)
	{
	RETAILMSG(1, (TEXT("pskey invalid\r\n")));	
        return ERROR_INVALID_PARAMETER;
	}
	RETAILMSG(1, (TEXT("pskey valid\r\n")));
	while (1) 
	{
	     __try {
		  RETAILMSG(1, (TEXT("before PSKeyUpdate Start\r\n")));
	         we = WaitForSingleObject(_pSkey->PSKeyEvent, INFINITE);
	         RETAILMSG(1, (TEXT("PSKeyUpdate Start\r\n")));
              
		 // Update persistent store
		 if(ghSerialHead && gbUpdatePS)
		 {  
		 	//evan_note--->
		    if(gpfnCOM_Open)
		    {  
		    	// Reset update flag
		    	gbUpdatePS = FALSE;
		       
		    	// Get port handle
		    	hPort = gpfnCOM_Open(ghSerialHead, GENERIC_READ | GENERIC_WRITE, CREATE_NEW);
                 
			UpdatePersistentStore(hPort);
			
		    	gpfnCOM_Close((DWORD)hPort);
				
		    }
		    //<----
		 }
	   
	     } _except(EXCEPTION_EXECUTE_HANDLER) {
	         RETAILMSG(SC_DBG,(TEXT("!!! PSKey EXCEPTION: 0x%X !!!\r\n"), GetExceptionCode() ));
              RETAILMSG(1,(TEXT("!!! PSKey EXCEPTION:  !!!\r\n") ));
		 }
		RETAILMSG(1,(TEXT("!!! PSKey EXCEPTION:  !!!\r\n") ));
	}
	
}



BOOL SetTestModeCMD(HANDLE hPort)
{
	BOOL               bRet                   = FALSE;
	BOOL               bRestoreSettings       = FALSE;
	DWORD*             dwLen                  = 0;
	DCB                dcbOrigConfig;
        COMMTIMEOUTS       ctoTimeouts;
	SERIAL_QUEUE_SIZE  sqsQueue;
	
        RETAILMSG(SC_DBG,(TEXT("SetTestModeCMD Start\r\n")));
 	// Store current DCB settings
	memset(&dcbOrigConfig, 0, sizeof (dcbOrigConfig));
	dcbOrigConfig.DCBlength     = sizeof(DCB); 
	bRestoreSettings = CSR_IOControl((DWORD)hPort, IOCTL_SERIAL_GET_DCB, 0, 0, (unsigned char*)&dcbOrigConfig, sizeof(dcbOrigConfig), dwLen);
  
        // *** WARNING - IOCTL_SERIAL_GET_DCB fails with Widcomm bluetooth driver.  No fix completed as this is for MS + out of time

	// Setup DCB
	DCB dcbConfig;
	memset(&dcbConfig, 0, sizeof (dcbConfig));
	dcbConfig.DCBlength         = sizeof(DCB); 
	dcbConfig.BaudRate          = DEFAULTBAUD;
	dcbConfig.Parity            = EVENPARITY;        
	dcbConfig.ByteSize          = 8;                 
	dcbConfig.StopBits          = ONESTOPBIT;   
	if(!CSR_IOControl((DWORD)hPort, IOCTL_SERIAL_SET_DCB, (PBYTE)&dcbConfig, sizeof(dcbConfig), 0, 0, 0))
		return FALSE;

        // Setup the com port timeouts
	ctoTimeouts.ReadIntervalTimeout         = MAXDWORD;
	ctoTimeouts.ReadTotalTimeoutConstant    = 0;
	ctoTimeouts.ReadTotalTimeoutMultiplier  = 0;
	ctoTimeouts.WriteTotalTimeoutConstant   = 0;
	ctoTimeouts.WriteTotalTimeoutMultiplier = 0;
	if(!CSR_IOControl((DWORD)hPort, IOCTL_SERIAL_SET_TIMEOUTS, (PBYTE)&ctoTimeouts, sizeof(ctoTimeouts), 0, 0, 0))
		return FALSE;

        // Queues
	sqsQueue.InSize  = 16;
	sqsQueue.OutSize = 16;
	if(!CSR_IOControl((DWORD)hPort, IOCTL_SERIAL_SET_QUEUE_SIZE, (PBYTE)&sqsQueue, sizeof(sqsQueue), 0, 0, 0))
		return FALSE;

	
	//Jonathan_test start
	if(hPort)
		bRet = TESTMode(hPort);
	//Jonathan_test end

	// Reapply stored settings
        if(bRestoreSettings)
		CSR_IOControl((DWORD)hPort, IOCTL_SERIAL_SET_DCB, (unsigned char*)&dcbOrigConfig, sizeof(dcbOrigConfig), 0, 0, 0);
        
        
        RETAILMSG(1,(TEXT("SetTestModeCMD Finish\r\n")));
	return bRet;
}

BOOL BTEnable(BOOL bIsOn)
{
    if (bIsOn)
    {
    //b	s2440IOP->GPCDAT &= ~(0x1<<9); 	 //Set GPC9/BT_PWR_EN as 0 for pown on
    //b 	s2440IOP->GPCDN |= (0x1<<9);    //the pull up function is disabled
     //b    s2440IOP->GPCCON &= ~(0x3<<18);
      //b   s2440IOP->GPCCON |=  (0x1<<18);  //Set Output
        s2440IOP->GPBDAT &= ~(0x1<<2); 	 //Set GPB2 as 0 for pown on,LOW ENABLE
   	 s2440IOP->GPBDN |= (0x1<<2);    //the pull up function is disabled
        s2440IOP->GPBCON &= ~(0x3<<4);
        s2440IOP->GPBCON |=  (0x1<<4);  //Set Output
        //Sleep(50); 
        
      //b   s2440IOP->GPGDAT |= (0x1<<5);	//Set GPG5/BT_RESET as 1 for reset BT
       //b  s2440IOP->GPGDN |= (0x1<<5);
      //b   s2440IOP->GPGCON &= ~(0x3<<10);
     //b    s2440IOP->GPGCON |= (0x1<<10);
          
      	  s2440IOP->GPDDAT |= (0x1<<0);	//Set GPD0/BT_RESET as 1 for reset BT
         s2440IOP->GPDDN |= (0x1<<0);
         s2440IOP->GPDCON &= ~(0x3<<0);
         s2440IOP->GPDCON |= (0x1<<0);
      	 Sleep(100);    
     
       	gbBTPower = TRUE;
       	
       	ShowIOPort();
       
    }
    else
    {
    	s2440IOP->GPCDAT &= ~(0x1<<9);
    	s2440IOP->GPCDN |= (0x1<<9);
        s2440IOP->GPCCON &= ~(0x3<<18);
        s2440IOP->GPCCON |=  (0x1<<18);
        
      
        s2440IOP->GPGDAT &= ~(0x1<<5);
        s2440IOP->GPGDN |= (0x1<<5);
        s2440IOP->GPGCON &= ~(0x3<<10);
        s2440IOP->GPGCON |= (0x1<<10);
        
        gbBTPower = FALSE;
        
        ShowIOPort();
        Sleep(100);  
	
    }
	return TRUE;
}

void ShowIOPort(void)
{
	RETAILMSG(SC_DBG,(TEXT("gbBTPower=%x\r\n"),gbBTPower));
	RETAILMSG(SC_DBG,(TEXT("gpBdat=%x \r\n"),s2440IOP->GPBDAT));
	RETAILMSG(SC_DBG,(TEXT("gpBup=%x \r\n"),s2440IOP->GPBDN));
	RETAILMSG(SC_DBG,(TEXT("gpBcon=%x \r\n"),s2440IOP->GPBCON));
	

	RETAILMSG(SC_DBG,(TEXT("gpDdat=%x \r\n"),s2440IOP->GPDDAT));
	RETAILMSG(SC_DBG,(TEXT("gpDup=%x \r\n"),s2440IOP->GPDDN));
	RETAILMSG(SC_DBG,(TEXT("gpDcon=%x \r\n"),s2440IOP->GPDCON));
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品日产卡一卡二卡麻豆| 久久久精品免费网站| www国产精品av| 亚洲欧洲三级电影| 人人狠狠综合久久亚洲| 欧美一区二区视频观看视频| 中文字幕精品一区二区精品绿巨人 | 欧美精品在线一区二区三区| 久久嫩草精品久久久精品| 亚洲在线免费播放| 国产91在线观看| 91精品国产色综合久久ai换脸 | 久国产精品韩国三级视频| 色综合天天做天天爱| 久久久久久久久久久久久女国产乱 | 成人app网站| 2023国产精品| 日韩电影在线观看一区| 欧洲生活片亚洲生活在线观看| 久久精品夜色噜噜亚洲aⅴ| 日本中文在线一区| 色综合久久综合网97色综合 | 99视频精品免费视频| 欧美卡1卡2卡| 欧美激情在线看| 狠狠色狠狠色合久久伊人| 韩日欧美一区二区三区| 日本高清不卡在线观看| 中文字幕亚洲成人| 国产一二精品视频| jlzzjlzz国产精品久久| 精品视频一区二区三区免费| 国产精品电影院| 国产成人精品免费一区二区| 久久综合色天天久久综合图片| 美女一区二区在线观看| 日韩欧美在线综合网| 日日夜夜精品免费视频| 欧美高清性hdvideosex| 婷婷开心久久网| 欧美乱妇23p| 日日夜夜免费精品视频| 欧美一级日韩不卡播放免费| 日本vs亚洲vs韩国一区三区二区| 制服丝袜中文字幕亚洲| 日韩av在线发布| 欧美v国产在线一区二区三区| 蜜桃视频在线观看一区| 欧美变态凌虐bdsm| 国产成人午夜片在线观看高清观看| 亚洲精品在线免费观看视频| 国产综合成人久久大片91| 国产日韩欧美制服另类| 成年人国产精品| 亚洲线精品一区二区三区| 91精品国产综合久久香蕉麻豆| 美女视频黄免费的久久 | 欧美精品123区| 奇米在线7777在线精品| xvideos.蜜桃一区二区| 成人白浆超碰人人人人| 亚洲成人在线观看视频| 欧美一区二区久久久| 国产精品1区2区| 一区二区三区在线视频播放| 欧美日韩国产大片| 国产激情一区二区三区四区| 亚洲天堂久久久久久久| 欧美理论在线播放| 国产成人精品影视| 一区二区三区在线不卡| 欧美一级国产精品| 不卡一区二区中文字幕| 婷婷开心激情综合| 中文字幕一区二区在线观看| 欧美日本视频在线| 成人黄色在线网站| 婷婷激情综合网| 国产精品理论在线观看| 日韩丝袜美女视频| 91香蕉视频黄| 国内一区二区在线| 香蕉久久一区二区不卡无毒影院| 久久色在线视频| 欧美日韩一区久久| 99视频国产精品| 国产精品综合久久| 亚洲va中文字幕| 国产精品天美传媒| 精品美女被调教视频大全网站| 99久久久精品免费观看国产蜜| 全国精品久久少妇| 亚洲一区二三区| 国产精品久久久久影院| 欧美大片一区二区三区| 欧美性色欧美a在线播放| 国产精品91一区二区| 日韩精品成人一区二区三区| 日韩理论电影院| 久久精品亚洲乱码伦伦中文| 911精品国产一区二区在线| 色婷婷久久一区二区三区麻豆| 国产不卡免费视频| 久久精品999| 亚洲国产成人va在线观看天堂| 国产精品久久久久久久第一福利| 精品国产凹凸成av人网站| 在线不卡免费av| 欧美色网一区二区| 色婷婷国产精品| 91免费版pro下载短视频| 国产aⅴ综合色| 久久99国产精品久久99果冻传媒| 视频一区二区国产| 午夜成人免费电影| 午夜欧美大尺度福利影院在线看| 亚洲精品久久久久久国产精华液| 欧美激情一区二区三区全黄| 久久久久久久久岛国免费| 久久久久亚洲蜜桃| 亚洲最新在线观看| 综合色天天鬼久久鬼色| 中文字幕亚洲欧美在线不卡| 国产精品国产三级国产aⅴ中文| 国产午夜一区二区三区| 国产精品毛片大码女人| 中文字幕亚洲一区二区va在线| 国产精品久久夜| 国产精品视频你懂的| 中文字幕精品一区二区精品绿巨人 | 色94色欧美sute亚洲线路一久| 91丨九色丨黑人外教| 一本久道中文字幕精品亚洲嫩 | 国产精品99久久久久久久女警 | 美女网站色91| 国产一区二区伦理片| 夫妻av一区二区| 91在线观看地址| 欧美在线一二三四区| 91精品国产91热久久久做人人| 精品成人一区二区三区| 中文字幕av一区二区三区高| 自拍偷拍亚洲综合| 亚洲国产aⅴ成人精品无吗| 天堂成人国产精品一区| 久久福利视频一区二区| 成人午夜精品在线| 色一区在线观看| 91精品在线麻豆| 国产欧美日韩在线观看| 亚洲欧美日韩国产综合| 日韩—二三区免费观看av| 国产精品一区二区在线观看不卡| 99国产精品一区| 日韩区在线观看| 亚洲人精品一区| 久久精品国产99久久6| 99re在线精品| 欧美mv日韩mv亚洲| 亚洲美女一区二区三区| 久久精品国产秦先生| 91天堂素人约啪| 精品成人一区二区| 洋洋成人永久网站入口| 国产麻豆精品在线| 欧美另类一区二区三区| 国产欧美精品一区| 喷白浆一区二区| 在线观看免费一区| 国产女人18水真多18精品一级做| 丝袜美腿一区二区三区| av在线综合网| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲在线视频网站| 成人精品视频一区| 精品国产乱子伦一区| 亚洲一区在线观看网站| 日韩国产成人精品| 中国av一区二区三区| 亚洲一区精品在线| 国产欧美va欧美不卡在线| 日韩综合在线视频| 久久综合色8888| 亚洲国产一二三| 91碰在线视频| 极品少妇一区二区| 欧美日韩专区在线| 国产精品私人影院| 99久久er热在这里只有精品15| 国产日韩欧美不卡在线| 日韩精品一区二区三区中文精品| 有坂深雪av一区二区精品| 成人美女视频在线看| 欧美精品一区二区三区蜜桃| 日韩黄色小视频| 欧美性猛交一区二区三区精品 | 国产福利精品导航| 日韩精品专区在线影院重磅| 日韩在线一二三区| 欧美乱妇20p|