⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbhubeventhandler.c

📁 usb2 driver for vxwokrs
💻 C
字号:
/* usbHubEventHandler.c - Functions for handling HUB events *//* Copyright 2004 Wind River Systems, Inc.    This software includes software licensed to Wind River Systems, Inc.   by Wipro, Ltd. Wind River licensees may use this software according     to the terms of their Wind River license agreement(s) applicable to    this software.*//*Modification history--------------------01b,15oct04,ami  Refgen Changes01a,27jun03,nrv Changing the code to WRS standards*//*DESCRIPTIONThis provides the functions for handling the hub events. This is used in conjunction with the Port Event Handling Module and Bus Manager Module.INCLUDE FILES:  usb2/usbOsal.h, usb2/usbHst.h, usb2/usbHubCommon.h,usb2/usbHubUtility.h, usb2/usbHubEventHandler.h*//*INTERNAL ******************************************************************************* * Filename         : HUB_HubEventHandler.c * * Copyright        : * * THE COPYRIGHT IN THE CONTENTS OF THIS SOFTWARE VEST WITH WIPRO * LIMITED A COMPANY INCORPORATED UNDER THE LAWS OF INDIA AND HAVING * ITS REGISTERED OFFICE AT DODDAKANNELLI SARJAPUR ROAD  BANGALORE * 560 035. DISTRIBUTION OR COPYING OF THIS SOFTWARE BY * ANY INDIVIDUAL OR ENTITY OTHER THAN THE ADDRESSEE IS STRICTLY * PROHIBITED AND MAY INCUR LEGAL LIABILITY. IF YOU ARE NOT THE * ADDRESSEE PLEASE NOTIFY US IMMEDIATELY BY PHONE OR BY RETURN EMAIL. * THE ADDRESSEE IS ADVISED TO MAINTAIN THE PROPRIETARY INTERESTS OF * THIS COPYRIGHT AS PER APPLICABLE LAWS. * * * Description      : This provides the functions for handling the hub events. *                    This is used in conjunction with the Port Event Handling *                    Module and Bus Manager Module. * * ******************************************************************************//************************** INCLUDE FILES *************************************/#include "usb2/usbOsal.h"#include "usb2/usbHst.h"#include "usb2/usbHubCommon.h"#include "usb2/usbHubUtility.h"#include "usb2/usbHubEventHandler.h"/************************ GLOBAL FUNCTIONS DEFINITION *************************//***************************************************************************** usbHubEventHandler - Handle the hub event.** This is the function to handle the hub event. This has  the maximum priority * over any other event. Each Bus structure maintains a variable whose count is* incremented every time a hub event is detected and decremented every time a* hub event is handled. Only when this counter is 0 are other events handled.** RETURNS: N/A** ERRNO: None** \NOMANUAL*/LOCAL USBHST_STATUS usbHubEventHandler     (    pUSB_HUB_INFO pHub    )    {    /* To store the Hub Status */    USB_HUB_STATUS    HubStatus;    /* To store the length of the buffer */    UINT8         uLength = sizeof(USB_HUB_STATUS);    /* To store the result */    USBHST_STATUS Result;    /* Counter for the port numbers */    UINT8         uPortCount = 0;    /* WindView Instrumentation */    USB_HUB_LOG_EVENT(			USB_HUB_WV_EVENT_HANDLER,			"Entering usbHubEventHandler() Function",			USB_HUB_WV_FILTER);    /* Debug Message */    OS_LOG_MESSAGE_LOW(        HUB,        "usbHubEventHandler: Called pHub=0x%x\n",        (UINT32)pHub,        0,        0,        0);    /* If the pHub is NULL then return  USBHST_INVALID_PARAMETER */    if (NULL == pHub)    {        /* Debug Message */        OS_LOG_MESSAGE_MEDIUM(            HUB,"usbHubEventHandler: Done pHub=NULL\n",0,0,0,0);        return USBHST_INVALID_PARAMETER;    }/* End of if (NULL == pHub) */    /* Call HUB_GET_HUB_STATUS for getting the HUB_STATUS structure.     * i. If the call fails then set the pHub::StateOfHub     *    as MARKED_FOR_DELETION.     * ii.Return the result.     */         Result = USB_HUB_GET_STATUS(pHub,(UINT8 *)(&HubStatus),&uLength);     /* Check if the call failed. */    if (( USBHST_SUCCESS != Result)|| (sizeof(USB_HUB_STATUS) != uLength))    {        /* Debug Message */        OS_LOG_MESSAGE_HIGH(            HUB,"usbHubEventHandler: GetHubStatus Failed\n",0,0,0,0);        /* Mark the hub for deletion */        pHub->StateOfHub = USB_MARKED_FOR_DELETION;        return Result;    }/* End of if (USBHST_SUCCESS != Result) */    /* for all ports that are enabled,     * i. Call HUB_PowerOnPort() with pHub and port count to re enable the     *    port. If the call fails, then return USBHST_FAILURE.     */    for (uPortCount = 0;         uPortCount < pHub->HubDescriptor.bNbrPorts;         uPortCount++)    {        Result=usbHubPowerOnPort(pHub,uPortCount);        if (USBHST_SUCCESS !=Result)        {            /* Debug Message */            OS_LOG_MESSAGE_HIGH(                HUB,                "usbHubEventHandler:power on port %d failed\n",                uPortCount,                0,                0,                0);            return Result;        }/* End of if (USBHST_SUCCESS !=Result) */    } /* End of for (uPortCount.... */    /*     * Call OS_LOCKED_DECREMENT() to decrement pHub::pBus::uNumberOfHubEvents.     */    OS_LOCKED_DECREMENT(pHub->pBus->uNumberOfHubEvents);    /* Clean up the bit of hub status */    pHub->pStatus[0] = (pHub->pStatus[0] & (0xFE));    /* WindView Instrumentation */    USB_HUB_LOG_EVENT(			USB_HUB_WV_EVENT_HANDLER,			"Exiting usbHubEventHandler() Function",			USB_HUB_WV_FILTER);    /* Debug Message */    OS_LOG_MESSAGE_LOW(        HUB,        "usbHubEventHandler: Done pHub=0x%x\n",        (UINT32)pHub,        0,        0,        0);    /* Return USBHST_SUCCESS*/    return USBHST_SUCCESS;    }/* End of HUB_HubEventHandler ()*//**************************** End of File HUB_HubEventHandler.c ***************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -