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

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

?? c5509_usb_ctrl.c

?? 基于TMS320VC5507DSP和CF卡的MP3項目的源代碼、電路圖、PCB文件
?? C
字號:
/*
 *  Copyright 2003 by Texas Instruments Incorporated.
 *  All rights reserved. Property of Texas Instruments Incorporated.
 *  Restricted rights to use, duplicate or disclose this code are
 *  granted through contract.
 *  
 */
/* "@(#) DDK 1.11.00.00 11-04-03 (ddk-b13)" */
/*
 *  ======== C5509_usb_ctrl.c ========
 *  This file implements control endpoint 0 handler. 
 */

#include <std.h>

#include <hwi.h>
#include <csl.h>
#include <csl_usb.h>
#include <c5509_usb.h>
#include <_c5509_usb.h>
  
/*
 * Data structure to hold USB setup packet.  
 * Used by USB CSL USB_getSetupPacket() Fxn. 
 */
USB_SetupStruct _C5509_USB_usbSetup = {0, 0, 0, 0, 0, 0};

/*
 * data buffer to send/receive status data to host.
 * first 2 bytes for xfer byte count next 8 bytes are for usb data 
 */
static Uint16 gBuffer[5]; 


/*
 *  ======== standard USB Request Table ========
 *  USB control endpoint 0 handler parses through this table. It calls
 *  back to application with the default handler that matches the request 
 *  sent by the host.
 *  This table is declared in file c5509_usb_reqhndlr.c
 */
extern _C5509_USB_UsbRequestStruct _C5509_USB_usbReqTable[];
 

/*
 *  ======== _C5509_USB_usbReqUnknown ========
 *  Respond to unknown requests. By default, it returns C5509_USB_REQUEST_STALL
 *   to stall endpoint 0.
 */
C5509_USB_UsbReqRet _C5509_USB_usbReqUnknown()
{
    C5509_USB_UsbReqRet retStat = C5509_USB_REQUEST_DONE;

    if (_C5509_USB_usbSetup.New) {
        /* 
         * The request is either not known or not supported.
         * Request the usb control endpoint handler 
         *  to stall the endpoint
         */
        retStat = C5509_USB_REQUEST_STALL;
    }

    return(retStat);
}

/* 
 * initialize the request handler function ptr to _C5509_USB_usbReqUnknown().
 */
C5509_USB_UsbReqHandler fpRequestHandler = _C5509_USB_usbReqUnknown;

/*
 *  ======== C5509_USB_resetEventHandler ========
 *  Host requests device to reset
 *  This function free all packets and complet IOM_FLUSH for all 
 *  channels. It then re-init usb module, set device state to default.
 */
Void C5509_USB_resetEventHandler() 
{
    Uns imask;
    /* stop all data transfer activities */
    USB_abortAllTransaction(USB0);
    
    /* free all packets and complete IOM_FLUSH for all channels */
    imask = HWI_disable();
    _C5509_USB_freeAllPackets();
    HWI_restore(imask);
        
    /* re-init usb module, set state to default */
    _C5509_USB_reInitUsb();
}

/*
 *  ======== C5509_USB_suspendEventHandler ========
 *  Host requests device to suspend
 */
Void C5509_USB_suspendEventHandler(){
    /* 
     *  we do nothing here 
     *  application can extend the functionality
     */
}


/*
 * ======== control endpoint 0 handler ========
 */
Void _C5509_USB_usbCtrlHandler()
{
    C5509_USB_UsbReqRet reqHandlerRet = C5509_USB_REQUEST_DONE;
    USB_EVENT_MASK  usbCtrlEvents;
    USB_EpHandle hEp0In = &_C5509_USB_usbEpObjIn0;
    USB_EpHandle hEp0Out = &_C5509_USB_usbEpObjOut0;
    
    /* find out the control endpoint EP0 event */
    usbCtrlEvents = (USB_getEvents(hEp0Out) | USB_getEvents(hEp0In));
  
    /* 
     * if the USB reset request received, abort all endpoint activities
     * and reconfigure the USB module
     */ 
    if (usbCtrlEvents & USB_EVENT_RESET)  {  /* USB RESET event */
  
        /*
         * host is requesting reset.
         */
        if (_C5509_USB_devParams->deviceConfig->eventHandler != NULL) {
            /* Call configured event handler */
             _C5509_USB_devParams->deviceConfig->eventHandler(USB_EVENT_RESET, 
                     C5509_USB_resetEventHandler);
        }
        else {   /* use default handler */
             C5509_USB_resetEventHandler();
        }
    }
  
    if (usbCtrlEvents & USB_EVENT_SUSPEND) {  /* USB SUSPEND event */
  
        /*
         *  host is requesting suspend
         */
        if (_C5509_USB_devParams->deviceConfig->eventHandler != NULL) {
            _C5509_USB_devParams->deviceConfig->eventHandler(USB_EVENT_SUSPEND,
                     C5509_USB_suspendEventHandler );
        }
        else {
            C5509_USB_suspendEventHandler();   /* call default handler */
        }
    }

  
    /* 
     *  If the event is a setup packet received event then read the setup 
     *  packet, and lookup the usbReqTable[] and user defined table for 
     *  the appropriate request handler
     */
    if ((usbCtrlEvents & USB_EVENT_SETUP) == USB_EVENT_SETUP) {
        /* 
         *  read the setup packet, if something wrong with setup packet
         *  then stall the control endpints
         */
        if ( USB_getSetupPacket( USB0, &_C5509_USB_usbSetup) == USB_FALSE) {
            reqHandlerRet = C5509_USB_REQUEST_STALL;
        }
        else {  
            /* 
             * Get last request from USB setup packet.. 
             * See USB 1.x spec Ch 9 for data formats. 
             */
            _C5509_USB_devObj.lastRequest =
                    ((_C5509_USB_usbSetup.bmRequestType & 0xC0) <<8) |
                    _C5509_USB_usbSetup.bRequest;
            /* 
             * lookup the USB request handler 
             */
            fpRequestHandler =
                 _C5509_USB_usbLookupReqHandler(_C5509_USB_devObj.lastRequest);
      
            /* 
             *  pass the default request handler,
             *  notify application that there is a setup event 
             *  application can extend the functionality
             *  or override the default request handler
             */
            if (_C5509_USB_devParams->deviceConfig->setupEventHandler !=NULL) {
                reqHandlerRet = 
                        _C5509_USB_devParams->deviceConfig->setupEventHandler(
                                _C5509_USB_devObj.lastRequest, 
                                fpRequestHandler, &_C5509_USB_usbSetup);
            }
            else {
                reqHandlerRet = fpRequestHandler();  /* call defualt handler */
            }
        }
   
    }   /* end of if setup event received */
       
    /*
     *  based on the return value from the called request handler routine
     *  send ACK, stall endpoint, or do nothing.
     */
    switch (reqHandlerRet) {
        /* 
         *  the request handler routine successfully completed the task,
         *  send a 0-byte ACK
         */
        case C5509_USB_REQUEST_SEND_ACK :
            USB_postTransaction( hEp0In, 0, NULL, USB_IOFLAG_NONE);
            break;
                   
        case C5509_USB_REQUEST_DATA_OUT :
            break;
         
            /* 
             *  the request handler routine successfully completed the task,
             *  get a 0-byte ACK
             */
        case C5509_USB_REQUEST_GET_ACK :
            USB_postTransaction( hEp0Out, 0, NULL, USB_IOFLAG_NONE);  
            break;

        case C5509_USB_REQUEST_DATA_IN :
            break;
        
        case C5509_USB_REQUEST_SEND_LUN:
            gBuffer[1] = 0;	//we set number of LUNs to 0
  			//send 1 byte indicating number of LUNs
    		USB_postTransaction( hEp0In, 1, gBuffer,
            	USB_IOFLAG_NONE | USB_IOFLAG_NOSHORT );               
            //get ACK;
            USB_postTransaction( hEp0Out, 0, NULL, USB_IOFLAG_NONE);  
            break;               
        /*  
         *  the request handler does not know what to do with the setup 
         *  packet, stall the control endpoints
         */
        case C5509_USB_REQUEST_STALL :
            USB_stallEndpt(hEp0Out);
            USB_stallEndpt(hEp0In);
            break;
         
        case C5509_USB_REQUEST_DONE :
            break;
            
        

        default:
            fpRequestHandler = _C5509_USB_usbReqUnknown;
    }

    /* clear the flags if a new setup packet is received */
    if (_C5509_USB_usbSetup.New) {
        _C5509_USB_usbSetup.New = 0;
    }

}


/*
 *  ======== _C5509_USB_usbLookupReqHandler ========
 *  This function parse through the usbReqTable and 
 *  pickup the address of that particular request handler
 *  request: the first 2 bytes of USB setup packet
 */
C5509_USB_UsbReqHandler _C5509_USB_usbLookupReqHandler(Uint16 request)
{
    Uint16 i;
  
    /* parse thru the end of request handler table */                                                        
    for (i=0; _C5509_USB_usbReqTable[i].usbReqHandler != NULL; i++) {
        /* if request handler exists 
         * return a pointer to the request handler routine
         */
        if(_C5509_USB_usbReqTable[i].request == request) {
            return (_C5509_USB_usbReqTable[i].usbReqHandler);
        }
    }
  
    /* 
     * if request handler does not exist, 
     * return a pointer to the usbReqUnknown routine
     */
    return (_C5509_USB_usbReqUnknown);   
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色狠狠桃花综合| 欧美猛男gaygay网站| 日韩av不卡一区二区| 亚洲精品成人精品456| 中文字幕一区在线观看| 国产精品卡一卡二| 综合色中文字幕| 亚洲欧美在线视频观看| 国产精品成人免费精品自在线观看| 国产夜色精品一区二区av| 久久这里只有精品6| 国产农村妇女精品| 亚洲欧洲av一区二区三区久久| 国产精品无遮挡| 亚洲日本va在线观看| 一区二区三区鲁丝不卡| 亚洲一区二区三区在线看| 性感美女极品91精品| 丝袜a∨在线一区二区三区不卡| 亚洲bdsm女犯bdsm网站| 久色婷婷小香蕉久久| 韩国女主播一区| 96av麻豆蜜桃一区二区| 91极品美女在线| 欧美一区二区三区四区五区| 久久综合色之久久综合| 亚洲天堂福利av| 日日欢夜夜爽一区| 粉嫩欧美一区二区三区高清影视| 99国产精品久| 日韩三级伦理片妻子的秘密按摩| 国产偷国产偷亚洲高清人白洁| 亚洲欧洲另类国产综合| 日韩成人一级大片| 成人午夜短视频| 欧美精品精品一区| 国产欧美日韩另类一区| 一区二区日韩av| 国产一区美女在线| 色婷婷av一区二区三区软件| 日韩久久精品一区| 亚洲欧美另类图片小说| 精品一区二区久久久| 91婷婷韩国欧美一区二区| 欧美一区二区三区系列电影| 亚洲欧美在线另类| 久久国产精品一区二区| 91成人在线精品| 久久久91精品国产一区二区三区| 亚洲一区二区影院| 成人免费看黄yyy456| 日韩午夜在线播放| 亚洲靠逼com| 成人免费高清视频| 久久综合久色欧美综合狠狠| 亚洲国产精品久久久久婷婷884| 国产夫妻精品视频| 欧美日韩国产片| 亚洲免费av网站| 成人精品电影在线观看| 精品美女被调教视频大全网站| 亚洲一区免费视频| 91猫先生在线| 最新热久久免费视频| 国产精品99久久久久| 精品久久久久av影院| 丝袜亚洲另类欧美| 欧美三区在线视频| 亚洲综合激情另类小说区| 色呦呦国产精品| 日韩毛片在线免费观看| 成a人片国产精品| 欧美极品美女视频| 高清不卡一区二区| 欧美激情一区二区三区在线| 久久精品999| www一区二区| 国产乱码精品一区二区三区忘忧草 | 日本中文一区二区三区| 在线免费亚洲电影| 一区二区久久久久久| 欧美午夜一区二区三区免费大片| 亚洲欧美经典视频| 在线观看网站黄不卡| 亚洲成人免费在线| 91麻豆精品国产91| 午夜不卡在线视频| 制服丝袜成人动漫| 激情久久久久久久久久久久久久久久| 精品久久久久久久久久久久久久久久久 | 久久综合九色综合97_久久久| 久久99精品国产91久久来源| 精品日韩99亚洲| 成人综合在线网站| 亚洲另类色综合网站| 欧美日韩精品久久久| 精品一区二区三区在线视频| 久久精品无码一区二区三区 | 中文字幕一区三区| 欧美日韩一区二区在线视频| 日韩av网站免费在线| 久久久久97国产精华液好用吗| 成人亚洲一区二区一| 亚洲精品国产无套在线观| 欧美老年两性高潮| 国产成人亚洲综合色影视| 国产精品久久久久7777按摩| 欧美色精品在线视频| 国产一区二区三区在线观看免费| 亚洲色图视频免费播放| 色久优优欧美色久优优| 麻豆一区二区三| 国产精品情趣视频| 在线成人av影院| 成人免费的视频| 日本欧美一区二区三区| 中文字幕在线观看不卡视频| 777精品伊人久久久久大香线蕉| 国产福利视频一区二区三区| 日韩专区欧美专区| 国产精品久久国产精麻豆99网站| 欧美福利一区二区| 91免费看`日韩一区二区| 日韩国产一区二| 国产目拍亚洲精品99久久精品| 欧美日韩国产高清一区| 波多野洁衣一区| 极品少妇xxxx精品少妇| 国产精品看片你懂得| 欧美v日韩v国产v| 欧美人妇做爰xxxⅹ性高电影| 成人精品视频一区| 精品亚洲成a人| 日本视频在线一区| 亚洲一区二区偷拍精品| 国产精品丝袜在线| 精品欧美一区二区在线观看| 欧美日韩国产中文| 精品少妇一区二区三区在线播放| 色播五月激情综合网| 成人小视频免费观看| 国产精品一卡二卡在线观看| 天天做天天摸天天爽国产一区| 亚洲精品伦理在线| 中文字幕在线播放不卡一区| 久久影院午夜论| 欧美第一区第二区| 欧美一级理论性理论a| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| av电影在线观看一区| 国产99一区视频免费| 国产精品99久久久久久似苏梦涵| 激情五月激情综合网| 狠狠狠色丁香婷婷综合激情| 狠狠色狠狠色综合| 国产一区二区不卡| 国产精品12区| 成人免费视频一区| 91无套直看片红桃| 91久久香蕉国产日韩欧美9色| 欧美中文字幕一区二区三区| 欧美日韩一区高清| 日韩美女视频在线| 国产片一区二区| 亚洲欧美激情插| 亚洲精品一二三四区| 一二三四区精品视频| 五月天一区二区三区| 免费成人在线播放| 黑人精品欧美一区二区蜜桃| 国产精品一卡二卡在线观看| jlzzjlzz亚洲女人18| 欧美在线视频日韩| 欧美日韩www| 欧美精品一区二区三区高清aⅴ| 久久久久久免费毛片精品| 中文字幕免费观看一区| 亚洲免费大片在线观看| 日韩中文字幕亚洲一区二区va在线| 欧美aaaaa成人免费观看视频| 久久精品国产亚洲5555| 国产精品一区在线观看乱码| 成人黄色在线看| 欧美在线观看视频在线| 欧美大片一区二区| 国产精品初高中害羞小美女文| 午夜欧美一区二区三区在线播放| 久久se精品一区精品二区| 成人app网站| 日韩免费一区二区| 中文字幕在线观看一区| 青青草精品视频| 9久草视频在线视频精品| 欧美三级三级三级爽爽爽| 欧美精品一区二区精品网| 亚洲精品五月天| 国产成人精品www牛牛影视| 欧美日韩午夜在线| 中文字幕制服丝袜一区二区三区| 免费高清不卡av|