?? usbhubmisc.c
字號:
/* usbHubMisc.c - debug functionality functions *//* Copyright 2003 Wind River Systems, Inc. *//*Modification history--------------------01a,16Sep03,amn Changing the code to WRS standards*//*DESCRIPTIONThis module provides the debug functionality functions for theUSB Hub Class DriverINCLUDE FILES: usb2/usbHubCommon.h usb2/usbHubUtility.h usb2/usbHubMisc.h*//*INTERNAL ******************************************************************************* * Filename : usbHubMisc.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 module provides the debug functionality functions for * the USB Hub Class Driver. * * ******************************************************************************//************************** INCLUDE FILES *************************************/#include "usb2/usbHubCommon.h"#include "usb2/usbHubUtility.h"#include "usb2/usbHubMisc.h"/****************** MODULE SPECIFIC MACRO DEFINITIONS ************************//* Defines for the return types for detected devices */#define USBHUB_NODETYPE_HUB (0x02)#define USBHUB_NODETYPE_DEVICE (0x01)#define USBHUB_NODETYPE_NONE (0x00)/************************ GLOBAL FUNCTIONS ************************************//***************************************************************************** usbHubPortCntGet - returns the number of ports connected to a hub.** This routine returns the number of ports connected to a hub.** RETURNS: USBHST_SUCCESS, USBHST_FAILURE if error occured.** ERRNO: None** \NOMANUAL*/USBHST_STATUS usbHubPortCntGet ( UINT32 uHubId, PUINT16 pPortCount ) { /* The pointer to the parent hub */ pUSB_HUB_INFO pParentHub = NULL; /* The pointer to the actual hub */ pUSB_HUB_INFO pHub = NULL; /* port number of the device */ UINT8 uPortIndex = 0; /* The port Information */ pUSB_HUB_PORT_INFO pPort = NULL; /* Debug Message */ OS_LOG_MESSAGE_LOW( HUB, "usbdHubPortCountGet: Called devH=0x%x\n", uHubId, 0, 0, 0); /* if NULL parameter return USBHST_INVALID_PARAMETER */ if (NULL == pPortCount) { /* Debug Message */ OS_LOG_MESSAGE_HIGH( HUB, "usbdHubPortCountGet: Null PortCount pointer\n", 0, 0, 0, 0); return USBHST_INVALID_PARAMETER; }/* End of if (NULL == pPortCount ) */ /* * Call usbHubFindParentHubInBuses() to find the parent hub and If this * is not found, then return USBHST_INVALID_PARAMETER. */ pParentHub = usbHubFindParentHubInBuses(uHubId); /* if not found and not a root hub, return USBHST_INVALID_PARAMETER */ if (NULL == pParentHub) { /* The bus List pointer to be used for browsing the list */ pUSB_HUB_BUS_INFO pBusList = gpGlobalBus; /* While the pbusList is not null */ while ( NULL != pBusList ) { /* Check if we have a root hub info */ if ( NULL != pBusList->pRootHubInfo) { /* Check if the device handles match */ if (uHubId == pBusList->pRootHubInfo->uDeviceHandle) { /* we got the hub */ pHub = pBusList->pRootHubInfo; break; } } /* End of if ( NULL != pBusList->pRootHubInfo) */ /* Move the pointer to the next bus */ pBusList=pBusList->pNextBus; }/* End of while (pBus... */ /* Check if we found the root hub if not, return error */ if (NULL == pBusList) { /* Debug Message */ OS_LOG_MESSAGE_HIGH( HUB, "usbdHubPortCountGet: parent hub not found\n", 0, 0, 0, 0); return USBHST_INVALID_PARAMETER; }/* End of if NULL... */ }/* End of if (NULL == pParentHub ) */ /* there is a parent hub */ else { /* * HUB_FindPortNumber() to find the port number for this device handle. * If this is not found, then return USBHST_INVALID_PARAMETER. */ uPortIndex = usbHubFindPortNumber(pParentHub,uHubId); /* Check if the port is found */ if (USB_PORT_NUMBER_NOT_FOUND == uPortIndex) { /* Debug Message */ OS_LOG_MESSAGE_HIGH( HUB, "usbdHubPortCountGet: port num not found\n", 0, 0, 0, 0); return USBHST_INVALID_PARAMETER; } /* End of if (PORT_NUM.. */ /* Check if the port number is within limits */ if (uPortIndex >= (pParentHub->HubDescriptor.bNbrPorts)) { /* Debug Message */ OS_LOG_MESSAGE_HIGH( HUB, "usbdHubPortCountGet: port=%d > %d\n", uPortIndex, pParentHub->HubDescriptor.bNbrPorts, 0, 0); return USBHST_INVALID_PARAMETER; } /* End of (uPortIndex > (pParentHub->.... */ /* * Retrieve HUB_INFO structure from * parentHub::pPortList[uPortIndex]::pHub. */ pPort = pParentHub->pPortList[uPortIndex]; OS_ASSERT(pPort != NULL); /* Verify */ /* retrieve the pHub */ pHub= pPort->pHub; /* * Check if the port is actually a hub. if not, return failure. */ if (NULL == pHub) { /* Debug Message */ OS_LOG_MESSAGE_MEDIUM( HUB, "usbdHubPortCountGet: Hub Handle 0x%x is not a hub!\n", uHubId, 0, 0, 0); return USBHST_FAILURE; } /* End of if (NULL == pPort->pHub) */ } /* End of else of if (NULL ==pParentHub) */ /* retrieve the port count information */ *pPortCount = pHub->HubDescriptor.bNbrPorts; /* Debug Message */ OS_LOG_MESSAGE_LOW( HUB, "usbdHubPortCountGet: Completed success\n", 0, 0, 0, 0); /* return USBHST_SUCCESS */ return USBHST_SUCCESS;} /* End of usbdHubPortCountget() *//***************************************************************************** usbHubNodeIDGet - Gets the node id of the node connected to hub port.** This routine gets the node id of the node connected to hub port.** RETURNS: USBHST_SUCCESS, USBHST_FAILURE if error occured.** ERRNO: None* * \NOMANUAL*/USBHST_STATUS usbHubNodeIDGet ( UINT32 uHubId, UINT16 uPortIndex, PUINT16 pNodeType, PUINT32 pNodeId ) { /* The pointer to the parent hub */ pUSB_HUB_INFO pParentHub = NULL; /* The pointer to the actual hub */ pUSB_HUB_INFO pHub = NULL; /* port number of the device */ UINT8 uPortCount = 0; /* The port Information */ pUSB_HUB_PORT_INFO pPort = NULL; /* Debug Message */ OS_LOG_MESSAGE_LOW( HUB, "usbdNodeIdGet: Called devH=0x%x\n", uHubId, 0, 0, 0); /* if NULL parameter return USBHST_INVALID_PARAMETER */ if ((NULL == pNodeType)||(NULL == pNodeId)) { /* Debug Message */ OS_LOG_MESSAGE_HIGH( HUB, "usbdNodeIdGet: Null pointer in param pNodeType=0x%x" " pNodeId=0x%x\n", (UINT32)pNodeType, (UINT32)pNodeId, 0, 0); return USBHST_INVALID_PARAMETER; }/* End of if ((NULL == pNodeType)||(NULL == pNodeId)) */ /* * Call HUB_FindParentHubInBuses() to find the parent hub and If this * is not found, then return USBHST_INVALID_PARAMETER. */ pParentHub = usbHubFindParentHubInBuses(uHubId); /* if not found and not a root hub, return USBHST_INVALID_PARAMETER */ if (NULL == pParentHub) { /* The bus List pointer to be used for browsing the list */ pUSB_HUB_BUS_INFO pBusList = gpGlobalBus;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -