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

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

?? usb2.cpp

?? arm7下的USB驅動.ARM7是LPC2214
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//#include"usb_drv.h"  

#include  "config.h" 
#include  "soucehead.h" 
#include  "USB.h"  
#define CFG_NUM 32
volatile char  GenEpBuf;
//EPPFLAGS bEPPflags;/* Control endpoint TX/RX buffers */
//extern CONTROL_XFER ControlData;/* ISR static vars */
//unsigned char idata GenEpBuf[EP1_PACKET_SIZE];
//IO_REQUEST idata ioRequest;
//unsigned long ClockTicks = 0;
extern void Flash_page_read(unsigned long int flash_page_addr);
extern void Flash_page_program(unsigned long int flash_page_addr);
extern unsigned char Data_buffer[0x200];
extern void Screen_clear(void);
int x=0,y=0;
extern void  Delay100ns(long int  dly);
extern void  Delayms(long int  dly);
extern void Screen_clear();

extern void  Display_hex(unsigned char hex,unsigned int window_start_x,unsigned  int window_start_y,unsigned long int color,char times_x,char times_y);
extern volatile unsigned char       USBA0L;     
extern volatile unsigned char       USBA0H; 
extern unsigned int LCD_x_size,LCD_y_size;

extern void Display_string(char *string,unsigned int window_start_x,unsigned  int window_start_y,unsigned long int color,char times_x,char times_y);
extern void Flash_block_erase(unsigned int flash_block_addr);
extern void Flash_page_program(unsigned long int flash_page_addr);
unsigned char inquirydata[36]=
{0,0x80,02,02,
 0x1f,0,0,0,
 0x6b,0x70,0x6d,0x20,
 0x20,0x20,0x20,0x20,
 0x6b,0x70,0x6d,0x20,
 0x20,0x20,0x20,0x20,
 0x20,0x20,0x20,0x20,
 0x20,0x20,0x20,0x20,
 0x20,0x20,0x20,0x20,
};
unsigned char csw[64],cbw[31];
const char cap[8]={0,0x01,0xff,0xff,0x00,0x00,0x02,0x00};
const char fcap[12]={0,0,0,8,0,2,0,0,2,0,2,0};
const char mode[12]={0x0b,0,0,8,0,2,0,0,0,0,2,0};     
/*
inquirydata[0]=0x00;inquirydata[1]=0x80;inquirydata[2]=0x02;inquirydata[3]=0x02;
inquirydata[4]=0x1f;inquirydata[5]=inquirydata[6]=inquirydata[7]=0;
	inquirydata[8]=0x6B;inquirydata[9]=0x70;inquirydata[10]=0x6D;inquirydata[11]=0x20;
	inquirydata[12]=0x20;inquirydata[13]=0x20;inquirydata[14]=0x20;inquirydata[15]=0x20;
	inquirydata[16]=0x6B;inquirydata[17]=0x70;inquirydata[18]=0x6D;inquirydata[19]=0x20;
	inquirydata[20]=0x20;inquirydata[21]=0x20;inquirydata[22]=0x20;inquirydata[23]=0x20;
	inquirydata[24]=0x20;inquirydata[25]=0x20;inquirydata[26]=0x20;inquirydata[27]=0x20;
	inquirydata[28]=0x20;inquirydata[29]=0x20;inquirydata[30]=0x20;inquirydata[31]=0x20;
	inquirydata[32]=0x20;inquirydata[33]=0x20;inquirydata[34]=0x20;inquirydata[35]=0x20;	*/
extern volatile unsigned  char receive_buffer[0x8000];

unsigned long int count=0,count1=0;
unsigned long int block_addr,block_addr_old;
unsigned long int trans_start_page,flash_page_start;
unsigned int trans_num;
unsigned char USB;
	

void Read_Flash_PAG0()
{
 	Flash_page_read(0);
 	/*unsigned int i;
 	for(i=0;i<512;i++)
 	Data_buffer[i]=i&0xff;
 	*/
}

void Outport_command(unsigned char val)
{
	USBA0H=val;
	Delay100ns(5);
}
void Outport_data(unsigned char val)
{
	USBA0L=val;
	Delay100ns(5);
}
unsigned char Inport_data(void)
{
	unsigned char c;
	c=USBA0L;
	Delay100ns(5);
	return c;
}

void D12_SetAddressEnable(unsigned char bAddress, unsigned char bEnable)
{
	if(bEPPflags.bits.in_isr == 0)	DISABLE;
	Outport_command( 0xD0);
	if(bEnable)		bAddress |= 0x80;
	Outport_data( bAddress);
	if(bEPPflags.bits.in_isr == 0)	ENABLE;
}

void D12_SetEndpointEnable(unsigned char bEnable)
{
	if(bEPPflags.bits.in_isr == 0)	DISABLE;
	Outport_command( 0xD8);
	if(bEnable)		Outport_data( 1);
	else	Outport_data( 0);
	if(bEPPflags.bits.in_isr == 0)	ENABLE;
}

void D12_SetMode(unsigned char bConfig, unsigned char bClkDiv)
{
	if(bEPPflags.bits.in_isr == 0)	DISABLE;
	Outport_command( 0xF3);
	Outport_data( bConfig);
	Outport_data( bClkDiv);
	if(bEPPflags.bits.in_isr == 0)	ENABLE;
}
void D12_SetDMA(unsigned char bMode)
{
	if(bEPPflags.bits.in_isr == 0)	DISABLE;
	Outport_command( 0xFB);
	Outport_data( bMode);
	if(bEPPflags.bits.in_isr == 0)	ENABLE;
}
unsigned short D12_ReadInterruptRegister(void)
{
	unsigned char b1;
	unsigned int j;
	Outport_command( 0xF4);
	b1 = Inport_data();Delay100ns(1);
	j = Inport_data();
	j <<= 8;
	j += b1;
	return j;
}

unsigned char D12_SelectEndpoint(unsigned char bEndp)
{
	unsigned char c;
	if(bEPPflags.bits.in_isr == 0)	DISABLE;
	Outport_command( bEndp);
	c = Inport_data();
	if(bEPPflags.bits.in_isr == 0)	ENABLE;
	return c;
}

unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
{
	Outport_command( 0x40 + bEndp);
	return Inport_data();
}

unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
{
	unsigned char c;
	if(bEPPflags.bits.in_isr == 0)	DISABLE;
	Outport_command( 0x80 + bEndp);
	c = Inport_data();
	if(bEPPflags.bits.in_isr == 0)	ENABLE;
	return c;
}

void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)
{
	if(bEPPflags.bits.in_isr == 0)	DISABLE;
	Outport_command( 0x40 + bEndp);
	Outport_data( bStalled);
	if(bEPPflags.bits.in_isr == 0)	ENABLE;
}
void D12_SendResume(void)
{
	Outport_command( 0xF6);
}
unsigned short D12_ReadCurrentFrameNumber(void)
{
	unsigned short i,j;
	if(bEPPflags.bits.in_isr == 0)	DISABLE;
	Outport_command( 0xF5);
	i= Inport_data();
	j = Inport_data();
	i += (j<<8);
	if(bEPPflags.bits.in_isr == 0)	ENABLE;
	return i;
}

unsigned short D12_ReadChipID(void)
{
	unsigned short i,j;
	if(bEPPflags.bits.in_isr == 0)	DISABLE;
	Outport_command( 0xFD);
	i=Inport_data();
	j=Inport_data();
	i += (j<<8);
	if(bEPPflags.bits.in_isr == 0)ENABLE;
	return i;
}

unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char * buf, unsigned char len)
{
	unsigned char i, j;
	if(bEPPflags.bits.in_isr == 0)	DISABLE;
	Outport_command( endp);
	if((Inport_data() & D12_FULLEMPTY) == 0) 
	{
		if(bEPPflags.bits.in_isr == 0)	ENABLE;
		return 0;
	}
	Outport_command( 0xF0);
	j = Inport_data();
	j = Inport_data();
	if(j > len)	j = len;
	for(i=0; i<j; i++)
	*(buf+i) = Inport_data();
	Outport_command( 0xF2);
	if(bEPPflags.bits.in_isr == 0)	ENABLE;
	return j;
}

// D12_ReadMainEndpoint() added by V2_2 to support double-buffering_
// Caller should assume maxium 128 bytes of returned data_
unsigned char D12_ReadMainEndpoint(unsigned char * buf)
{
	unsigned char i, j, k = 0, bDblBuf = 1;
	if(bEPPflags.bits.in_isr == 0)	DISABLE;
	Outport_command( 0x84);
	if( (Inport_data() & 0x60) == 0x60)	bDblBuf = 2;
	while(bDblBuf) 
	{
		Outport_command( 4);
		if((Inport_data() & D12_FULLEMPTY) == 0)	break;
		Outport_command( 0xF0);
		j = Inport_data();
		j = Inport_data();
		for(i=0; i<j; i++)
		*(buf+i+k) = Inport_data();
		k += j;
		Outport_command( 0xF2);
		bDblBuf --;
	}
	if(bEPPflags.bits.in_isr == 0)	ENABLE;
	return k;
}

unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char * buf, unsigned char len)
{
	unsigned char i;
	if(bEPPflags.bits.in_isr == 0)	DISABLE;
	Outport_command(endp);
	Inport_data();
	Outport_command( 0xF0);
	Outport_data( 0);
	Outport_data( len);
	for(i=0; i<len; i++)
	Outport_data( *(buf+i));
	Outport_command( 0xFA);
	if(bEPPflags.bits.in_isr == 0)
	ENABLE;
	return len;
}

void D12_AcknowledgeEndpoint(unsigned char endp)
{
	Outport_command( endp);
	Outport_command( 0xF1);
	if(endp == 0)	Outport_command( 0xF2);
}


const char  DeviceDescr[] =//USB_DEVICE_DESCRIPTOR
{
	0x12,
	0x01,
	0x10,0x01,
	0x00 ,
	0, 0,
	0x10,
	0x71,0x04,//SWAP(0x0471),
	0x28,0x02,//SWAP(0x0222),
	0x00,0x01,//SWAP(0x0100),
	0, 0, 0,
	1
};


const char ConfigDescr[] =//USB_CONFIGURATION_DESCRIPTOR
{
	9,
	02,
	CFG_NUM,0,
	1,
	1,
	0,
	0x80,
	0x32,
	9,
	0x04,
	0,
	0,
	2,
	8,
	0x06,
	0x50,
	0,
	7,
	0x05,
	0x81,
	2,
	64,0,
	01,
	6,
	0x05,
	0x02,
	2,
	64,0,
	1,
	
};

void suspend_change(void)
{
}
void stall_ep0(void)
{
	D12_SetEndpointStatus(0, 1);
	D12_SetEndpointStatus(1, 1);
}

void single_transmit(unsigned char * buf, unsigned char len)
{
	if( len <= EP0_PACKET_SIZE) {
	D12_WriteEndpoint(1, buf, len);}
}
void init_unconfig(void)
{
	
	D12_SetEndpointEnable(0); /* Disable all endpoints but EPP0. */
}
void init_config(void)
{
	D12_SetEndpointEnable(1); /* Enable generic/iso endpoints. */
}

void setup_dma()
{
	
}

void code_transmit(unsigned char  * pRomData, unsigned short len)
{
	ControlData.wCount = 0;
	if(ControlData.wLength > len)	ControlData.wLength = len;
	ControlData.pData = pRomData;
	if( ControlData.wLength >= EP0_PACKET_SIZE)
	{
		D12_WriteEndpoint(1, ControlData.pData, EP0_PACKET_SIZE);
		ControlData.wCount += EP0_PACKET_SIZE;
		DISABLE;
		bEPPflags.bits.control_state = USB_TRANSMIT;
		ENABLE;
	}
	else 
	{
		D12_WriteEndpoint(1, pRomData, ControlData.wLength);
		ControlData.wCount += ControlData.wLength;
		DISABLE;
		bEPPflags.bits.control_state = USB_IDLE;
		ENABLE;
	}
	
}

void CSW_transmit(unsigned char  * pRomData, unsigned short len)
{
	unsigned int index=0,L;
	unsigned char i;
	ControlData.pData = pRomData;
	L=len;
	while(L>64)
	{	
		
		D12_WriteEndpoint(3, (ControlData.pData+index*64), 64);
		index++;
		L-=64;
		rr:	Outport_command(3);
	 	i=Inport_data();	
  		if(i!=0){goto rr;}
	}
	if(L!=0)
	D12_WriteEndpoint(3, (ControlData.pData+index*64), L);
	
}
void reserved(void)
{
	stall_ep0();
}

void get_status(void)
{
	unsigned char endp, txdat[2];
	unsigned char bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;
	unsigned char c;
	if (bRecipient == USB_RECIPIENT_DEVICE) 
	{
		if(bEPPflags.bits.remote_wakeup == 1)	txdat[0] = 3;
		else	txdat[0] = 1;
		txdat[1]=0;
		single_transmit(txdat, 2);
	} 
	else if (bRecipient == USB_RECIPIENT_INTERFACE) 
	{
		txdat[0]=0;
		txdat[1]=0;
		single_transmit(txdat, 2);
	}
	else if (bRecipient == USB_RECIPIENT_ENDPOINT) 
	{
		endp = (unsigned char)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
		if (ControlData.DeviceRequest.wIndex & (unsigned char)USB_ENDPOINT_DIRECTION_MASK)	c = D12_SelectEndpoint(endp*2 + 1); /* Control-in */
		else	c = D12_SelectEndpoint(endp*2); /* Control-out */
		if(c & D12_STALL)	txdat[0] = 1;
		else	txdat[0] = 0;
		txdat[1] = 0;
		single_transmit(txdat, 2);
	} 
	else	stall_ep0();
}

void clear_feature(void)
{
	unsigned char endp;
	unsigned char bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;
	if (bRecipient == USB_RECIPIENT_DEVICE&& ControlData.DeviceRequest.wValue == USB_FEATURE_REMOTE_WAKEUP) 
	{
		DISABLE;
		bEPPflags.bits.remote_wakeup = 0;
		ENABLE;
		single_transmit(0, 0);
	}
	else if (bRecipient == USB_RECIPIENT_ENDPOINT&& ControlData.DeviceRequest.wValue == USB_FEATURE_ENDPOINT_STALL) 
	{
		endp = (unsigned char)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
		if (ControlData.DeviceRequest.wIndex & (unsigned char)USB_ENDPOINT_DIRECTION_MASK)	D12_SetEndpointStatus(endp*2 + 1, 0);/* clear TX stall for IN on EPn_ */
		else	D12_SetEndpointStatus(endp*2, 0);	/* clear RX stall for OUT on EPn_ */
		single_transmit(0, 0);
	}
	else	stall_ep0();
}

void set_feature(void)
{
	unsigned char endp;
	unsigned char bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;
	if (bRecipient == USB_RECIPIENT_DEVICE&& ControlData.DeviceRequest.wValue == USB_FEATURE_REMOTE_WAKEUP) 
	{
		DISABLE;
		bEPPflags.bits.remote_wakeup = 1;
		ENABLE;
		single_transmit(0, 0);
	}
	else if (bRecipient == USB_RECIPIENT_ENDPOINT&& ControlData.DeviceRequest.wValue == USB_FEATURE_ENDPOINT_STALL) 
	{
		endp = (unsigned char)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
		if (ControlData.DeviceRequest.wIndex & (unsigned char)USB_ENDPOINT_DIRECTION_MASK)	D12_SetEndpointStatus(endp*2 + 1, 1);/* clear TX stall for IN on EPn_ */
		else	D12_SetEndpointStatus(endp*2, 1);/* clear RX stall for OUT on EPn_ */
		single_transmit(0, 0);
	} 
	else	stall_ep0();
}

void set_address(void)
{

	D12_SetAddressEnable((unsigned char)(ControlData.DeviceRequest.wValue &	DEVICE_ADDRESS_MASK), 1);
	single_transmit(0, 0);
}

void get_descriptor(void)
{
	unsigned char bDescriptor =(ControlData.DeviceRequest.wValue>>8);
	if (bDescriptor == USB_DEVICE_DESCRIPTOR_TYPE) 
	{
		code_transmit((unsigned char  *)&DeviceDescr, 18);
	} 
	else if (bDescriptor == USB_CONFIGURATION_DESCRIPTOR_TYPE) 
	{
		code_transmit((unsigned char  *)&ConfigDescr, CFG_NUM);
	} 

}

void get_configuration(void)
{
	unsigned char c = bEPPflags.bits.configuration;
	single_transmit(&c, 1);
}

void set_configuration(void)
{
	if (ControlData.DeviceRequest.wValue == 0)/* put device in unconfigured state */ 
	{
		single_transmit(0, 0);
		DISABLE;
		bEPPflags.bits.configuration = 0;
		ENABLE;
		init_unconfig();
	} 
	else if (ControlData.DeviceRequest.wValue == 1) /* Configure device */
	{
		single_transmit(0, 0);
		init_unconfig();
		init_config();
		DISABLE;
		bEPPflags.bits.configuration = 1;
		ENABLE;
	} 
	else	stall_ep0();
}

void get_interface(void)
{
	unsigned char txdat = 0; /* Only/Current interface = 0 */
	single_transmit(&txdat, 1);
}

void set_interface(void)
{
	if (ControlData.DeviceRequest.wValue == 0 && ControlData.DeviceRequest.wIndex == 0)	single_transmit(0, 0);
	else	stall_ep0();
}

void self_oprate()
{
	
	single_transmit(0, 0);
}


void (*StandardDeviceRequest[])(void) =
{
get_status,
clear_feature,
reserved,
set_feature,
reserved,
set_address,
get_descriptor,
reserved,
get_configuration,
set_configuration,
get_interface,
set_interface,
reserved,
reserved,
reserved,
reserved
};
void (*VendorDeviceRequest[])(void) =
{
self_oprate,
reserved,
reserved,
reserved,
reserved,
reserved,
reserved,
reserved,
reserved,
reserved,
reserved,
reserved,
//read_write_register,
reserved,
reserved,
reserved
};

void control_handler()
{
	unsigned char type, req;
	
	if(ControlData.DeviceRequest.bmRequestType==0xa1)
	{
	 if(bEPPflags.bits.in_isr == 0)	DISABLE;
	Outport_command(1);
	Inport_data();
	Outport_command( 0xF0);
	Outport_data( 0);
	Outport_data( 1);
	//for(i=0; i<len; i++)
	Outport_data(0);
	Outport_command( 0xFA);
	Outport_command(0xf2);
	if(bEPPflags.bits.in_isr == 0)
	ENABLE;
	
	//stall_ep0();
	}	
	else
	{	
	type = ControlData.DeviceRequest.bmRequestType & USB_REQUEST_TYPE_MASK;
	req = ControlData.DeviceRequest.bRequest & USB_REQUEST_MASK;
	//help_devreq(type, req); // print out device request
	if (type == USB_STANDARD_REQUEST) 		(*StandardDeviceRequest[req])();
	else if (type == USB_VENDOR_REQUEST)	(*VendorDeviceRequest[req])();
	else
	stall_ep0();}
	//end:  ;
}





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图另类专区| 成人午夜视频在线| 在线观看欧美黄色| 中文字幕中文字幕一区| 国产盗摄精品一区二区三区在线 | 97久久久精品综合88久久| 精品成a人在线观看| 日本不卡免费在线视频| 91精品国产91久久综合桃花| 青草av.久久免费一区| 在线观看国产一区二区| 一区二区三区在线视频免费| 色综合天天综合狠狠| 一区二区三区在线观看网站| 在线观看免费成人| 热久久国产精品| 国产午夜精品久久久久久久 | 国产欧美精品区一区二区三区| 国产综合久久久久久久久久久久| 精品99一区二区| 99精品国产一区二区三区不卡| 亚洲精品日韩综合观看成人91| 337p亚洲精品色噜噜噜| 亚洲综合清纯丝袜自拍| jiyouzz国产精品久久| 亚洲综合色婷婷| 精品99久久久久久| 欧美自拍偷拍午夜视频| 精品在线视频一区| 亚洲码国产岛国毛片在线| 欧美一级二级三级乱码| 成人禁用看黄a在线| 日韩精品三区四区| 国产精品视频在线看| 欧美一区二区三区免费视频| 99久久99久久精品免费观看 | 婷婷开心激情综合| 国产欧美日韩亚州综合| 在线观看91精品国产麻豆| 在线看日本不卡| 免费一级欧美片在线观看| 亚洲人精品午夜| 久久久久久久久久美女| 日韩亚洲欧美在线观看| 91国模大尺度私拍在线视频| 懂色av中文字幕一区二区三区| 亚洲成人你懂的| 亚洲精品国产一区二区精华液| 精品久久99ma| 精品欧美乱码久久久久久| 欧美一级一级性生活免费录像| 欧美影视一区二区三区| fc2成人免费人成在线观看播放 | 亚洲激情自拍偷拍| 亚洲色图一区二区| 一区二区国产视频| 亚洲综合色噜噜狠狠| 亚洲不卡av一区二区三区| 五月天激情综合| 紧缚奴在线一区二区三区| 久久99国产精品久久99果冻传媒| 日本最新不卡在线| 国内精品国产成人国产三级粉色 | 高清不卡在线观看| 国内精品写真在线观看| 不卡影院免费观看| 欧美亚洲综合色| 精品国产免费一区二区三区四区 | 东方aⅴ免费观看久久av| av电影在线不卡| 欧美日韩一区高清| 久久精品视频一区| 一区二区三区日韩| 久久精品国产第一区二区三区| 国产成人精品1024| 欧美三级视频在线播放| 国产亚洲人成网站| 一片黄亚洲嫩模| 国产精品91xxx| 91麻豆精品国产91久久久久| 国产精品国产三级国产普通话蜜臀| 亚洲三级在线观看| 国产91精品精华液一区二区三区 | 久久久亚洲精品石原莉奈| 亚洲欧美另类久久久精品| 黑人巨大精品欧美一区| 91行情网站电视在线观看高清版| 久久久国产一区二区三区四区小说| 一区二区三区四区精品在线视频| 国产99久久久国产精品免费看| 欧美日韩情趣电影| 亚洲精品视频在线| 成人免费黄色在线| 欧美精品一区二区三区视频| 日日骚欧美日韩| 91啦中文在线观看| 悠悠色在线精品| 色婷婷狠狠综合| 一区二区高清免费观看影视大全| 欧美夫妻性生活| 亚洲在线视频一区| 韩国成人在线视频| 欧美日韩一区二区在线观看视频 | 色噜噜夜夜夜综合网| 国产精品国产三级国产| 大陆成人av片| 亚洲一区二区三区自拍| 欧美日韩一级片在线观看| 欧美a一区二区| 久久色在线视频| 99视频一区二区三区| 亚洲精品亚洲人成人网| 欧美日韩dvd在线观看| 日精品一区二区| 中文字幕欧美国产| 91国模大尺度私拍在线视频| 青草国产精品久久久久久| 久久久久久黄色| 色网综合在线观看| 久久精品噜噜噜成人88aⅴ| 国产精品污网站| 91麻豆精品国产91久久久使用方法 | 亚洲美女视频在线观看| 制服视频三区第一页精品| 国产成人av一区二区三区在线观看| 成人免费视频在线观看| 在线不卡a资源高清| 国产成人综合亚洲网站| 亚洲一区二区不卡免费| 日本一区二区免费在线| 欧美日韩国产乱码电影| 欧美三级一区二区| 风间由美性色一区二区三区| 亚洲综合成人在线| 日本一区二区成人| 日韩免费电影网站| 欧美日韩精品三区| 在线影院国内精品| 波多野结衣在线一区| 国产精品一区二区不卡| 日本不卡在线视频| 婷婷综合另类小说色区| 中文字幕亚洲一区二区av在线 | 51午夜精品国产| 色综合久久66| 欧美午夜理伦三级在线观看| 成人黄色av网站在线| 成人av网址在线| 懂色中文一区二区在线播放| 国产美女在线观看一区| 国模一区二区三区白浆| 国产在线精品不卡| 国产一区二区毛片| 国产毛片精品视频| 国产精品888| 色女孩综合影院| 欧美日韩中文另类| 欧美一区二区在线视频| 日韩欧美一级特黄在线播放| 欧美成人精品1314www| 国产欧美日韩三级| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲精品国产一区二区三区四区在线| 日本成人中文字幕在线视频| 午夜亚洲福利老司机| 免费在线观看一区| 成人午夜av影视| 欧美亚洲国产一区在线观看网站| 欧美日韩成人综合在线一区二区| 91精品国产综合久久小美女| 国产日产亚洲精品系列| 一区二区视频免费在线观看| 另类小说图片综合网| 99精品视频一区二区三区| 欧美福利视频导航| 亚洲青青青在线视频| 日本不卡一二三| 色国产综合视频| 国产亚洲欧美一区在线观看| 亚洲国产视频一区二区| 国产精品一区在线观看乱码| 91久久精品网| 亚洲国产高清在线观看视频| 日本系列欧美系列| 欧美性猛交xxxx黑人交| 国产日本欧美一区二区| 久久国产精品99精品国产 | 日韩亚洲欧美一区| 亚洲另类中文字| 色哟哟国产精品免费观看| 亚洲欧美怡红院| 99久久综合狠狠综合久久| 国产亚洲欧美日韩在线一区| 久久99久久99| 日韩精品专区在线影院重磅| 亚洲成av人影院| 欧美三区免费完整视频在线观看| 欧美福利视频导航| 中文一区二区完整视频在线观看 | 国产精品久久久久aaaa樱花 |