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

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

?? fw.c

?? cy68013a USB2.0 highspeed mass storage source code
?? C
?? 第 1 頁 / 共 3 頁
字號:
            switch(SETUPDAT[3])         
               {
                  case GD_DEVICE:                     // Device
                     sendDescriptor(LSB(pDeviceDscr));
                     break;
                  case GD_DEVICE_QUALIFIER:            // Device Qualifier
                     // if high-speed is disabled, we are supposed to STALL this request
                     if (!CT1)
                     {
                        // high-speed is enabled, return the device qualifier
                        sendDescriptor(LSB(pDeviceQualDscr));
                     }
                     else
                     {
                        // high-speed is disabled, STALL this request
                        EZUSB_STALL_EP0();
                     }
                     break;
                  case GD_CONFIGURATION:              // Configuration
                     ((CONFIGDSCR xdata *) pFullSpeedConfigDscr)->type = CONFIG_DSCR;
                     goto generalConfigurationCase;

                  case GD_OTHER_SPEED_CONFIGURATION:  // Other Speed Configuration
                     ((CONFIGDSCR xdata *) pFullSpeedConfigDscr)->type = OTHERSPEED_DSCR;
                     generalConfigurationCase:
                     if (bBIG_PACKAGE)
                        {
                        if (VBUSPWRD)
                           {
                           ((BYTE xdata *) pFullSpeedConfigDscr)[CONFIG_DSCR_ATTRIB_OFFSET] &= ~(1 <<6);       // Bit 6 -- 1 = self-power, 0 = bus power
                           ((BYTE xdata *) pFullSpeedConfigDscr)[CONFIG_DSCR_POWER_OFFSET] = 500/2; 
                           }
                        else
                           {
                           ((BYTE xdata *) pFullSpeedConfigDscr)[CONFIG_DSCR_ATTRIB_OFFSET] |= 1 <<6;       // Bit 6 -- 1 = self-power, 0 = bus power
                           ((BYTE xdata *) pFullSpeedConfigDscr)[CONFIG_DSCR_POWER_OFFSET] = 1; 
                           }
                        }
                     if (   (EZUSB_HIGHSPEED() && SETUPDAT[3] == GD_CONFIGURATION)
                        || (!EZUSB_HIGHSPEED() && SETUPDAT[3] == GD_OTHER_SPEED_CONFIGURATION))
                           {
                           ((BYTE xdata *) pFullSpeedConfigDscr)[DSCR_CONFIG_LEN+DSCR_INTRFC_LEN+EP_DSCR_LEN_LSB_OFFSET] = 0;      
                           ((BYTE xdata *) pFullSpeedConfigDscr)[DSCR_CONFIG_LEN+DSCR_INTRFC_LEN+EP_DSCR_LEN_MSB_OFFSET] = 0x2;      
                           ((BYTE xdata *) pFullSpeedConfigDscr)[DSCR_CONFIG_LEN+DSCR_INTRFC_LEN+DSCR_ENDPNT_LEN+EP_DSCR_LEN_LSB_OFFSET] = 0;      
                           ((BYTE xdata *) pFullSpeedConfigDscr)[DSCR_CONFIG_LEN+DSCR_INTRFC_LEN+DSCR_ENDPNT_LEN+EP_DSCR_LEN_MSB_OFFSET] = 0x2;      
                           }
                     else
                           {
                           ((BYTE xdata *) pFullSpeedConfigDscr)[DSCR_CONFIG_LEN+DSCR_INTRFC_LEN+EP_DSCR_LEN_LSB_OFFSET] = 0x40;      
                           ((BYTE xdata *) pFullSpeedConfigDscr)[DSCR_CONFIG_LEN+DSCR_INTRFC_LEN+EP_DSCR_LEN_MSB_OFFSET] = 0;      
                           ((BYTE xdata *) pFullSpeedConfigDscr)[DSCR_CONFIG_LEN+DSCR_INTRFC_LEN+DSCR_ENDPNT_LEN+EP_DSCR_LEN_LSB_OFFSET] = 0x40;      
                           ((BYTE xdata *) pFullSpeedConfigDscr)[DSCR_CONFIG_LEN+DSCR_INTRFC_LEN+DSCR_ENDPNT_LEN+EP_DSCR_LEN_MSB_OFFSET] = 0;      
                           }
                     sendDescriptor(LSB(pFullSpeedConfigDscr));
                     break;

                  case GD_HID:					// Get-Descriptor: HID
                     if (HIDIntrfcDscrOffset)
                        sendDescriptor(HIDIntrfcDscrOffset+ (BYTE) &HIDDscrOffset);
                     else
                        EZUSB_STALL_EP0();      // Stall End Point 0
                     break;

                  case GD_REPORT:					// Get-Descriptor: Report
                  //case GD_CHANNEL_DESCRIPTOR:
                     if (CSMIntrfcDscrOffset && halfKBuffer[CSMIntrfcDscrOffset+2] == wIndex)
                        sendDescriptor(CSMIntrfcDscrOffset+ (BYTE) &CSMChannelDscrOffset);
                     else if (HIDIntrfcDscrOffset && halfKBuffer[HIDIntrfcDscrOffset+2] == wIndex)
                        {
                        /*
                        Note: A HID report does not have a length field which the SIE can read to determine how many
                        bytes to send using the Setup Data Pointer. Therefore we need to 'manually' send the data.
                        We have limited our report size to less than 64 bytes.
                        */
                        BYTE j;
   
                        AUTOPTR1H = MSB(halfKBuffer);
                        AUTOPTR1L = LSB(&HIDReportDscrOffset+HIDIntrfcDscrOffset);
                        for(j=0;j<64;j++)
                           EP0BUF[j]=XAUTODAT1;
                        EP0BCL = (BYTE) &HIDReportDscrLen;          // arm the IN transfer
                        }
                     else
                        EZUSB_STALL_EP0();      // Stall End Point 0
                     break;
                  case GD_STRING:            // String
                     // explanation.  String indexes are calculated.  The index is
                     // the offset of the string in the eeprom divided by two.
                     // The first 16 bytes of the eeprom are config bytes.  So, to
                     // get the actual address of the string descriptor in memory,
                     // you double the string indes subtract 16 (to account for the
                     // config bytes in the eeprom) and add that to the address of
                     // the device descriptor.  simple.
                     if (setupdat2)
                        sendDescriptor(LSB(pDeviceDscr + (setupdat2 * 2) - 16));
                     else
                        {
                        // Look up string descriptor 0.  This is kind of a pain because 
                        // we cannot constrain the old EEPROM format
                        BYTE offset = 0xff;
                        BYTE i;
                        
                        for (i = (BYTE)&SerialNumberIndexOffset-2; i <= (BYTE) &SerialNumberIndexOffset; i++)
                           if (halfKBuffer[i])
                              offset = min(halfKBuffer[i], offset);
                        // string offset will be lowest one - 4
                        sendDescriptor((offset*2-16)-4);
                        }
                     break;
                  case GD_CSM_DESCRIPTOR:
                     if (CSMIntrfcDscrOffset && halfKBuffer[CSMIntrfcDscrOffset+2] == wIndex)
                        sendDescriptor(CSMIntrfcDscrOffset + (BYTE) &CSMCSMDscrOffset);
                     else
                        EZUSB_STALL_EP0();      // Stall End Point 0
                     break;
                  case GD_CSMV_DESCRIPTOR:
                     if (CSMIntrfcDscrOffset && halfKBuffer[CSMIntrfcDscrOffset+2] == wIndex)
                        sendDescriptor(CSMIntrfcDscrOffset + (BYTE) &CSMCSMVDscrOffset);
                     else
                        EZUSB_STALL_EP0();      // Stall End Point 0
                     break;
                  default:                   // Invalid request
                     EZUSB_STALL_EP0();      // Stall End Point 0
               }  // switch
            break;
         case SC_GET_INTERFACE:                  // *** Get Interface
            EP0BUF[0] = AlternateSetting;
            EP0BCL = 1;
            break;
         case SC_SET_INTERFACE:                  // *** Set Interface
            // From USB 2.0 spec 9.4.5
            // The Halt feature is reset to zero after either a SetConfiguration() or SetInterface() request even if the
            // requested configuration or interface is the same as the current configuration or interface.
            EP2CS = 0;           // Clear stall bit
            EP6CS = 0;
            EP1INCS = 0;

            // Clear Data Toggles.
            TOGCTL = 0x2;     // Reset data toggle for EP2
            TOGCTL = 0x22;
            TOGCTL = 0x16;    // Reset data toggle for EP6
            TOGCTL = 0x36;
            TOGCTL = 0x11;    // Reset data toggle for EP1
            TOGCTL = 0x31;
            AlternateSetting = setupdat2;
            break;
         case SC_SET_CONFIGURATION:               // *** Set Configuration
            // From USB 2.0 spec 9.4.5
            // The Halt feature is reset to zero after either a SetConfiguration() or SetInterface() request even if the
            // requested configuration or interface is the same as the current configuration or interface.
            EP2CS = 0;           // Clear stall bit
            EP6CS = 0;
            EP1INCS = 0;

            Configuration = setupdat2;
            // compliance code
            if (!Configuration && VBUS_POWERED)
               powerOff();
            break;
         case SC_GET_CONFIGURATION:               // *** Get Configuration
            EP0BUF[0] = Configuration;
            EP0BCL = 1;
            break;
         case SC_GET_STATUS:                 // *** Get Status
               switch(setupdat0)
               {
                  case GS_DEVICE:            // Device
                     if (bBIG_PACKAGE)
                        {
                        if (VBUSPWRD)
                           EP0BUF[0] = 0x00;       // Bit 0 -- 1 = self-power, 0 = bus power
                        else
                           EP0BUF[0] = 0x01;       // Bit 0 -- 1 = self-power, 0 = bus power
                        }
                     else
                        {
                        EP0BUF[0] = (((BYTE xdata *) pFullSpeedConfigDscr)[CONFIG_DSCR_ATTRIB_OFFSET] & (1 <<6)) >> 6;       // Descriptor bit 6 -- 1 = self-power, 0 = bus power
                        }
                        EP0BUF[1] = 0;          // Bit 1 -- remote wakeup enabled (0 for us)
                     EP0BCL = 2;
                     break;
                  case GS_INTERFACE:         // Interface
                     EP0BUF[0] = 0;
                     EP0BUF[1] = 0;
                     EP0BCL = 2;
                     break;
                  case GS_ENDPOINT:         // End Point
                     if (wIndex == 0x2)
                     {
                        EP0BUF[0] = (EP2CS & bmEPSTALL);
                     }
                     else if (wIndex == 0x86)
                     {
                        EP0BUF[0] = (EP6CS & bmEPSTALL);
                     }
                     else if (wIndex == 0x81)
                     {
                        EP0BUF[0] = (EP1INCS & bmEPSTALL);
                     }
                     else if (wIndex == 0x00)
                     {
                        EP0BUF[0] = 0x00;
                     }
                     else
                     {
                        EZUSB_STALL_EP0();   // Stall End Point 0
                        break;
                     }
   
                     EP0BUF[1] = 0;
                     EP0BCL = 2;
                     break;
                  default:                   // Invalid Command
                     EZUSB_STALL_EP0();      // Stall End Point 0
               }
            break;
         case SC_CLEAR_FEATURE:                  // *** Clear Feature
               switch(setupdat0)
               {
                  case FT_DEVICE:            // Device
                        EZUSB_STALL_EP0();   // Stall End Point 0
                     break;
                  case FT_ENDPOINT:          // End Point
                     if(setupdat2 == 0)
                     {
                        // do not clear endpoint STALLs if we received an invalid CBW.
                        // The BOT MSC Spec says we must stay STALL'd until we get reset
                        if (!phaseErrorState)
                        {
                           if (wIndex == 0x2)
                           {
                              ResetAndArmEp2();
                              TOGCTL = 0x2;
                              TOGCTL = 0x22;       // reset data toggle
                              EP2CS = 0;           // Clear stall bit
                           }
                           else if (wIndex == 0x86)
                           {
                              TOGCTL = 0x16;
                              TOGCTL = 0x36;       // reset data toggle
                              EP6CS = 0;           // Clear stall bit
                           }
                           else if (wIndex == 0x81)
                           {
                              TOGCTL = 0x11;
                              TOGCTL = 0x31;         // reset data toggle
                              EP1INCS = 0;           // Clear stall bit
                           }
                           else if (wIndex == 0x0)
                           {
                                 // EP0 STALLs are auto-clear
                           }
                           else
                              EZUSB_STALL_EP0();   // Stall End Point 0
                        }
                     }
                     else
                        EZUSB_STALL_EP0();      // Stall End Point 0
                     break;
                  default:
                     EZUSB_STALL_EP0();      // Stall End Point 0
               }  
            break;
         case SC_SET_FEATURE:                  // *** Set Feature
               switch(setupdat0)
               {
                  case FT_DEVICE:            // Device
                     if(setupdat2 == 2)
                        // Set Feature Test Mode.  The core handles this request.  However, it is
                        // necessary for the firmware to complete the handshake phase of the
                        // control transfer before the chip will enter test mode.  It is also
                        // necessary for FX2 to be physically disconnected (D+ and D-)
                        // from the host before it will enter test mode.
                        break;
                     else
                        EZUSB_STALL_EP0();   // Stall End Point 0
                     break;
                  case FT_ENDPOINT:          // End Point
                     if(setupdat2 == 0)
                        {
                        if (wIndex == 0x2)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩欧美综合一区| 日韩av中文字幕一区二区三区| 精品久久久久久久久久久院品网 | 日韩一区二区三区视频| 欧美专区日韩专区| 92精品国产成人观看免费| 国产不卡高清在线观看视频| 国产精品一级黄| 国产成人亚洲精品青草天美| 国产很黄免费观看久久| 国产精品中文字幕日韩精品| 国产成人亚洲综合a∨婷婷图片| 国产精品一区久久久久| 岛国精品在线播放| 成人美女视频在线观看18| 波多野结衣在线一区| 91女神在线视频| 欧美视频日韩视频在线观看| 欧美日韩中文字幕一区| 亚洲一级二级在线| 一级精品视频在线观看宜春院| 亚洲一区二区三区国产| 亚洲成人精品影院| 精品在线亚洲视频| 成人小视频在线观看| 91免费看片在线观看| 欧美日韩一区高清| 欧美xingq一区二区| 久久久99精品久久| 亚洲欧美电影一区二区| 亚洲一区在线免费观看| 久久国内精品视频| www.视频一区| 911精品国产一区二区在线| 日韩精品中文字幕一区二区三区 | 中文字幕欧美日韩一区| 成人欧美一区二区三区黑人麻豆| 一区二区三区欧美| 免费精品视频最新在线| 国产白丝网站精品污在线入口| 色婷婷精品久久二区二区蜜臀av | 一区二区三区**美女毛片| 视频一区国产视频| 高清久久久久久| 欧美日韩精品免费观看视频 | 日韩成人午夜精品| 大胆亚洲人体视频| 欧美系列在线观看| 2023国产一二三区日本精品2022| 亚洲伦在线观看| 蜜桃视频免费观看一区| 成人av手机在线观看| 欧美精品一级二级| 中文字幕精品一区二区三区精品| 性做久久久久久免费观看| 激情小说欧美图片| 欧美亚洲综合一区| 国产欧美1区2区3区| 午夜在线成人av| 成人久久视频在线观看| 亚洲大片一区二区三区| 国产剧情一区二区三区| 欧美性色欧美a在线播放| 中文字幕欧美激情| 日本不卡免费在线视频| 91亚洲精品久久久蜜桃| 欧美不卡激情三级在线观看| 亚洲一区二区三区小说| 成人免费观看av| 日韩视频国产视频| 亚洲一区二区三区四区的| 成人一二三区视频| 欧美一区二区免费| 亚洲一区二区三区在线播放| 岛国精品在线播放| 久久久亚洲午夜电影| 日韩二区在线观看| 欧美艳星brazzers| 1000部国产精品成人观看| 国产精品一区二区不卡| 91精品国产麻豆国产自产在线| 一区二区三区在线视频播放| 国产99久久久国产精品免费看| 欧美肥胖老妇做爰| 亚洲精品亚洲人成人网| 99久久精品国产麻豆演员表| 2021国产精品久久精品| 麻豆精品视频在线| 欧美一区二区三区精品| 亚洲超丰满肉感bbw| 色综合久久中文字幕综合网 | 国产九九视频一区二区三区| 欧美一区二区三区免费观看视频| 一区二区三区四区不卡在线 | 成人一区二区在线观看| 精品国产免费人成电影在线观看四季 | aaa欧美大片| 欧美激情在线观看视频免费| 国内精品自线一区二区三区视频| 日韩视频在线你懂得| 免费人成在线不卡| 欧美一级在线视频| 蜜臀久久99精品久久久画质超高清| 欧美日韩久久久一区| 亚洲电影视频在线| 欧美三区在线观看| 婷婷中文字幕综合| 91精品国产色综合久久ai换脸| 婷婷开心激情综合| 在线电影院国产精品| 奇米一区二区三区| 精品国产一区二区精华| 国产乱一区二区| 国精产品一区一区三区mba视频| 日韩午夜精品电影| 九九精品一区二区| 国产蜜臀97一区二区三区 | 精品美女在线播放| 国产一区二区三区综合| 国产亚洲欧洲一区高清在线观看| 国产成人亚洲精品青草天美| 国产精品美女久久久久久2018 | 国产欧美日产一区| 成人99免费视频| 亚洲女女做受ⅹxx高潮| 欧美日韩免费在线视频| 日韩高清欧美激情| 久久久www免费人成精品| 粉嫩一区二区三区在线看| 亚洲人午夜精品天堂一二香蕉| 在线观看中文字幕不卡| 日韩va亚洲va欧美va久久| 久久久久久久久久美女| 99久久精品久久久久久清纯| 亚洲国产精品欧美一二99| 欧美一级午夜免费电影| 国产成人精品网址| 亚洲精品菠萝久久久久久久| 欧美精品日韩一区| 国产精品一区二区久激情瑜伽| 中文字幕在线观看不卡| 欧美日韩美女一区二区| 精品在线播放午夜| 成人欧美一区二区三区黑人麻豆 | 日本视频一区二区三区| 26uuu国产在线精品一区二区| 成人高清免费观看| 亚洲综合精品久久| 久久久久久久久久久黄色| 97se亚洲国产综合自在线| 日韩成人免费看| 国产精品久久久久久久浪潮网站| 欧美亚洲另类激情小说| 国产一区二区三区国产| 亚洲精品一二三区| 久久久国际精品| 欧美日韩小视频| 成人午夜短视频| 美美哒免费高清在线观看视频一区二区 | 欧美丰满一区二区免费视频| 国产91精品一区二区麻豆亚洲| 亚洲高清在线视频| 久久精品亚洲一区二区三区浴池| 色综合中文字幕国产| 日韩福利视频导航| 亚洲码国产岛国毛片在线| 26uuu成人网一区二区三区| 91成人国产精品| 国产成人免费xxxxxxxx| 日韩成人一级片| 亚洲日本免费电影| 久久九九影视网| 51久久夜色精品国产麻豆| 99精品视频在线播放观看| 韩国精品久久久| 日韩电影一区二区三区四区| 亚洲人成人一区二区在线观看| 久久综合视频网| 日韩一级二级三级精品视频| 色综合中文字幕国产| 国产中文字幕精品| 日产国产欧美视频一区精品| 亚洲欧美视频在线观看视频| 国产欧美一区二区精品忘忧草| 欧美一区二区三区视频免费播放| 99国产精品国产精品毛片| 国产成人免费在线观看不卡| 另类成人小视频在线| 三级精品在线观看| 亚洲不卡一区二区三区| 一区二区三区中文字幕| 日韩美女视频一区二区| 国产欧美日本一区视频| 久久久国产午夜精品| 精品日本一线二线三线不卡| 日韩一区二区电影| 91精品国产综合久久精品app | 国产欧美精品一区| 久久精品一区二区三区av| 欧美v国产在线一区二区三区|