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

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

?? usb_main.c

?? PDIUSBD12與51接口的固件KEIL6.23調試通過
?? C
?? 第 1 頁 / 共 2 頁
字號:
		ENABLE;
}



//void D12_SendResume(void)
//{
// outportcmd(0xF6);
//}


unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char len, unsigned char * buf)
{
	unsigned char i;

	if(bEPPflags.bits.in_isr == 0)
		DISABLE;
	//---------------------
	outportcmd(endp);	//選擇端點
	inportb();		//讀入滿/空狀態

	outportcmd(0xF0);	//寫緩沖區命令
	outportdata(0);
	outportdata(len);

	for(i=0; i<len; i++)
		outportdata(*(buf+i));

	outportcmd(0xFA);	//駛購沖區有效

	//--------------------------------
	if(bEPPflags.bits.in_isr == 0)
		ENABLE;

	return len;
}
void D12_AcknowledgeEndpoint(unsigned char endp)
{
	outportcmd( endp);	//選擇端點
	outportcmd(0xF1);	//應答設置
	if(endp == 0)
		outportcmd(0xF2);	//緩沖區清零
}
unsigned char D12_ReadInterruptRegister(void)
{
	unsigned char b1;
	unsigned int j;
	j=0;
	//outportb(D12_COMMAND, 0xF4);
	outportcmd(0xF4);
	b1 = inportb();
	j = inportb();
	return b1;
	//j = inportb();
	//j <<= 8;
	//j += b1;
	//return j;
}

unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
{
	//outportb(D12_COMMAND, 0x40 + bEndp);
	outportcmd(0x40 + bEndp);
	return inportb();
}
unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char len, unsigned char * buf)
{
	unsigned char i, j;

	if(bEPPflags.bits.in_isr == 0)
		DISABLE;
	//--------------------------------
	outportcmd(endp);			//選擇端點
	if((inportb() & D12_FULLEMPTY) == 0) {	//如果緩沖區為空,則返回
		if(bEPPflags.bits.in_isr == 0)
			ENABLE;
		return 0;
	}

	outportcmd(0xF0);			//讀緩沖區
	j = inportb();
	j = inportb();

	if(j > len)
		j = len;

	for(i=0; i<j; i++)
		*(buf+i) = inportb();

	outportcmd(0xF2);				//緩沖區清空
	//-------------------------------
	if(bEPPflags.bits.in_isr == 0)
		ENABLE;

	return j;
}

unsigned char D12_SelectEndpoint(unsigned char bEndp)
{
	unsigned char c;

	if(bEPPflags.bits.in_isr == 0)
		DISABLE;

	outportcmd(bEndp);
	c = inportb();

	if(bEPPflags.bits.in_isr == 0)
		ENABLE;

	return c;
}

//P57命令接口-D12CI.C  ----結束
//===============================================================
//===============================================================


//P61中斷服務程序-ISR.C
//===============================================================
//===============================================================


void bus_reset(void)
{
}
//void dma_eot(void)
//{
//}
//---------------------------------
void ep0_rxdone(void)
{
	unsigned char ep_last, i;

	ep_last = D12_ReadLastTransactionStatus(0); // Clear interrupt flag
	if (ep_last & D12_SETUPPACKET) {

		ControlData.wLength = 0;
		ControlData.wCount = 0;
	//判斷端點是否滿,如是,則取出
		if( D12_ReadEndpoint(0, sizeof(ControlData.DeviceRequest),
			(unsigned char *)(&(ControlData.DeviceRequest))) != sizeof(DEVICE_REQUEST) ) {

			D12_SetEndpointStatus(0, 1);
			D12_SetEndpointStatus(1, 1);
			bEPPflags.bits.control_state = USB_IDLE;

			return;
		}

		ControlData.DeviceRequest.wValue = SWAP(ControlData.DeviceRequest.wValue);
		ControlData.DeviceRequest.wIndex = SWAP(ControlData.DeviceRequest.wIndex);
		ControlData.DeviceRequest.wLength = SWAP(ControlData.DeviceRequest.wLength);

		// Acknowledge setup here to unlock in/out endp
	//向控制輸出端點發送應答建立命令以重新使能下一個建立階段
		D12_AcknowledgeEndpoint(0);
		D12_AcknowledgeEndpoint(1);

		ControlData.wLength = ControlData.DeviceRequest.wLength;
		ControlData.wCount = 0;
	//需要證實控制傳輸是控制讀還是寫,如果是讀:
	//如果控制傳輸是一個控制讀類型那就是說器件需要在下一個數據階段向
	//主機發回數據包.MCU需要設置一個標志以指示USB 設備現在正處于傳輸
	//模式即準備在主機發送請求時發送數據

		if (ControlData.DeviceRequest.bmRequestType & (unsigned char)USB_ENDPOINT_DIRECTION_MASK) {
			bEPPflags.bits.setup_packet = 1;
			bEPPflags.bits.control_state = USB_IDLE;		/* get command */
		    }
	//如果是寫
		else {
			if (ControlData.DeviceRequest.wLength == 0) {
				bEPPflags.bits.setup_packet = 1;
				bEPPflags.bits.control_state = USB_IDLE;		/* set command */
			     }
			else {
				if(ControlData.DeviceRequest.wLength > MAX_CONTROLDATA_SIZE) {
					bEPPflags.bits.control_state = USB_IDLE;
					D12_SetEndpointStatus(0, 1);
					D12_SetEndpointStatus(1, 1);
				        }
				else {
					bEPPflags.bits.control_state = USB_RECEIVE;	/* set command with OUT token */
				      }
			     } // set command with data
		      } // else set command
	   } // if setup packet

	else if (bEPPflags.bits.control_state == USB_RECEIVE) {
		i =	D12_ReadEndpoint(0, EP0_PACKET_SIZE,
			ControlData.dataBuffer + ControlData.wCount);

		ControlData.wCount += i;
		if( i != EP0_PACKET_SIZE || ControlData.wCount >= ControlData.wLength) {
			bEPPflags.bits.setup_packet = 1;
			bEPPflags.bits.control_state = USB_IDLE;
		}
	}

	else {
		bEPPflags.bits.control_state = USB_IDLE;
	}

}
//----------------------------------
void ep0_txdone(void)
{
	short i = ControlData.wLength - ControlData.wCount;

	D12_ReadLastTransactionStatus(1); // Clear interrupt flag

	if (bEPPflags.bits.control_state != USB_TRANSMIT)
		return;
	//-------------------------
	if( i >= EP0_PACKET_SIZE) {
		D12_WriteEndpoint(1, EP0_PACKET_SIZE, ControlData.pData + ControlData.wCount);
		ControlData.wCount += EP0_PACKET_SIZE;

		bEPPflags.bits.control_state = USB_TRANSMIT;
	}
	else if( i != 0) {
		D12_WriteEndpoint(1, i, ControlData.pData + ControlData.wCount);
		ControlData.wCount += i;

		bEPPflags.bits.control_state = USB_IDLE;
	}
	else if (i == 0){
		D12_WriteEndpoint(1, 0, 0); // Send zero packet at the end ???

		bEPPflags.bits.control_state = USB_IDLE;
	}

}
//----------------------------------
void ep1_txdone(void)
{
	D12_ReadLastTransactionStatus(3); /* Clear interrupt flag */
}

void ep1_rxdone(void)
{
	unsigned char len;

	D12_ReadLastTransactionStatus(2); /* Clear interrupt flag */

	len = D12_ReadEndpoint(2, sizeof(GenEpBuf), GenEpBuf);

	if(len != 0)
		bEPPflags.bits.ep1_rxdone = 1;
}
//---------------------------------
void main_txdone(void)
{
	unsigned char len;

	D12_ReadLastTransactionStatus(5); /* Clear interrupt flag */

	len = ioSize - ioCount;
	if(len == 0) {
		if(bEPPflags.bits.dma_state == DMA_PENDING)
			bEPPflags.bits.setup_dma ++;
		else
			bEPPflags.bits.dma_state = DMA_IDLE;
	}
	else {
		if(len > 64)
			len = 64;
		if(bNoRAM)
			len = D12_WriteEndpoint(5, len, EpBuf + ioCount);
		else
			len = D12_WriteEndpoint(5, len, MainEpBuf + ioCount);
		ioCount += len;
	}
}

void main_rxdone(void)
{
	unsigned char len;

	D12_ReadLastTransactionStatus(4); /* Clear interrupt flag */

	if(bNoRAM)
		len = D12_ReadEndpoint(4, 64, EpBuf + ioCount);
	else
		len = D12_ReadEndpoint(4, 64, MainEpBuf + ioCount);
	ioCount += len;
	if(bNoRAM)
		len = D12_ReadEndpoint(4, 64, EpBuf + ioCount);
	else
		len = D12_ReadEndpoint(4, 64, MainEpBuf + ioCount);
	ioCount += len;
	if(ioCount >= ioSize) {
		if(bEPPflags.bits.dma_state == DMA_PENDING)
			bEPPflags.bits.setup_dma ++;
		else
			bEPPflags.bits.dma_state = DMA_IDLE;
	}

}
//P61中斷服務程序-ISR.C  ----結束
//===============================================================
//===============================================================

//P70標準設備請求函數-CHAP_9.C
//===============================================================
//===============================================================

void reserved(void)
{
	stall_ep0();
}

/*
   //*************************************************************************
   // USB standard device requests
   //*************************************************************************
*/

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)
			// clear TX stall for IN on EPn.
			D12_SetEndpointStatus(endp*2 + 1, 0);
		else
			// clear RX stall for OUT on EPn.
			D12_SetEndpointStatus(endp*2, 0);
		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)
			// clear TX stall for IN on EPn.
			D12_SetEndpointStatus(endp*2 + 1, 1);
		else
			// clear RX stall for OUT on EPn.
			D12_SetEndpointStatus(endp*2, 1);
		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 = MSB(ControlData.DeviceRequest.wValue);

	if (bDescriptor == USB_DEVICE_DESCRIPTOR_TYPE) {
		code_transmit((unsigned char code *)&DeviceDescr, sizeof(USB_DEVICE_DESCRIPTOR));
	}
	else if (bDescriptor == USB_CONFIGURATION_DESCRIPTOR_TYPE) {
		code_transmit((unsigned char code *)&ConfigDescr, CONFIG_DESCRIPTOR_LENGTH);
	}
	else
		stall_ep0();
}

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();
}
//P70標準設備請求函數-CHAP_9.C  ----結束
//===============================================================
//===============================================================

//P81廠商請求函數-PROTODMA.C
//===============================================================
//===============================================================
void get_firmware_version()
{
	unsigned char i;

	i = 0x30; // firmware version number
	single_transmit((unsigned char *)&i, 1);

}

void get_buffer_size()
{
	unsigned char i[4];

	if(bNoRAM == TRUE) {
		i[0] = EP2_PACKET_SIZE;
		i[1] = 0;
		i[2] = 0;
		i[3] = 0;
	} else {
		i[0] = 0;
		i[1] = 1;
		i[2] = 0;
		i[3] = 0;
	}
	single_transmit(i, 4);

}

void setup_dma_request()
{
	memcpy((unsigned char *)&ioRequest + ControlData.DeviceRequest.wValue,
		ControlData.dataBuffer,
		ControlData.DeviceRequest.wLength);

	ioRequest.uSize = SWAP(ioRequest.uSize);
	ioRequest.uAddressL = SWAP(ioRequest.uAddressL);

	if(ioRequest.uSize > DMA_BUFFER_SIZE) { // Unaccepted request
		stall_ep0();
	}
	else if(bNoRAM == TRUE && ioRequest.uSize > EP2_PACKET_SIZE) {
		stall_ep0();
	}
	else {
		if(bEPPflags.bits.dma_state == DMA_IDLE) {
			DISABLE;
			bEPPflags.bits.setup_dma ++;
			ENABLE;
		}
		else {
			DISABLE;
			bEPPflags.bits.dma_state = DMA_PENDING;
			ENABLE;
		}

	} // else if accepted request
}

void read_write_register(void)
{
	unsigned char i;

	if(ControlData.DeviceRequest.bmRequestType & (unsigned char)USB_ENDPOINT_DIRECTION_MASK) {

		if(bEPPflags.bits.verbose)
			printf("Read Registers: Offset = 0x%x, Length = 0x%x, Index = 0x%x.\n",
				ControlData.DeviceRequest.wValue,
				ControlData.DeviceRequest.wLength,
				ControlData.DeviceRequest.wIndex);

		if(ControlData.DeviceRequest.wIndex == GET_FIRMWARE_VERSION &&
			ControlData.DeviceRequest.wValue == 0 &&
			ControlData.DeviceRequest.wLength == 1)
			get_firmware_version();
		else
		if(ControlData.DeviceRequest.wIndex == GET_BUFFER_SIZE &&
			ControlData.DeviceRequest.wValue == 0 &&
			ControlData.DeviceRequest.wLength == 4)
			get_buffer_size();
		else
			stall_ep0();

	}	// if read register
	else{
		if(bEPPflags.bits.verbose) {

			//printf("Write Registers: Offset = 0x%x, Length = 0x%x, Index = 0x%x.\n",
			//	ControlData.DeviceRequest.wValue,
			//	ControlData.DeviceRequest.wLength,
			//	ControlData.DeviceRequest.wIndex);

			//printf("Data: ");
			for(i = 0; i < ControlData.DeviceRequest.wLength; i ++)
				printf("0x%bx, ", *((ControlData.dataBuffer)+i));
			printf("\n");
		}

		if(ControlData.DeviceRequest.wIndex == SETUP_DMA_REQUEST &&
			ControlData.DeviceRequest.wValue == 0 &&
			ControlData.DeviceRequest.wLength == 6)
			setup_dma_request();
			//stall_ep0();
		else
			stall_ep0();
	}	// if write register
}
//P81廠商請求函數-PROTODMA.C  ----結束
//===============================================================
//===============================================================

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区三区在线看蜜臀 | 国产欧美日韩亚州综合| 国产精品不卡在线观看| 日韩成人一区二区三区在线观看| 国产成人aaa| 欧美r级电影在线观看| 亚洲欧美区自拍先锋| 黄网站免费久久| 777亚洲妇女| 亚洲影院免费观看| 99久久精品免费精品国产| 精品国产乱码久久久久久久| 亚洲激情在线激情| 北条麻妃国产九九精品视频| 久久夜色精品一区| 另类小说综合欧美亚洲| 欧美日韩一区在线| 国产精品电影一区二区三区| 国产自产2019最新不卡| 日韩欧美国产系列| 首页欧美精品中文字幕| 欧美在线观看一区二区| 亚洲视频一二三| 99久久精品免费| 亚洲欧洲日韩在线| 91免费看`日韩一区二区| 国产精品视频第一区| 国产成人鲁色资源国产91色综| 欧美大黄免费观看| 久久99精品一区二区三区| 日韩欧美高清在线| 狠狠狠色丁香婷婷综合激情| 日韩三级中文字幕| 国产一区二区三区免费看| 久久综合给合久久狠狠狠97色69| 狠狠色综合播放一区二区| 欧美成人精品1314www| 国产一区二区主播在线| 国产人伦精品一区二区| 99热精品一区二区| 亚洲三级在线看| 欧美日韩一区二区三区免费看| 午夜久久久久久电影| 日韩精品一区二区三区在线观看| 韩国女主播一区| 久久久.com| 91猫先生在线| 亚洲一区二区欧美日韩| 欧美一级高清片在线观看| 国产在线播放一区| 国产日韩成人精品| 91亚洲国产成人精品一区二区三 | 久久综合av免费| 国产91丝袜在线观看| 亚洲天堂a在线| 欧美日韩一级二级三级| 蜜臀av一区二区在线免费观看 | 亚洲美腿欧美偷拍| 欧美另类变人与禽xxxxx| 久久国产精品99精品国产| 国产日韩欧美综合在线| 色婷婷综合久久久久中文| 日韩精品欧美精品| 国产日韩欧美一区二区三区综合| 一本久道久久综合中文字幕 | 日韩欧美你懂的| 99精品欧美一区| 日韩国产欧美在线视频| 国产精品久久久久永久免费观看 | 91看片淫黄大片一级| 日本成人中文字幕在线视频| 国产欧美精品区一区二区三区| 欧美亚洲综合在线| 国产成人综合网站| 日韩影院免费视频| 中文字幕一区二区不卡| 日韩亚洲欧美在线| 色视频成人在线观看免| 精久久久久久久久久久| 亚洲最新在线观看| 久久精品亚洲精品国产欧美kt∨| 色婷婷av一区二区三区大白胸| 国产精品中文有码| 男女性色大片免费观看一区二区| 中文字幕一区二区三区四区| 91麻豆精品国产| 色丁香久综合在线久综合在线观看| 日韩电影一区二区三区四区| 亚洲精品视频在线看| 日本一区二区视频在线| 欧美不卡视频一区| 欧美日本国产视频| 日本丶国产丶欧美色综合| 国产91色综合久久免费分享| 免费人成在线不卡| 五月婷婷久久丁香| 亚洲自拍偷拍综合| 亚洲人一二三区| 国产精品国产精品国产专区不片| 久久免费看少妇高潮| 欧美一卡二卡三卡四卡| 欧美日韩精品一区二区三区蜜桃| 91丨国产丨九色丨pron| 粉嫩av亚洲一区二区图片| 国产在线精品一区二区| 免播放器亚洲一区| 日韩精品乱码免费| 秋霞成人午夜伦在线观看| 亚洲色图19p| 一区二区三区四区国产精品| 亚洲情趣在线观看| 一区二区三区在线免费播放| 亚洲欧美日韩成人高清在线一区| 国产精品天天摸av网| 欧美成人一区二区三区| 日韩欧美在线影院| 日韩一区二区视频在线观看| 制服.丝袜.亚洲.另类.中文| 91精品一区二区三区久久久久久| 欧美日韩精品欧美日韩精品一综合| 欧美综合亚洲图片综合区| 欧美亚日韩国产aⅴ精品中极品| 欧美色图在线观看| 欧美肥妇free| 精品国产乱码久久久久久1区2区 | 亚洲国产精品久久一线不卡| 亚洲永久精品国产| 日韩电影一区二区三区| 美女在线视频一区| 国产成人综合在线播放| 91丨九色丨尤物| 欧美日韩综合在线| 日韩精品一区二区三区四区| 精品日韩欧美在线| 亚洲国产成人在线| 亚洲一区二区高清| 青草av.久久免费一区| 国产精品综合久久| gogogo免费视频观看亚洲一| 91麻豆产精品久久久久久| 欧美精品一级二级| 久久夜色精品国产欧美乱极品| 国产精品短视频| 天堂在线一区二区| 国产福利一区二区三区视频在线 | 成人精品视频.| 欧美日韩精品一区二区三区四区| 欧美大白屁股肥臀xxxxxx| 中文字幕乱码日本亚洲一区二区| 亚洲自拍偷拍av| 狠狠色丁香婷婷综合| 色噜噜狠狠色综合中国| 欧美电影免费提供在线观看| 国产精品久久久一本精品| 日韩影院免费视频| 99精品久久久久久| 日韩欧美第一区| 一区二区理论电影在线观看| 国产在线精品视频| 欧美日韩成人综合天天影院| 国产人伦精品一区二区| 日韩av中文字幕一区二区三区| 成人久久久精品乱码一区二区三区| 欧美精品vⅰdeose4hd| 国产精品毛片无遮挡高清| 免费看欧美女人艹b| 99久久久无码国产精品| www国产亚洲精品久久麻豆| 亚洲午夜久久久久| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 亚洲欧洲日韩av| 激情综合五月天| 7799精品视频| 亚洲一区二区三区自拍| 成人国产亚洲欧美成人综合网| 欧美xxx久久| 国产一区二区伦理片| 欧美日韩一级二级三级| 亚洲精品国产成人久久av盗摄| 国产在线精品一区二区夜色| 日韩一级视频免费观看在线| 一区二区不卡在线视频 午夜欧美不卡在 | bt7086福利一区国产| 亚洲精品一区二区三区四区高清| 亚洲aaa精品| 欧美性做爰猛烈叫床潮| 日韩理论片在线| jlzzjlzz国产精品久久| 亚洲国产高清不卡| 国产一区二区三区电影在线观看| 精品少妇一区二区三区日产乱码| 午夜精品久久久久久不卡8050| 在线看一区二区| 一区二区三区在线高清| 色美美综合视频| 亚洲精品乱码久久久久久久久| 91麻豆国产福利在线观看| 国产精品嫩草久久久久| 91片在线免费观看| 一区二区三区精密机械公司|