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

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

?? usbtargmslib.c

?? This the compressed USB driver source code for vxworks5.6. It has device controller driver and other
?? C
?? 第 1 頁 / 共 5 頁
字號:
* value.
*
* RETURNS: USB_BULK_CBW
*
* ERRNO:
*  none.
*/

USB_BULK_CBW *usbMsCBWInit (void)
    {
    
    /* init CBW and set signature */
    
    memset(&g_cbw, 0, sizeof(USB_BULK_CBW));
    g_cbw.signature = USB_BULK_SWAP_32 (USB_CBW_SIGNATURE);

    return(&g_cbw);
    }

/******************************************************************************
*
* usbMsCSWGet - get the current CSW
*
* This routine retrieves the current CSW.
*
* RETURNS: USB_BULK_CSW
*
* ERRNO:
*  none.
*/

USB_BULK_CSW *usbMsCSWGet (void)
    {

    /* return instance of last saved CSW data structure */

    return(&g_csw);
    }

/*******************************************************************************
*
* usbMsCSWInit - initialize the CSW
*
* This routine initializes the CSW.
*
* RETURNS: USB_BULK_CSW
*
* ERRNO:
*  none
*/

USB_BULK_CSW *usbMsCSWInit (void)
    {
    memset(&g_csw, 0, sizeof(USB_BULK_CSW));
    g_csw.signature = USB_BULK_SWAP_32 (USB_CSW_SIGNATURE);

    return(&g_csw);
    }


/*******************************************************************************
*
* usbMsBulkInStall - stall the bulk-in pipe
*
* This routine stalls the bulk-in pipe.
*
* RETURNS: OK or ERROR if not able to stall the bulk IN endpoint.
*
* ERRNO: 
*  none
*/

STATUS usbMsBulkInStall (void)
    {
    STATUS	retVal = ERROR;

#ifdef USB1_1
    retVal = usbTargPipeStatusSet(g_targChannel,
                                  g_bulkInPipeHandle,
                                  TCD_ENDPOINT_STALL);
#else
    retVal = usbTargPipeStatusSet(g_bulkInPipeHandle,
                                  TCD_ENDPOINT_STALL);
#endif

    if (retVal == OK)
        g_bulkInStallStatus = TRUE;
    return(retVal);
    }


/*******************************************************************************
*
* usbMsBulkInUnStall - unstall the bulk-in pipe
*
* This routine unstalls the bulk-in pipe.
*
* RETURNS: OK or ERROR if not able to un-stall the bulk IN endpoint.
*
* ERRNO: 
*  none
*/

STATUS usbMsBulkInUnStall (void)
    {
    STATUS	retVal = ERROR;

    /* Unstall the endpoint */

#ifdef USB1_1

    retVal = usbTargPipeStatusSet(g_targChannel,
                                  g_bulkInPipeHandle,
                                  TCD_ENDPOINT_UNSTALL);
#else
    retVal = usbTargPipeStatusSet(g_bulkInPipeHandle,
                                  TCD_ENDPOINT_UNSTALL);
#endif

    if (retVal == OK)
        g_bulkInStallStatus = FALSE;

    return(retVal);
    }

/*******************************************************************************
*
* usbMsBulkOutStall - stall the bulk-out pipe
*
* This routine stalls the bulk-out pipe.
*
* RETURNS: OK or ERROR in unable to stall the bulk OUT endpoints.
*
* ERRNO:
*  none.
*/

STATUS usbMsBulkOutStall (void)
    {
    STATUS	retVal = ERROR;

    /* Stall the bulk OUT endpoint */

#ifdef USB1_1

    retVal = usbTargPipeStatusSet(g_targChannel,
                                  g_bulkOutPipeHandle,
                                  TCD_ENDPOINT_STALL);
#else
    retVal = usbTargPipeStatusSet(g_bulkOutPipeHandle,
                                  TCD_ENDPOINT_STALL);
#endif
    if (retVal == OK)
        g_bulkOutStallStatus = TRUE;

    return(retVal);
    }

/*******************************************************************************
*
* usbMsBulkOutUnStall - unstall the bulk-out pipe
*
* This routine unstalls the bulk-out pipe.
*
* RETURNS: OK or ERROR if not able to unstall the bulk out endpoints
*
* ERRNO: 
*  none
*/

STATUS usbMsBulkOutUnStall (void)
    {
    STATUS	retVal = ERROR;

    /* un-stall the bulk-out endpoint */ 

#ifdef USB1_1
    retVal = usbTargPipeStatusSet(g_targChannel,
                                  g_bulkOutPipeHandle,
                                  TCD_ENDPOINT_UNSTALL);
#else
    retVal = usbTargPipeStatusSet(g_bulkOutPipeHandle,
                                  TCD_ENDPOINT_UNSTALL);
#endif

    if (retVal == OK)
        g_bulkOutStallStatus = FALSE;

    return(retVal);
    }


/******************************************************************************
*
* featureClear - clear the specified feature
*
* This routine implements the clear feature standard device request.
*
* RETURNS: OK or ERROR if not able to clear the feature 
*
* ERRNO:
*  none. 
*/

LOCAL STATUS featureClear
    (
    pVOID		param,		/* TCD specific parameter */
    USB_TARG_CHANNEL	targChannel,	/* target channel */
    UINT8		requestType,	/* request type */
    UINT16		feature,	/* feature to clear */
    UINT16		index		/* index */
    )
    {
    STATUS		status = ERROR;	/* status value */
    UINT8		* pData;	/* to hold CSW */
    UINT32		dSize;		/* size of USB_BULK_CSW */
    struct usbBulkCsw	* pCsw;		/* Command Status Wrapper */
    BOOL		CSWsend = FALSE;

    /* only one target */

    if (targChannel != g_targChannel) 
        return(ERROR);

    /* This request is not accepted when the device is in the default state */

    if (g_deviceAddr == 0)
        return ERROR;

    /* this request must be standard request from the host */

    if (((requestType & USB_RT_DIRECTION_MASK) != USB_RT_HOST_TO_DEV) ||
        ((requestType & USB_RT_CATEGORY_MASK) != USB_RT_STANDARD))
        return(ERROR);

    requestType &= ~(USB_RT_DIRECTION_MASK | USB_RT_CATEGORY_MASK);

    if (requestType == USB_RT_ENDPOINT)
        {
        if (feature == USB_FSEL_DEV_ENDPOINT_HALT)
            {
            if (index == MS_BULK_IN_ENDPOINT_NUM)
                {
                status = usbMsBulkInUnStall();

                if ((status == OK) && (g_bulkInStallFlag == TRUE))
                    {
                    g_bulkInStallFlag = FALSE;
                    CSWsend = TRUE;
                    }
                }
            else if (index == MS_BULK_OUT_ENDPOINT_NUM)
                {
                status = usbMsBulkOutUnStall();

                if ((status == OK) && (g_bulkOutStallFlag == TRUE))
                    {
                    g_bulkOutStallFlag = FALSE;
                    CSWsend = TRUE;
                    }
                }
            else
                status = ERROR;

            if (CSWsend == TRUE)
                {
                pCsw = usbMsCSWGet();
                pData = (UINT8 *)pCsw;
                dSize = sizeof(USB_BULK_CSW);
                if (usbMsBulkInErpInit(pData, dSize,
                                   bulkInErpCallbackCSW, NULL) != OK)
                    return(ERROR);                                   
                }

            return(status);
            }
        else
            return(ERROR);
        }
    else if (requestType == USB_RT_DEVICE)
        {
        if (feature == USB_FSEL_DEV_REMOTE_WAKEUP)
            {

#ifdef USB1_1

            /* set remote device wakeup flag to TRUE */

            g_remoteDevWakeup = TRUE;

            return(OK);

#else

            /* 
             * If the device supports remote wakeup, call the function
             * to clear the remote wakeup feature
             */

            if ((g_uDeviceFeature & USB_FEATURE_DEVICE_REMOTE_WAKEUP) != 0)
                {
                status = usbTargDeviceFeatureClear(targChannel, feature);

                /* Clear the global status */

                if (status == OK)
                    g_uDeviceStatus &= ~0x02;
                }
            else
                status = ERROR;

            return(status);
#endif
            }
        else
            return(ERROR);
        }
    else if (requestType == USB_RT_INTERFACE)
        return(ERROR);
    else
        return(ERROR);
    }


/*******************************************************************************
*
* featureSet - set the specified feature
*
* This routine implements the set feature standard device request.
*
* RETURNS: OK or ERORR if not able to set the feature.
*
* ERRNO:
*  none.
*/
LOCAL STATUS featureSet
    (
    pVOID		param,		/* TCD specific parameter */
    USB_TARG_CHANNEL	targChannel,	/* target channel */	
    UINT8		requestType,	/* request type */
    UINT16		feature,	/* feature to set */
    UINT16		index		/* wIndex */
    )
    {
    STATUS		status = ERROR;

    /* only one target */
	
    if (targChannel != g_targChannel) 
        return(ERROR);

    /*
     * This request is not accepted when the the device is in the default state
     * and the feature to be set is not TEST_MODE
     */

    if ((g_deviceAddr == 0) && (feature != USB_FSEL_DEV_TEST_MODE))
        return ERROR;

    /* this request must be standard request from the host */

    if (((requestType & USB_RT_DIRECTION_MASK) != USB_RT_HOST_TO_DEV) ||
        ((requestType & USB_RT_CATEGORY_MASK) != USB_RT_STANDARD))
        return(ERROR);

    requestType &= ~(USB_RT_DIRECTION_MASK | USB_RT_CATEGORY_MASK);

    if (requestType == USB_RT_ENDPOINT)
        {
        if (feature == USB_FSEL_DEV_ENDPOINT_HALT)
            {
            if (index == g_bulkInEpDescr.endpointAddress)
                status = usbMsBulkInStall();
            else if (index == g_bulkOutEpDescr.endpointAddress)
                status = usbMsBulkOutStall();
            else
                status = ERROR;

            return(status);
            }
        else
            return(ERROR);
        }
    else if (requestType == USB_RT_DEVICE)
        {
        if (feature == USB_FSEL_DEV_REMOTE_WAKEUP)
            {
#ifdef USB1_1

            /* set remote device wakeup flag to TRUE */

            g_remoteDevWakeup = TRUE;
            return(OK);
#else
            /*
             * If the device supports remote wakeup, call the function
             * to set the remote wakeup feature
             */

            if ((g_uDeviceFeature & USB_FEATURE_DEVICE_REMOTE_WAKEUP) != 0)
                {
                status = usbTargDeviceFeatureSet(targChannel, feature, index);

                /* Set the global status */

                if (status == OK)
                    g_uDeviceStatus |= 0x02;
                }
            else
                status = ERROR;

            return(status);
#endif
            }
        else if (feature == USB_FSEL_DEV_TEST_MODE) /* TEST_MODE */
            {
#ifdef USB1_1

#if(MS_USB_HIGH_SPEED == 1)

            /*
             * NOTE: device can only go into test mode until after this
             * request is acknowledged in the status phase
             */

             return(ERROR);
#else
             return(ERROR);
#endif
#else

            /*
             * If the device supports remote wakeup, call the function
             * to set the test mode feature
             */

            if ((g_uDeviceFeature & USB_FEATURE_TEST_MODE) != 0)
                {
                status = usbTargDeviceFeatureSet(targChannel,
                                                 feature,
                                                 ((index & 0xFF00) << 8));
                }

            return(status);
#endif
            }
        else
            return(ERROR);
        }
    else if (requestType == USB_RT_INTERFACE)
        return(ERROR);
    else
        return(ERROR);
    }

#ifdef USB1_1

/*******************************************************************************
*
* statusGet - get the specified status
*
* This routine implements the get status standard device request.
*
* RETURNS: OK or ERROR if not able to set the status
*
* ERRNO:
*  none
*/

LOCAL STATUS statusGet
    (
    pVOID		param,		/* TCD specific parameter */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷精品久久二区二区蜜臂av | 毛片av一区二区| 日韩福利视频导航| 国内精品视频666| 94色蜜桃网一区二区三区| 欧美日韩中文字幕一区二区| 精品免费视频.| 亚洲视频综合在线| 美女一区二区视频| av男人天堂一区| 6080yy午夜一二三区久久| 国产亚洲婷婷免费| 亚洲精品美腿丝袜| 美女高潮久久久| 色噜噜狠狠色综合欧洲selulu| 欧美一区二区免费| 亚洲欧洲99久久| 麻豆中文一区二区| 色爱区综合激月婷婷| 亚洲精品一区二区三区影院 | 91小宝寻花一区二区三区| 欧美肥妇free| 国产精品进线69影院| 丝袜美腿一区二区三区| 丰满白嫩尤物一区二区| 欧美色男人天堂| 亚洲国产高清不卡| 免费成人在线网站| 91在线播放网址| 精品久久久久99| 亚洲午夜精品一区二区三区他趣| 国产福利91精品| 欧美一卡二卡在线| 一区二区在线观看免费| 国产精品一二三在| 在线播放国产精品二区一二区四区| 亚洲国产精品激情在线观看| 美女视频黄 久久| 欧美色综合久久| 日韩理论电影院| 国产乱子轮精品视频| 欧美人动与zoxxxx乱| 中文字幕一区二区在线播放| 激情五月激情综合网| 欧美日韩aaa| 亚洲欧美另类久久久精品| 国产一区二区三区在线观看精品 | 天堂蜜桃一区二区三区| 99精品视频在线免费观看| 精品入口麻豆88视频| 亚洲第一成年网| 91网上在线视频| 国产女主播视频一区二区| 久久精品国产精品青草| 在线成人小视频| 一区二区三区精品视频| 成人免费视频网站在线观看| 精品粉嫩aⅴ一区二区三区四区| 日韩精品视频网| 欧美日韩一级二级三级| 亚洲免费观看高清| 97久久精品人人澡人人爽| 久久久99久久| 国产91精品一区二区麻豆网站| 26uuu亚洲综合色欧美| 免费成人av在线| 日韩一区二区在线播放| 亚洲成人激情社区| 欧美日韩午夜影院| 午夜视频一区在线观看| 欧美日韩国产在线播放网站| 亚洲自拍偷拍麻豆| 欧美视频完全免费看| 亚洲一区在线观看视频| 欧美色综合久久| 日韩精品亚洲专区| 日韩一区二区免费视频| 免费久久99精品国产| 91精品国产美女浴室洗澡无遮挡| 日韩二区在线观看| 日韩视频一区二区在线观看| 免费人成网站在线观看欧美高清| 欧美一区二区三区影视| 蜜桃精品在线观看| 精品乱人伦小说| 国产成人综合自拍| 中文字幕不卡一区| 成a人片国产精品| 亚洲女同一区二区| 欧美日韩在线不卡| 蜜桃视频一区二区三区在线观看| 日韩欧美在线123| 国产一区二区三区观看| 国产拍揄自揄精品视频麻豆| a级精品国产片在线观看| 亚洲男女一区二区三区| 欧美老年两性高潮| 蜜臀av性久久久久蜜臀av麻豆 | 国产精品亚洲成人| 国产精品乱人伦一区二区| 91亚洲精品久久久蜜桃| 亚洲国产日韩精品| 日韩欧美成人午夜| 国产成人高清在线| 亚洲美女在线国产| 欧美精品久久久久久久多人混战| 久久99深爱久久99精品| 国产精品乱码一区二三区小蝌蚪| 91豆麻精品91久久久久久| 日韩国产欧美视频| 欧美国产成人精品| 欧美性大战久久久久久久蜜臀| 免费高清成人在线| 国产精品美女一区二区| 欧美亚洲国产一区在线观看网站 | 久久噜噜亚洲综合| av不卡在线播放| 丝袜诱惑亚洲看片| 久久一区二区三区四区| 色综合久久久久久久久久久| 日韩1区2区日韩1区2区| 日本一区二区三区四区| 欧美日韩性生活| 大陆成人av片| 日韩国产高清在线| 国产日本欧洲亚洲| 欧美乱熟臀69xxxxxx| 福利一区二区在线观看| 日韩一区精品字幕| 国产精品久久久一本精品| 欧美一区三区二区| 99re这里都是精品| 免费av成人在线| 亚洲激情av在线| 国产亚洲欧美激情| 欧美系列亚洲系列| 国产91色综合久久免费分享| 视频在线观看91| 亚洲视频一区在线观看| 欧美精品一区视频| 欧美私模裸体表演在线观看| 粉嫩av一区二区三区在线播放| 五月天激情综合网| 《视频一区视频二区| 日韩精品一区二区三区三区免费| 欧洲一区二区三区免费视频| 国产一区二区电影| 午夜在线电影亚洲一区| **网站欧美大片在线观看| 精品国产亚洲在线| 欧美午夜精品免费| 99精品视频在线观看| 国产精品一区二区久久不卡| 秋霞成人午夜伦在线观看| 亚洲影视在线播放| 亚洲少妇30p| 国产午夜三级一区二区三| 在线播放欧美女士性生活| 91激情五月电影| av激情综合网| 粉嫩av一区二区三区在线播放| 久久99精品久久久久久动态图| 午夜欧美大尺度福利影院在线看| 亚洲欧美日韩一区二区| 国产精品无遮挡| 国产午夜精品一区二区三区嫩草| 日韩三区在线观看| 欧美人妖巨大在线| 欧美视频一区二区在线观看| 91激情五月电影| 日本精品免费观看高清观看| 99精品国产热久久91蜜凸| 国产91在线看| 国产69精品久久99不卡| 国产精品 日产精品 欧美精品| 久久国产免费看| 蜜桃av噜噜一区| 免费黄网站欧美| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩精品一二三四| 日本女人一区二区三区| 日本不卡一区二区三区高清视频| 日韩成人午夜电影| 全部av―极品视觉盛宴亚洲| 日韩电影免费在线| 日韩精品亚洲专区| 美腿丝袜亚洲综合| 激情久久五月天| 国产精品一区三区| 大白屁股一区二区视频| 粉嫩av亚洲一区二区图片| 成人性生交大片免费看视频在线| 粉嫩av一区二区三区| av成人免费在线| 一本大道久久a久久综合| 色先锋久久av资源部| 欧洲生活片亚洲生活在线观看| 欧美午夜精品一区二区蜜桃| 欧美日韩一二三| 日韩一区二区麻豆国产|