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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rbc.c

?? 用D12實現(xiàn)U盤的單片機程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
////////////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1999-2003 PHILIPS Semiconductors - APIC
//
// Module Name:
//
//	rbc.c
//
// Abstract:
//
//    These are the structures and defines used in the Reduced Block Command set
//
// Author:
//
//     Hilbert Zhang ZhenYu
//
// Revision History:
//
//		Created  01 Jun. 1999
//
// Copyright @ 1999-2003, PHILIPS Semiconductors - APIC. All rights reserved.
//
*/

#include <reg51.h>                /* special function register declarations   */

#undef   GLOBAL_EXT

#include "SysCnfg.h"
#include "BasicTyp.h"
#include "common.h"

#include "Hal4D12.h"

#include "ATA.h"
#include "RBC.h"
#include "RBCCmd.h"
#include "Hal4ata.h"
#include "Hal4Sys.h"


#include "TPBulk.h"


/*
//*************************************************************************
//  Public Data
//*************************************************************************
*/

//sbit ATA_RD_N           = 0xB6;

// bit Flags
STRUC_EXT BITFLAGS BDATA_SEG bFlags;

// MCU Timer bit flags
BIT_EXT     MCUBF_Timer;
INT8_EXT   Hal4Sys_ClockTicks;

// D12 bit flags
BIT_EXT     D12BF_SetupOverwritten;
BIT_EXT     D12BF_Configuration;

//USB
// DefaultControlPipe Finite State Machine [One-Hot]
INT8_EXT BDATA_SEG DCPFSMstate;
BIT_EXT     DCPFSM_SetupProc;
BIT_EXT     DCPFSM_DataIn;
BIT_EXT     DCPFSM_DataOut;
BIT_EXT     DCPFSM_COhandshake;
BIT_EXT     DCPFSM_CIhandshake;
BIT_EXT     DCPFSM_Stall;
//      DCP FSM
//      SETUP Stage -> SETUP Proc -> DATA OUT Stage -> CONTROL OUT Handshake -> STATUS Stage -> IDLE
//      SETUP Stage -> SETUP Proc -> CONTROL OUT Handshake -> STATUS Stage -> IDLE
//      SETUP Stage -> SETUP Proc -> DATA IN Stage-> CONTROL IN Handshake ->STATUS Stage -> IDLE
//
INT16_EXT  DCPXfer_wResidue;
INT8_EXT   * DCPXfer_pData;


// USB Device Request
STRUC_EXT   DEVICE_REQUEST DCPDeviceRequest;
INT8_EXT    UsbReq_Recipient;
INT8_EXT    UsbReq_Type;
INT8_EXT    UsbReq_Request;
BIT_EXT     REQBF_DCPRequest_dir;
BIT_EXT     REQBF_StallDCPRequest;
BIT_EXT     REQBF_DCPRequest_EPdir;

// Bulk-Only TP Finite State Machine [One-Hot]
INT8_EXT BDATA_SEG BOTFSMstate;
BIT_EXT     BOTFSM_CBWProc;
BIT_EXT     BOTFSM_DataIn;
BIT_EXT     BOTFSM_DataOut;
BIT_EXT     BOTFSM_CSWProc;
BIT_EXT     BOTFSM_CSW;
BIT_EXT     BOTFSM_IDLE;
BIT_EXT     BOTFSM_Stall;
//      BOT FSM
//      IDLE Stage ->  CBW -> CBW Proc -> DATA OUT Stage -> CSW Proc -> CSW Stage -> IDLE
//      IDLE Stage ->  CBW -> CBW Proc -> DATA IN Stage -> CSW Proc -> CSW Stage -> IDLE
//      STALL Stage ->  IDLE
//
BIT_EXT     BOTXfer_Abort;
INT16_EXT   BOTXfer_wResidue;
INT8_EXT    * BOTXfer_pData;
STRUC_EXT TPBLK_STRUC	DATA_SEG	TPBulk_Block;
#define     TPBulk_CBW				TPBulk_Block.TPBulk_CommandBlock
#define		CBW_wXferLen			TPBulk_CBW.dCBW_DataXferLen
#define	    RBC_CDB					TPBulk_CBW.cdbRBC
#define     RBC_LUN					TPBulk_CBW.bCBW_LUN
#define     TPBulk_CSW				TPBulk_Block.TPBulk_CommandStatus
#define     CSW_wResidue			((INT16)TPBulk_CSW.dCSW_DataResidue)

BIT_EXT     BOTBF_StallAtBulkOut;
BIT_EXT     BOTBF_StallAtBulkIn;

// Xfer_Space
INT8_EXT BDATA_SEG Xfer_Space;
// Default Control Pipe Tansfer DCPXfer
BIT_EXT     DCPXfer_atMCUCODE;
BIT_EXT     DCPXfer_atMCURAM;
BIT_EXT     DCPXfer_atEEROM;
BIT_EXT     DCPXfer_atATA;
// Bulk Only Xfer space
BIT_EXT     BOTXfer_atRAM;
BIT_EXT     BOTXfer_atATA;
BIT_EXT     BOTXfer_atROM;

STRUC_EXT HW_ATA_DEVICES_EXTENSION	Hal4ATA_DevExt;
#define ATADevExt_IDData    Hal4ATA_DevExt.IdentifyData

BIT_EXT     ATABF_IsAttached;
BIT_EXT     ATABF_IsSupportMultiSector;
BIT_EXT     ATABF_IDEXfer_dir;
BIT_EXT     ATABF_IsSkipSetParameters;

INT8_EXT    Hal4ATA_SectCntInBlk;
/*
//*************************************************************************
//  Public temp var
//*************************************************************************
*/
STRUC_EXT   FLEXI_INT32 tempvars4UsbReq;
INT8_EXT BDATA_SEG FlexByte;
BIT_EXT     FlexByte_b0;
BIT_EXT     FlexByte_b1;
BIT_EXT     FlexByte_b2;
BIT_EXT     FlexByte_b3;
BIT_EXT     FlexByte_b4;
BIT_EXT     FlexByte_b5;
BIT_EXT     FlexByte_b6;
BIT_EXT     FlexByte_b7;

/*
//*************************************************************************
//  Private Data
//*************************************************************************
*/
code REQUEST_SENSE_DATA   Req_SenseData=
{
	//0x70, 0x00, 0x06, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x29,
    //0x00, 0x00, 0x00, 0x00, 0x00


     0x70, // INT8 ResponseCode : 7;
	 0,     //   INT8 Valid : 1;

	 0,//   INT8 SegmentNum;

	 0x5,//   INT8 SenseKey : 4; 5= illegal request
	 0,  // INT8 Reserved0 : 1;
	 0,//   INT8 WrongLenIndicator : 1;
	 0,//   INT8 EndofMedium : 1;
	 0,//   INT8 FileMark : 1;

	 0,//   INT8 Info_0;
	 0,//   INT8 Info_1;
	 0,//   INT8 Info_2;
	 0,//   INT8 Info_3;

	0xA,//    INT8 AdditionalSenseLen;

	0,//    INT8 CommandSpecInfo_0;
	0,//    INT8 CommandSpecInfo_1;
	0,//    INT8 CommandSpecInfo_2;
	0,//    INT8 CommandSpecInfo_3;

	0x29,//    INT8 ASC;
	0,//    INT8 ASCQ;
	0,//    INT8 FieldReplacableUnitCode;
	0,//    INT8 SenseKeySpec_0 : 7;
	0,//    INT8 SenseKeySpecValid : 1;
	0,//    INT8 SenseKeySpec_1;
	0 //    INT8 SenseKeySpec_2;

	};

RBC_PROPERTY                    RBC_PropertyData;



#define PARAMETER_LIST_LENGTH   (sizeof(MODE_PARAMETER_HEAD)+sizeof(MODE_PARAMETER_HEAD))


code MODE_PARAMETER_HEAD ParaHeadMask =
{
	PARAMETER_LIST_LENGTH-1,    /* mode data length*/
	0,                          /* medium type*/
	0,                          /* device spec Param*/
	0                           /* block Descriptor length*/
};

code MODE_RBC_DEVICE_PARAMETERS_PAGE ParaPageMask =
{
	MODE_PAGE_RBC_DEVICE_PARAMETERS,
	0,      /*Reserved*/
	0,      /*PageSavable*/

	0x00,   /*PageLength*/

	0,      /*WriteCacheDisable*/
	00,     /*Reserved*/

	{
		/*Logical block Size = 512 Bytes*/
		0x00,
		0x00
	},

	{
		/*Number of logical blocks*/
		0x00,
		0x00,
		0x00,
		0x00,
		0x00
	},

	0x00,   /*Power/Peformance*/

	0,      /*LockDisable*/
	0,      /*FormatDisable*/
	0,      /*WriteDisable*/
	0,      /*ReadDisable*/
	0x0,    /*Reserved*/

	0x00    /*Reserved*/
};

code MODE_PARAMETER_HEAD DefaultParaHead =
{
	PARAMETER_LIST_LENGTH-1,    /* mode data length*/
	0,                          /* medium type*/
	0,                          /* device spec Param*/
	0                           /* block Descriptor length*/
};

code MODE_RBC_DEVICE_PARAMETERS_PAGE DefaultParaPage =
{
	MODE_PAGE_RBC_DEVICE_PARAMETERS,
	0,      /*Reserved*/
	1,      /*PageSavable*/

	0x0B,   /*PageLength*/

	0,      /*WriteCacheDisable*/
	00,     /*Reserved*/

	{
		/*Logical block Size = 512 Bytes*/
		0x02,
		0x00
	},

	{
		/*Number of logical blocks*/
		0x00,
		0x00,
        0x00,
		0x00,
        0x00
    },

    0xFF,   /*Power/Peformance*/

    0,      /*LockDisable*/
    0,      /*FormatDisable*/
    0,      /*WriteDisable*/
    0,      /*ReadDisable*/
    0x0,    /*Reserved*/

	0x00    /*Reserved*/
};

code VPD_SERIAL_PAGE SerialPage =
{
	RBC_DEVICE,
	0x00,

    VPDPAGE_SERIAL_NUMBER,

    0x00,

    24,     //size of SerialNumber

    {
		// SerialNumber
    	'0',0,
	    '0',0,
	    '0',0,
	    '0',0,

    	'0',0,
	    '0',0,
	    '0',0,
	    '0',0,

    	'0',0,
    	'0',0,
	    '0',0,
	    '0',0
    }
};

code VPD_DEVICE_ID_PAGE DeviceIDPage =
{
	RBC_DEVICE,
    0x00,

    VPDPAGE_DEVICE_IDENTITY,

    0x00,

    sizeof(ASCII_ID_DESCRIPTOR),
    {
        0x02,
        0x00,

        0x01,
        0x00,
		0x00,

        0x00,

        sizeof(ASCII_ID_STRING),

		{
			// ASCII_ID_STRING
			'P','h','i','l',
            'i','p','s',' ',
            'S','u','p','e',
			'r',' ','D','i',
            's','k',' '
        }
    }
};

code STD_INQUIRYDATA inquiryData =
{
    0x00,// RBC_DEVICE,
    0,//INT8 Reserved0 : 3;

    0,//INT8 Reserved1 : 7;
    1,//INT8 RemovableMedia : 1;

    2,//INT8 Reserved2;

    2,//INT8 Reserved3 : 5;
    0,//INT8 NormACA : 1;
    0,//INT8 Obsolete0 : 1;
    0,//INT8 AERC : 1;

    //INT8 Reserved4[3];
    {
        0x1F,0,0
    },

    0,//INT8 SoftReset : 1;
    0,//INT8 CommandQueue : 1;
	0,//INT8 Reserved5 : 1;
	0,//INT8 LinkedCommands : 1;
	0,//INT8 Synchronous : 1;
	0,//INT8 Wide16Bit : 1;
	0,//INT8 Wide32Bit : 1;
	0,//INT8 RelativeAddressing : 1;

    //INT8 VendorId[8];
    {
        'P','H','I','L',
        'I','P','S',' '
    },

	//INT8 ProductId[16];
    {
        'U','S','B','-',
    	'I','D','E',' ',
    	'A','d','a','p',
    	't','e','r',' '
    },

	//INT8 ProductRevisionLevel[4];
    {
        '0','.','0','0'
    },


//  Above is 36 bytes
//  can be tranmitted by Bulk



    //INT8 VendorSpecific[20]; out[64 bytes] within one packet only.
    {
        0, 0, 0, 0,
        0, 0, 0, 0,
        0, 0, 0, 0,
        0, 0, 0, 0,
        0, 0, 0, 0
    },


    0,//INT8 InfoUnitSupport : 1;
    0,//INT8 QuickArbitSupport : 1;
    0,//INT8 Clocking : 2;
    0,//INT8 Reserved1 : 4;
    0,//INT8  Reserved2 ;

    //USHORT VersionDescriptor[8] ;
    {
        0, 0, 0, 0,
        0, 0, 0, 0
    },


    //INT8 Reserved3[22];
    {
        0, 0, 0, 0,
        0, 0, 0, 0,
        0, 0, 0, 0,
        0, 0, 0, 0,
        0, 0, 0, 0,
        0, 0
    }

};


/*
//*************************************************************************
//  Subroutines
//*************************************************************************
*/

BOOLEAN RBC_Handler( void )
{

#define cdbGeneric RBC_CDB.RbcCdb_Generic
    BOOLEAN retStatus = FALSE;

	BOTXfer_wResidue = 0;

	switch(cdbGeneric.OperationCode)
	{
		/* required command */
		case RBC_CMD_READ10:
			retStatus = RBC_Read();
			break;
		case RBC_CMD_READCAPACITY:
			retStatus = RBC_ReadCapacity();
			break;
		case RBC_CMD_STARTSTOPUNIT:
			retStatus = RBC_OnOffUnit();
			break;
        case RBC_CMD_SYNCCACHE:
            retStatus = RBC_SyncCache();
			break;
        case RBC_CMD_VERIFY10:
            retStatus = RBC_Verify();
            break;
        case RBC_CMD_WRITE10:
            retStatus = RBC_Write();
            break;
        case SPC_CMD_INQUIRY:
            retStatus = SPC_Inquiry();
            break;
        case SPC_CMD_MODESELECT6://0x15
            retStatus = SPC_ModeSelect();
            break;
        case SPC_CMD_MODESENSE6:
            retStatus = SPC_ModeSense();//0x1A
            break;
		case SPC_CMD_PRVENTALLOWMEDIUMREMOVAL:
			retStatus = SPC_LockMedia();
            break;
        case SPC_CMD_TESTUNITREADY: //0x00
            retStatus = SPC_TestUnit();
            break;
        case SPC_CMD_REQUESTSENSE: //0x03
            retStatus = SPC_RequestSense();
            break;
		/* optional commands */
		case RBC_CMD_FORMAT:
			retStatus = RBC_Format();
			break;
		case SPC_CMD_RESERVE6:
			retStatus = SPC_Reserve6();
			break;
		case SPC_CMD_RELEASE6:
			retStatus = SPC_Release6();
			break;
		case SPC_CMD_PERSISTANTRESERVIN:
			retStatus = SPC_PersisReserveIn();
			break;
		case SPC_CMD_PERSISTANTRESERVOUT:
			retStatus = SPC_PersisReserveOut();
			break;
		case SPC_CMD_WRITEBUFFER:
			retStatus = SPC_WriteBuff();
			break;
		case SPC_CMD_READLONG:
			retStatus = SPC_READLONG();//0x23
			break;
		default:
			// Invalid CBW
			TPBulksup_ErrorHandler(CASECBW,0);
			//SCSI_SENSE_ILLEGAL_REQUEST=0x05
			//SCSI_ADSENSE_ILLEGAL_COMMAND=0x20
			RBC_BuildSenseData(SCSI_SENSE_ILLEGAL_REQUEST,SCSI_ADSENSE_ILLEGAL_COMMAND,0);
			TPBulk_CSWHandler();// Goto USBFSM4BOT_CSWPROC;
			break;
	}

	return retStatus;
#undef cdbGeneric
}


/*
////////////////////////////////////////////////////////////////////////////////////
// Reduced Block Command Support
////////////////////////////////////////////////////////////////////////////////////
*/

BOOLEAN SPC_READLONG(void)
{
		BOTXfer_wResidue = CBW_wXferLen;
		TPBulksup_ErrorHandler(CASECMDFAIL,BOTXfer_wResidue);
		RBC_BuildSenseData(SCSI_SENSE_ILLEGAL_REQUEST,SCSI_ADSENSE_INVALID_CDB,0);

		TPBulk_CSWHandler();// Goto USBFSM4BOT_CSWPROC;
}



BOOLEAN RBC_Read(void)
{

#define cdbRead RBC_CDB.RbcCdb_Read

    Hal4ATA_SectCntInBlk = ATADevExt_IDData.MaximumBlockTransfer << BITNUM4EP2PKT_PER_SECTOR;
	/*
	// Setting ATA Hardware
	*/
    ATABF_IDEXfer_dir = 1;
	Hal4ATA_ReadWriteSetting();

	/*
	// config TPBulkXfer Paras
	*/
    Xfer_Space &= BOTXFERSPACE_MASK;
    BOTXfer_atATA = 1;
    BOTXfer_wResidue = CBW_wXferLen;

	TPBulksup_ErrorHandler(CASE6,BOTXfer_wResidue);
	RBC_BuildSenseData(SCSI_SENSE_NO_SENSE,0,0);

	BOTFSMstate = USBFSM4BOT_DATAIN;

	return (TRUE);

#undef cdbRead
}

/*

BOOLEAN RBC_Read(void)
{
char temp, temp1;
unsigned int a ;
unsigned int i;
int b;

#define cdbRead RBC_CDB.RbcCdb_Read

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩美女久久久| 亚洲摸摸操操av| 国产精品麻豆一区二区| 亚洲一级二级三级| 丁香婷婷综合网| 欧美一级艳片视频免费观看| 中文字幕一区av| 久久99精品久久久久婷婷| 色偷偷88欧美精品久久久| 2023国产精品自拍| 蜜臀av性久久久久av蜜臀妖精| 91精彩视频在线观看| 国产精品久久久久一区| 极品销魂美女一区二区三区| 亚洲精品一线二线三线无人区| 亚洲欧美国产高清| 欧洲视频一区二区| 亚洲欧美国产高清| 91麻豆精品久久久久蜜臀| 亚洲在线免费播放| 91精品国产麻豆| 国产成人在线网站| 国产午夜精品一区二区三区四区 | 日韩成人一区二区三区在线观看| 国产精品99久久久久久似苏梦涵 | 日本vs亚洲vs韩国一区三区二区 | 久久综合久久99| 99re热这里只有精品视频| 国产精品私人影院| 欧美久久久久久久久中文字幕| 性久久久久久久久久久久| 欧美日韩在线播放三区四区| 亚洲综合激情另类小说区| 日韩欧美视频在线| 国产一本一道久久香蕉| 26uuu久久天堂性欧美| 一本一道波多野结衣一区二区| 日韩精品乱码av一区二区| 欧美一区二区视频在线观看| www.久久久久久久久| 国产精品伦理在线| 91精品国产欧美一区二区成人| 成人精品gif动图一区| 亚洲精品日产精品乱码不卡| 欧美亚一区二区| 日韩国产精品久久| 国产精品国产自产拍高清av| 日韩欧美一二三四区| 在线看国产一区| 成人av综合在线| 精品在线播放午夜| 亚洲成av人片观看| 一区二区三区在线看| 欧美一级夜夜爽| 在线视频欧美精品| 99久久99久久精品免费看蜜桃| 国产麻豆精品久久一二三| 秋霞电影网一区二区| 五月天亚洲婷婷| 中文字幕欧美激情一区| 欧美私模裸体表演在线观看| av午夜一区麻豆| 国产成人午夜精品5599| 狠狠色丁香婷综合久久| 亚洲欧洲成人精品av97| 久久久91精品国产一区二区精品| 欧美一级日韩免费不卡| 欧美日韩dvd在线观看| 国产成人在线观看免费网站| 激情久久久久久久久久久久久久久久| 亚洲sss视频在线视频| 亚洲一二三专区| 亚洲国产综合色| 中文字幕成人网| 国产日本一区二区| 欧美日韩黄色一区二区| 欧美性受xxxx| 欧美亚洲综合网| 欧洲视频一区二区| 欧美羞羞免费网站| 欧美日韩成人综合在线一区二区| 欧美日韩国产美女| 欧美一三区三区四区免费在线看 | 成人黄色免费短视频| 91在线国产福利| 91麻豆福利精品推荐| 国产伦精品一区二区三区免费迷| 久久66热偷产精品| 国产乱一区二区| 国产成人午夜视频| 91在线码无精品| 欧美视频在线一区二区三区 | 日韩三级精品电影久久久| 成人动漫中文字幕| 91在线你懂得| 欧美日韩卡一卡二| 日韩欧美资源站| 国产亚洲成年网址在线观看| 国产精品看片你懂得| 亚洲激情图片一区| 日韩不卡免费视频| 国产一区二区三区免费看| 成人久久视频在线观看| 国产美女娇喘av呻吟久久| 国产成人精品免费| 91麻豆.com| 91精品国产一区二区三区蜜臀| 精品动漫一区二区三区在线观看| 久久精品水蜜桃av综合天堂| 综合久久久久久久| 日韩在线播放一区二区| 国产一区二区按摩在线观看| 99re成人精品视频| 日韩精品中午字幕| 亚洲欧美日韩久久| 日本aⅴ亚洲精品中文乱码| 国产精品一区免费在线观看| 色香蕉久久蜜桃| 亚洲精品在线观看网站| 亚洲综合色网站| 国产精品正在播放| 欧美日韩一级片在线观看| 日韩三级电影网址| 一区二区在线观看视频| 国产综合久久久久久久久久久久| av影院午夜一区| 欧美成人综合网站| 亚洲精品一线二线三线无人区| 亚洲欧美激情插| 九九国产精品视频| 欧美综合天天夜夜久久| 国产午夜精品在线观看| 日韩和的一区二区| 99精品桃花视频在线观看| 欧美刺激午夜性久久久久久久| 一片黄亚洲嫩模| 丰满白嫩尤物一区二区| 欧美一区二区久久久| 亚洲欧美一区二区三区国产精品 | 91精品婷婷国产综合久久性色| 中文在线一区二区| 精品一区二区三区视频在线观看| 日本丰满少妇一区二区三区| 欧美激情在线观看视频免费| 麻豆精品在线看| 91精品国产美女浴室洗澡无遮挡| 亚洲在线视频免费观看| 不卡在线观看av| 国产精品天天摸av网| 国产自产v一区二区三区c| 日韩一区二区三区在线观看| 亚洲午夜久久久久久久久电影院| 91婷婷韩国欧美一区二区| 国产午夜久久久久| 国产精品综合二区| 精品区一区二区| 蜜臀av一区二区三区| 538prom精品视频线放| 亚洲精品视频一区| 色妞www精品视频| 成人欧美一区二区三区黑人麻豆| 国产精品一品二品| 国产日韩精品一区二区三区| 久久99九九99精品| 精品欧美乱码久久久久久| 日本aⅴ亚洲精品中文乱码| 3d动漫精品啪啪1区2区免费| 一区二区不卡在线播放 | 成人免费视频app| 国产女人18水真多18精品一级做| 国产一区二区伦理片| 久久久久久久久岛国免费| 国产日韩精品一区二区三区| 国产精一品亚洲二区在线视频| 久久久五月婷婷| 成人性色生活片| 国产精品国产馆在线真实露脸 | 亚洲人成网站色在线观看| 成人aa视频在线观看| 亚洲欧美综合色| 91精彩视频在线观看| 午夜精品福利视频网站| 欧美一区二区精品在线| 国产一区二区三区精品视频| 久久九九久精品国产免费直播| 成人av高清在线| 一区二区三区高清| 在线不卡的av| 国内精品在线播放| 国产欧美日本一区视频| 一本大道久久a久久综合婷婷| 亚洲成av人影院| 久久综合色天天久久综合图片| 国产黑丝在线一区二区三区| 亚洲手机成人高清视频| 91精品国产一区二区三区香蕉| 国产一区二区网址| 亚洲视频免费看| 欧美二区三区91| 成人精品电影在线观看|