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

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

?? usb.c

?? motorola jw32 usb 源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "usb.h"				// Definitions for USB Data Types & Constants
#include "usbdesc.c"			// const USB Descriptor Data

#define b_EP0STALL	    6
#define b_DPPULLEN		2
#pragma DATA_SEG  MY_ZEROPAGE
//variable declare
unsigned char USB_Status=0;
unsigned char Status=0;
unsigned char EP1234_Status=0;
unsigned char SetupSize;
unsigned char const *SetupDataPtr;
unsigned char usb_out[8];  //usb output data buffercde
extern BYTE                    macCurrentChannel;
extern BYTE    macWarncode;
#pragma DATA_SEG DEFAULT
unsigned char IdleRate_Table=0,Protocol_Table=1;
unsigned char UsbIdleFlag=0;

static BYTE    In_PacketKb[8]={0,0,0,0,0,0,0,0} ;
static BYTE    In_PacketMs[MOUSELENGTH]={0,0,0,0,0,0} ;
static BYTE    In_PacketDev[MAXDEVLENGTH] ;
static BYTE    Out_Length=0;
static BYTE    In_Packet[8],Inlength ;

setup_buffer SetupBuffer;
BYTE SendUsbjkData(unsigned char *buffer,unsigned char length);

//;**************************************************************************
//;
//; for 48MHZ CGMCLK, 8MHZ bus, 4MHz reference clk
//;
//;**************************************************************************

void PLL_Start(void) {
__asm {
;R=1, N=06, P=1, E=2, L=96
		clra
		sta		PCTL					;PTCL
		sta		PMSH					;PMSH; N high
        lda     #6
        sta		PMSL					;PMSL; N low
        lda     #96
        sta		PMRS					;PMRS; L
		lda		#1
        sta		PMDS					;PMDS; RDS
		lda		#$80
 		sta		PBWC 					;PBWC; AUTO
        lda		#$06
		sta		PCTL					;PLLON, E=2 and P=1
        lda		#$26
		sta		PCTL					;PLLON, E=2 and P=1
AUTO_LP:
		lda		PBWC
        cbeqa   #$80,	AUTO_LP			;LOCK?
;		jsr		Delay_3ms_PLL			;constant delay
		lda		#$36
		sta		PCTL					;BCS
		rts
	}
}

//;**************************************************************************
//;
//; USB Initialisation
//;
//;**************************************************************************
void USB_EN(void) {
  __asm{
;    	clr		USB_Status							;Init Software flag
;			clr		Status								;Init Software flag
;			clr		EP1234_Status						;Init Software flag
			bset	b_DPPULLEN,		POCR2				;DP pullup enable

			mov		#$54,			UINTFCR				;EP1=INTF0
														;EP2=INTF1
														;EP3=INTF2
														;EP4=INTF3
			mov		#$20,			UEP12BPR			;EP1=$1000
														;EP2=$1010
			mov		#$64,			UEP34BPR			;EP3=$1020
														;EP4=$1030
;--- BULK OUT Testing ---
;			mov		#$84,			UEP1CSR				;16byte buffer
;														;BULK OUT EP
;			mov		#$84,			UEP2CSR				;16byte buffer
;														;BULK OUT EP
;			mov		#$84,			UEP3CSR				;16byte buffer
;														;BULK OUT EP
;			mov		#$84,			UEP4CSR				;16byte buffer
;														;BULK OUT EP
;------------------------
;--- BULK IN Testing ---
;			mov		#$94,			UEP1CSR				;16byte buffer
;														;BULK IN EP
;			mov		#$94,			UEP2CSR				;16byte buffer
;														;BULK IN EP
;			mov		#$94,			UEP3CSR				;16byte buffer
;														;BULK IN EP
;			mov		#$94,			UEP4CSR				;16byte buffer
;														;BULK IN EP
;------------------------
;--- Interrupt IN Testing ---
			mov		#$d4,			UEP1CSR				;16byte buffer
														;INTERRUPT IN EP
			mov		#$d4,			UEP2CSR				;16byte buffer
														;INTERRUPT IN EP
			mov		#$d4,			UEP3CSR				;16byte buffer
														;INTERRUPT in EP																									mov		#$d4,			UEP4CSR				;16byte buffer
			mov		#$d4,			UEP4CSR				;16byte buffer
			                                            ;INTERRUPT IN EP
;----------------------------
			mov		#$0f,			USIMR				;b0,SUSPNDIEN=1
														;b1,RESUMEFIEN=1
														;b2,USBRSTIEN=1
														;b3,CONFIG_CHGIEN=1
														;b4,SOFIEN=0
														;b5,SETUPIEN=0
			mov		#$fe,			USBCR				;b0,RESUME=0
														;b1,TC0IEN=1
														;b2,TC1IEN=1
														;b3,TC2IEN=1
														;b4,TC3IEN=1
														;b5,TC4IEN=1
														;b6,USBCLKEN=1
														;b7,USEN=1
;--- IN Testing
;			ldx		#EP1_Size
;Next_Byte1:
;			lda		DataIN_1-1,		x
;			sta		EP1_Base-1,		x
;			dbnzx	Next_Byte1
;			mov		#EP1_Size,		UEP1DSR
;			bset	b_DVALID,		UEP1CSR
;--------------
;--- IN Testing
;			ldx		#EP2_Size
;Next_Byte2:
;			lda		DataIN_2-1,		x
;			sta		EP2_Base-1,		x
;			dbnzx	Next_Byte2
;			mov		#EP2_Size,		UEP2DSR
;			bset	b_DVALID,		UEP2CSR
;--------------
;--- IN Testing
;			ldx		#EP3_Size
;Next_Byte3:
;			lda		DataIN_3-1,		x
;			sta		EP3_Base-1,		x
;			dbnzx	Next_Byte3
;			mov		#EP3_Size,		UEP3DSR
;			bset	b_DVALID,		UEP3CSR
;--------------
;--- IN Testing
;			ldx		#EP4_Size
;Next_Byte4:
;			lda		DataIN_4-1,		x
;			sta		EP4_Base-1,		x
;			dbnzx	Next_Byte4
;			mov		#EP4_Size,		UEP4DSR
;			bset	b_DVALID,		UEP4CSR
;--------------
  }
  UsbIdleFlag = 1;
  USB_Status =  2;
}

//-------------------------------------------------------------------
// Delay n ms with 8MHz bus
//-------------------------------------------------------------------
void Wait_x_us_8MHz_Bus(byte Delay) {
	__asm {
					lda		Delay
					deca			;compensate for the overhead
					deca			;compensate for the overhead
				loop:
					cmp		1,SP	;(5) @8MHz
					dbnza	loop	;(3) @8MHz
	}
}

void forceSTALL(void)
{
    __asm
    {
			bset	b_EP0STALL,		USIMR
			ldx		#5
W_AGAIN:	dbnzx	W_AGAIN												;Delay 2.1us @ 8MHz
			bset	b_EP0STALL,		USIMR
    }
}

void SynchFrame(void)
{
    forceSTALL();
    UEP0CSR=0;
}

//;**************************************************************************
//;
//; USB Processor subroutine
//;
//;**************************************************************************
void getDescriptor()
{
	byte n;
	byte *dest;

	switch(SetupBuffer.wValue.hi) {

		case DT_DEVICE:			// 1 Get Device Descriptor
			SetupDataPtr = (byte *)&DeviceDesc;
			SetupSize = DeviceDesc.bLength;
			break;

		case DT_CONFIGURATION:	// 2 Get Configuration Descriptor
			SetupDataPtr = (byte *)&ConfigDesc;
			SetupSize = ConfigDesc.hid_configuration_descriptor.wTotalLength.lo;
			break;

		case DT_STRING:			// 3 Get String Descriptor
			// ### Table Index Boundary should be checked
			SetupDataPtr = StringDescTable[SetupBuffer.wValue.lo];
			SetupSize = *SetupDataPtr;
			break;

		case DT_HID:			// 0x21 Get HID Descriptor
/*
		if(SetupBuffer.wIndex.lo==0)
		{
		    SetupDataPtr = (byte *)&ConfigDesc.mouse_hid_descriptor;
			SetupSize = ConfigDesc.mouse_hid_descriptor.bLength;
		}
		else if(SetupBuffer.wIndex.lo==1)
		{
		    SetupDataPtr = (byte *)&ConfigDesc.keyboard_hid_descriptor;
			SetupSize = ConfigDesc.keyboard_hid_descriptor.bLength;
		}
		else if(SetupBuffer.wIndex.lo==2)
		{
		    SetupDataPtr = (byte *)&ConfigDesc.hid_hid_descriptor;
			SetupSize = ConfigDesc.hid_hid_descriptor.bLength;
		}
*/
		    switch(SetupBuffer.wIndex.lo)
		    {
		        case 0:
		            SetupDataPtr = (byte *)&ConfigDesc.mouse_hid_descriptor;
			        SetupSize = ConfigDesc.mouse_hid_descriptor.bLength;
		            break;
		        case 1:
		            SetupDataPtr = (byte *)&ConfigDesc.keyboard_hid_descriptor;
			        SetupSize = ConfigDesc.keyboard_hid_descriptor.bLength;
		            break;
		        case 2:
		            SetupDataPtr = (byte *)&ConfigDesc.hid_hid_descriptor;
			        SetupSize = ConfigDesc.hid_hid_descriptor.bLength;
		            break;
		        case 3:
		            SetupDataPtr = (byte *)&ConfigDesc.joystick_hid_descriptor;
			        SetupSize = ConfigDesc.joystick_hid_descriptor.bLength;
		            break;
		        case 4:
		            SetupDataPtr = (byte *)&ConfigDesc.joystick_hid_descriptor1;
			        SetupSize = ConfigDesc.joystick_hid_descriptor1.bLength;
		            break;
		        default:
        			forceSTALL();
        			break;
		    }
			break;

		case DT_REPORT:			// 0x22 Get Report Descriptor
/*
		if(SetupBuffer.wIndex.lo==0)
		{
			SetupDataPtr = (byte *)&HidReportDesc0;
			SetupSize =  ConfigDesc.mouse_hid_descriptor.wDescriptorLength.lo;
		}
		else if(SetupBuffer.wIndex.lo==1)
		{
		    SetupDataPtr = (byte *)&HidReportDesc1;
			SetupSize =  ConfigDesc.keyboard_hid_descriptor.wDescriptorLength.lo;
		}
		else if(SetupBuffer.wIndex.lo==2)
		{
		    SetupDataPtr = (byte *)&HidReportDesc2;
			SetupSize =  ConfigDesc.hid_hid_descriptor.wDescriptorLength.lo;
		}
*/
 				switch(SetupBuffer.wIndex.lo)
		    {
		        case 0:
		            SetupDataPtr = (byte *)&HidReportDesc0;
			        SetupSize =  ConfigDesc.mouse_hid_descriptor.wDescriptorLength.lo;
		            break;
		        case 1:
		            SetupDataPtr = (byte *)&HidReportDesc1;
			        SetupSize =  ConfigDesc.keyboard_hid_descriptor.wDescriptorLength.lo;
		            break;
		        case 2:
		            SetupDataPtr = (byte *)&HidReportDesc2;
			        SetupSize =  ConfigDesc.hid_hid_descriptor.wDescriptorLength.lo;
		            break;
		        case 3:
		            SetupDataPtr = (byte *)&HidReportDesc3;
			        SetupSize =  sizeof(HidReportDesc3);//ConfigDesc.joystick_hid_descriptor.wDescriptorLength.lo;
		            break;
		        case 4:
		            SetupDataPtr = (byte *)&HidReportDesc4;
			        SetupSize =  ConfigDesc.joystick_hid_descriptor1.wDescriptorLength.lo;
		            break;
		        default:
        			forceSTALL();
        			break;
		    }
			break;
		default:
			forceSTALL();
			break;
		}

	if( SetupBuffer.wValue.hi == DT_DEVICE ||
		SetupBuffer.wValue.hi == DT_CONFIGURATION ||
		SetupBuffer.wValue.hi == DT_STRING ||
		SetupBuffer.wValue.hi == DT_HID ||
		SetupBuffer.wValue.hi == DT_REPORT ){

		// check if requested Length is less than Descriptor Length
		if((SetupBuffer.wLength.lo < SetupSize) && (SetupBuffer.wLength.hi == 0))
			SetupSize = SetupBuffer.wLength.lo;
		// copy (up to) 8 Bytes to EP0 Data Registers
		n = 0;
		dest = (byte *)&UE0D0;
		while(SetupSize!=0 && n<8)
		{
			*dest = *SetupDataPtr;
			dest++;
			SetupDataPtr++;
			SetupSize--;
			n++;
        }
        UEP0CSR=    UEP0CSR_DVALID_IN_MASK+
                    (n<<4);

		// check if this is the last DATA packet to send
		if(n < 8) SetupBuffer.bRequest = REQUEST_COMPLETE;
		}

	}

BYTE handleOUT()
{
    byte i,n;
   // byte buf[9]={7,0x7f,0x7f,0x7f,0,0,0x0f,0,0};
	byte *dest;
	//halWait(2);
	if((SetupBuffer.bmRequestType & 0x60) == 0)   //Standard Device Request
	{
	   return 0;
	}
	else
	{ // feature report or vendor request.maximum length is 8 bytes
				if(UEP0CSR_DVALID_OUT==0)
				{
				    return 0;
				}
				 n=UEP0CSR>>4;
				 if(n<2)
				     return 0;
				 if(n>Out_Length||n>8)//
				 {
				 	 return 0;
				 }
				  //LED^=1  ;
			    dest =(unsigned char *)&UE0D0;
			   for(i=0;i<n;i++)
			    {
			        In_Packet[i]=*dest;
			        dest++;
			    }
			    Inlength = n;
			   APPUsbReceived();
			   UEP0CSR=UEP0CSR_DVALID_IN_MASK;
			  //UEP0CSR_DVALID_IN=1;
			   Out_Length = 0;

			//   SendUsbjkData(buf,9);
	}
	return 1;
}

void USB_Processor(void)
{
    unsigned char n;
    byte *dest;
    Status=0;                           //;Initially Software flags
    USBSR_SETUP=0;                      //;Clear SETUP flag

	SetupBuffer = *(setup_buffer *)(&UE0D0);
					// now we will check the Request Type
        if((SetupBuffer.bmRequestType & 0x60) == 0)
		{					// Standard Request Decoder:
			switch(SetupBuffer.bRequest)
			{
				case GET_DESCRIPTOR:	// 6
					getDescriptor();
					break;
			    case SYNCH_FRAME:       //12
			        SynchFrame();
			        break;
				default:
					forceSTALL();
					break;
			}
		}
		else if((SetupBuffer.bmRequestType & 0x60) == 0x20)	// class requre
		{
			switch(SetupBuffer.bRequest)
			{
				case 10:                //SET_IDLE
				    IdleRate_Table=SetupBuffer.wValue.hi;
				    UEP0CSR=UEP0CSR_DVALID_IN_MASK;//Set DValid and Data count
				    SetupBuffer.bRequest = REQUEST_COMPLETE;
				    break;
				case 11:                //Set_Proto
				    Protocol_Table=SetupBuffer.wValue.hi;
				    UEP0CSR=UEP0CSR_DVALID_IN_MASK;//Set DValid and Data count
				    SetupBuffer.bRequest = REQUEST_COMPLETE;
				    break;
				case 2:                 //Get_Idle
				    UE0D0=IdleRate_Table;
				    UEP0CSR=    UEP0CSR_DSIZE0_OUT_DSIZE0_IN_MASK+
				                UEP0CSR_DVALID_IN_MASK;
				    SetupBuffer.bRequest = REQUEST_COMPLETE;
				    break;
				case 3:                 //Get_Proto
                    UE0D0=Protocol_Table;
                    UEP0CSR=    UEP0CSR_DSIZE0_OUT_DSIZE0_IN_MASK+
				                UEP0CSR_DVALID_IN_MASK;
				    SetupBuffer.bRequest = REQUEST_COMPLETE;
				    break;
				case 9:                 //Set_Report


				    SetupBuffer.bRequest = REQUEST_COMPLETE;
				    Out_Length = SetupBuffer.wLength.lo ;
				    UEP0CSR=UEP0CSR_DVALID_IN_MASK;
				    //LED^=1  ;
                    //UEP0CSR_DVALID_OUT=0;
               // SetupBuffer.bRequest = REQUEST_COMPLETE;
				    break;
				case 1:                 //Get_Report
								 SetupBuffer.bRequest = REQUEST_COMPLETE;
								 
                usb_out[0]=0x06;
                usb_out[1]=macInfo.panId;
                usb_out[2]=macCurrentChannel;
                usb_out[3]=macWarncode;

                SetupDataPtr = (unsigned char *)usb_out;
                SetupSize = 8;//DeviceDesc.bLength;
                n = 0;
        		dest = (byte *)&UE0D0;
        		while(SetupSize!=0 && n<8)
        		{
        			*dest = *SetupDataPtr;
        			dest++;
        			SetupDataPtr++;
        			SetupSize--;
        			n++;
                }
                UEP0CSR=    UEP0CSR_DVALID_IN_MASK+
                            (n<<4);
break;
				default:
			     forceSTALL();
				    break;
      }
		}
		else if((SetupBuffer.bmRequestType & 0x60) == 0x40)	 //Vendor Request
		{
		    ;
		 //  forceSTALL();
		}
		else
		{
		   forceSTALL();		// Non-Standard Requests will not be handled!
		}

 }

void handleIN() {

	byte n;
	byte *dest;

	if((SetupBuffer.bmRequestType & 0x60) == 0)   //Standard Device Request
    {
        switch(SetupBuffer.bRequest) {
		case GET_DESCRIPTOR:
			// copy (up to) 8 Bytes to EP0 Data Registers
			n = 0;
			dest = (byte *)&UE0D0;
			while(SetupSize!=0 && n<8) {
				*dest = *SetupDataPtr;
				dest++;
				SetupDataPtr++;
				SetupSize--;
				n++;
				}
			// prepare to send n Bytes at next IN Transaction
            UEP0CSR=UEP0CSR_DVALID_IN_MASK+(n<<4);
			// check if this is the last DATA packet to send
			if(n < 8) SetupBuffer.bRequest = REQUEST_COMPLETE;
			break;
		case REQUEST_COMPLETE:

			// Request is finished - just clear the TXD0F Flag (see above)
			// and do not re-enable EP0 Transmitter, since there is no more
			// data to send
			break;
		default:
			forceSTALL();
			break;
		}
    }
    else if((SetupBuffer.bmRequestType & 0x60) == 0x20)	// class requre
		{
			if(SetupBuffer.bRequest==0x09)//set report
		    {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线综合亚洲欧美在线视频| 欧美大片一区二区三区| 91啪亚洲精品| 欧美色网一区二区| 日韩免费高清av| 国产精品青草综合久久久久99| 亚洲美女视频在线| 蜜桃一区二区三区四区| 国产成人精品亚洲午夜麻豆| 欧美男男青年gay1069videost| 日韩欧美国产综合| 一级女性全黄久久生活片免费| 久久精品av麻豆的观看方式| 91国偷自产一区二区三区观看| 中文字幕综合网| 色哟哟亚洲精品| 日韩欧美一级二级| 亚洲国产人成综合网站| 国产精品77777竹菊影视小说| 欧美色成人综合| 1区2区3区精品视频| 国产精品亚洲一区二区三区在线| 欧美日韩国产电影| 一个色妞综合视频在线观看| 成人综合婷婷国产精品久久| 欧美videos大乳护士334| 日日夜夜精品视频免费| 欧美日韩性生活| 一区二区三区精品在线观看| 91在线国内视频| 中文字幕一区二区三区不卡| 成人在线视频一区二区| 久久国产精品第一页| 欧美剧在线免费观看网站| 樱桃视频在线观看一区| 色偷偷一区二区三区| 亚洲国产视频在线| 日韩一级二级三级精品视频| 精品在线观看免费| 久久老女人爱爱| 99在线精品一区二区三区| 亚洲免费av在线| 91精品欧美福利在线观看| 麻豆精品久久精品色综合| 欧美精品一区二区在线观看| 成人av动漫网站| 亚洲一区二区三区中文字幕在线| 3d动漫精品啪啪一区二区竹菊| 日本91福利区| 亚洲美女在线国产| 在线不卡的av| 99r精品视频| 奇米影视一区二区三区| 亚洲欧洲国产日韩| 日韩一区二区精品葵司在线| gogo大胆日本视频一区| 首页国产丝袜综合| 亚洲精品国产a| 亚洲国产成人在线| 2024国产精品| 在线91免费看| 在线这里只有精品| 国产不卡一区视频| 紧缚奴在线一区二区三区| 亚洲一区二区欧美| 亚洲自拍偷拍麻豆| 日韩理论电影院| 亚洲国产精品ⅴa在线观看| 精品久久国产老人久久综合| 欧美精品第1页| 欧美一级视频精品观看| 欧美午夜精品免费| 一本大道久久a久久精二百| 99久久国产综合色|国产精品| 韩国在线一区二区| 国产综合色在线视频区| 国内精品视频666| 国产一区二区福利| 成人av资源站| 91视频观看免费| 欧美三级蜜桃2在线观看| 91成人在线免费观看| 欧美日韩夫妻久久| 欧美一区二区三区四区五区| 日韩欧美一区在线| 久久中文字幕电影| 亚洲靠逼com| 蜜臀va亚洲va欧美va天堂| 韩国一区二区在线观看| 91亚洲精品一区二区乱码| 欧美视频在线观看一区二区| 日韩亚洲欧美一区| 中文字幕在线一区免费| 亚洲蜜臀av乱码久久精品| 日韩—二三区免费观看av| 国产久卡久卡久卡久卡视频精品| 国产不卡视频在线播放| 欧美体内she精视频| 久久这里只有精品6| 亚洲精品成人精品456| 捆绑调教一区二区三区| 91福利在线免费观看| 国产欧美一区二区精品性色| 亚洲成人激情自拍| 91亚洲精品久久久蜜桃网站| 日韩女优毛片在线| 一区二区三区在线免费视频| 国产一区三区三区| 这里只有精品99re| 一级精品视频在线观看宜春院 | 国产一区二区伦理片| 欧美性色aⅴ视频一区日韩精品| 国产亚洲精品超碰| 男女男精品视频| 9191成人精品久久| 亚洲精品写真福利| 99re亚洲国产精品| 中文字幕第一区综合| 国产精品1024久久| 国产精品人人做人人爽人人添| 国产精品91一区二区| 国产日韩成人精品| 成人激情图片网| 亚洲品质自拍视频网站| 日本乱人伦aⅴ精品| 亚洲综合av网| 欧美哺乳videos| 高清不卡一二三区| 亚洲欧洲一区二区在线播放| 色婷婷av一区二区三区gif | 欧美日韩国产首页| 日韩精品五月天| 精品国产乱码久久久久久蜜臀| 精品中文字幕一区二区| 国产色91在线| 欧美在线一区二区三区| 日韩中文字幕亚洲一区二区va在线| 欧美成人video| 色欧美乱欧美15图片| 亚洲人成精品久久久久| 欧美日韩视频一区二区| 黄色小说综合网站| 亚洲图片一区二区| 久久久久久久av麻豆果冻| 欧美综合视频在线观看| 国产自产v一区二区三区c| 一区二区欧美视频| 久久综合色之久久综合| 欧美日韩中文字幕一区二区| 国产精品资源在线看| 日韩精品一二区| 亚洲黄色片在线观看| 久久精品一区二区三区四区| 欧美三级欧美一级| 日本韩国精品一区二区在线观看| 精品一区二区三区久久久| 亚洲福利视频导航| 一区二区三区在线观看动漫| 欧美一级一级性生活免费录像| 色婷婷精品大在线视频| www.成人在线| 99久久综合精品| 国产成人免费在线视频| 精品亚洲成a人| 麻豆视频一区二区| 国产最新精品免费| 国产一区二区三区在线观看免费 | 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲啪啪综合av一区二区三区| 国产精品美女久久久久高潮| 久久综合九色综合97婷婷| 日韩欧美黄色影院| 久久伊人中文字幕| 久久久久久97三级| 国产精品乱码人人做人人爱| 日本一区二区综合亚洲| 国产精品久久久久影院老司 | 欧美日韩极品在线观看一区| 91麻豆精品国产91久久久久久| 日韩一区二区在线看片| 久久精品视频在线看| 中文字幕在线不卡一区| 亚洲国产另类av| 国产乱国产乱300精品| 99riav久久精品riav| 在线播放视频一区| 久久女同互慰一区二区三区| 亚洲欧美国产77777| 日韩中文字幕亚洲一区二区va在线 | jlzzjlzz亚洲女人18| 欧美三级三级三级| 国产亚洲综合在线| 午夜精品一区二区三区三上悠亚| 精品一区在线看| 在线免费亚洲电影| 国产日韩欧美精品综合| 日本在线不卡视频一二三区| 成人国产精品免费观看动漫| 5858s免费视频成人| 中文字幕一区二区不卡 |