/* usbdLib.h - USBD functional interface definition */ /* Copyright 2000 Wind River Systems, Inc. */ /* Modification history -------------------- 01h,18sep01,wef merge from wrs.tor2_0.usb1_1-f for veloce 01g,07may01,wef changed module number to be (module sub num << 8) | M_usbHostLib 01f,02may01,wef changed module number to be M_ + M_usbHostLib 01e,05dec00,wef moved Module number defs to vwModNum.h - add this to #includes 01d,26jan00,rcb Redefine parameter to usbdPipeCreate() as UINT32. 01c,29nov99,rcb Increase frame number fields to 32-bits in usbdCurrentFrameGet(). 01b,07sep99,rcb Add management callbacks and set-bus-state API. 01a,07may99,rcb First. */ /* DESCRIPTION Defines the USBD functional interface. Functions are provided to invoke each of the underlying USBD URBs (request blocks). */ #ifndef __INCusbdLibh #define __INCusbdLibh #ifdef __cplusplus extern "C" { #endif /* includes */ #include "usb/usbHandleLib.h" /* handle utility funcs */ #include "usb/usb.h" /* Basic USB definitions */ #include "drv/usb/usbHcd.h" /* USB HCD interface definitions */ #include "vwModNum.h" /* USB Module number def's */ /* defines */ /* USBD Results - URB_HEADER.Result */ /* * USB errnos are defined as being part of the USB host Module, as are all * vxWorks module numbers, but the USB Module number is further divided into * sub-modules. Each sub-module has upto 255 values for its own error codes */ #define USB_USBD_SUB_MODULE 5 #define M_usbdLib ( (USB_USBD_SUB_MODULE << 8) | M_usbHostLib ) #define usbdErr(x) (M_usbdLib | (x)) #define S_usbdLib_BAD_CLIENT usbdErr(1) #define S_usbdLib_BAD_PARAM usbdErr(2) #define S_usbdLib_BAD_HANDLE usbdErr(3) #define S_usbdLib_OUT_OF_MEMORY usbdErr(4) #define S_usbdLib_OUT_OF_RESOURCES usbdErr(5) #define S_usbdLib_NOT_IMPLEMENTED usbdErr(6) #define S_usbdLib_GENERAL_FAULT usbdErr(7) #define S_usbdLib_NOT_INITIALIZED usbdErr(8) #define S_usbdLib_INTERNAL_FAULT usbdErr(9) #define S_usbdLib_TIMEOUT usbdErr(10) #define S_usbdLib_HCD_FAULT usbdErr(11) #define S_usbdLib_IO_FAULT usbdErr(12) #define S_usbdLib_NOT_HUB usbdErr(13) #define S_usbdLib_CANNOT_CANCEL usbdErr(14) #define S_usbdLib_BANDWIDTH_FAULT usbdErr(15) #define S_usbdLib_POWER_FAULT usbdErr(16) #define S_usbdLib_SOF_MASTER_FAULT usbdErr(17) /* String length definitions */ #define USBD_NAME_LEN 32 /* Maximum length for name */ /* management events */ #define USBD_MNGMT_RESUME 1 /* remote wakeup/resume */ /* bus states - see usbdBusStateSet() */ #define USBD_BUS_SUSPEND 0x0001 /* suspend bus */ #define USBD_BUS_RESUME 0x0002 /* resume bus */ /* USBD_NOTIFY_ALL pertains to dynamic attach/removal notification */ #define USBD_NOTIFY_ALL 0xffff #define USBD_DYNA_ATTACH 0 #define USBD_DYNA_REMOVE 1 /* typedefs */ /* Handles and callbacks. */ typedef GENERIC_HANDLE USBD_CLIENT_HANDLE, *pUSBD_CLIENT_HANDLE; typedef GENERIC_HANDLE USBD_NODE_ID, *pUSBD_NODE_ID; typedef GENERIC_HANDLE USBD_PIPE_HANDLE, *pUSBD_PIPE_HANDLE; typedef VOID (*URB_CALLBACK) (pVOID pUrb); typedef VOID (*USBD_ATTACH_CALLBACK) ( USBD_NODE_ID nodeId, UINT16 attachAction, UINT16 configuration, UINT16 interface, UINT16 deviceClass, UINT16 deviceSubClass, UINT16 deviceProtocol ); typedef VOID (*USBD_MNGMT_CALLBACK) ( pVOID callbackParam, USBD_NODE_ID nodeId, UINT16 mngmtCode ); /* * USBD_NODE_INFO */ typedef struct usbd_node_info { UINT16 nodeType; /* Type of node */ UINT16 nodeSpeed; /* Speed of node, e.g., 12MBit, 1.5MBit */ USBD_NODE_ID parentHubId; /* Node Id of hub to which node is connected */ UINT16 parentHubPort; /* Port on parent hub to which connected */ USBD_NODE_ID rootId; /* Node Id of root for USB to which connected */ } USBD_NODE_INFO, *pUSBD_NODE_INFO; /* * USBD_STATS */ typedef struct usbd_stats { UINT16 totalTransfersIn; /* Total # of inbound transfers */ UINT16 totalTransfersOut; /* Total # of outbound transfers */ UINT16 totalReceiveErrors; /* Errors on inbound traffic */ UINT16 totalTransmitErrors; /* Errors on transmit */ } USBD_STATS, *pUSBD_STATS; /* function prototypes */ STATUS usbdInitialize (void); STATUS usbdShutdown (void); STATUS usbdClientRegister ( pCHAR pClientName, /* Client name */ pUSBD_CLIENT_HANDLE pClientHandle /* Client hdl returned by USBD */ ); STATUS usbdClientUnregister ( USBD_CLIENT_HANDLE clientHandle /* Client handle */ ); STATUS usbdMngmtCallbackSet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_MNGMT_CALLBACK mngmtCallback, /* management callback */ pVOID mngmtCallbackParam /* client-defined parameter */ ); STATUS usbdBusStateSet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId, /* node ID */ UINT16 busState /* new bus state: USBD_BUS_xxxx */ ); STATUS usbdBusCountGet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ pUINT16 pBusCount /* Word bfr to receive bus count */ ); STATUS usbdRootNodeIdGet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ UINT16 busIndex, /* Bus index */ pUSBD_NODE_ID pRootId /* bfr to receive Root Id */ ); STATUS usbdHubPortCountGet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID hubId, /* Node Id for desired hub */ pUINT16 pPortCount /* UINT16 bfr to receive port count */ ); STATUS usbdNodeIdGet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID hubId, /* Node Id for desired hub */ UINT16 portIndex, /* Port index */ pUINT16 pNodeType, /* bfr to receive node type */ pUSBD_NODE_ID pNodeId /* bfr to receive Node Id */ ); STATUS usbdNodeInfoGet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId, /* Node Id of device/hub */ pUSBD_NODE_INFO pNodeInfo, /* Structure to receive node info */ UINT16 infoLen /* Len of bfr allocated by client */ ); STATUS usbdDynamicAttachRegister ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ UINT16 deviceClass, /* USB class code */ UINT16 deviceSubClass, /* USB sub-class code */ UINT16 deviceProtocol, /* USB device protocol */ USBD_ATTACH_CALLBACK attachCallback /* User-supplied callback routine */ ); STATUS usbdDynamicAttachUnRegister ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ UINT16 deviceClass, /* USB class code */ UINT16 deviceSubClass, /* USB sub-class code */ UINT16 deviceProtocol, /* USB device protocol */ USBD_ATTACH_CALLBACK attachCallback /* User-supplied callback routine */ ); STATUS usbdFeatureClear ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId, /* Node Id of device/hub */ UINT16 requestType, /* Selects request type */ UINT16 feature, /* Feature selector */ UINT16 index /* Interface/endpoint index */ ); STATUS usbdFeatureSet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId, /* Node Id of device/hub */ UINT16 requestType, /* Selects request type */ UINT16 feature, /* Feature selector */ UINT16 index /* Interface/endpoint index */ ); STATUS usbdConfigurationGet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId, /* Node Id of device/hub */ pUINT16 pConfiguration /* bfr to receive config value */ ); STATUS usbdConfigurationSet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId, /* Node Id of device/hub */ UINT16 configuration, /* New configuration to be set */ UINT16 maxPower /* max power this config will draw */ ); STATUS usbdDescriptorGet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId, /* Node Id of device/hub */ UINT8 requestType, /* specifies type of request */ UINT8 descriptorType, /* Type of descriptor */ UINT8 descriptorIndex, /* Index of descriptor */ UINT16 languageId, /* Language ID */ UINT16 bfrLen, /* Max length of data to be returned */ pUINT8 pBfr, /* Pointer to bfr to receive data */ pUINT16 pActLen /* bfr to receive actual length */ ); STATUS usbdDescriptorSet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId, /* Node Id of device/hub */ UINT8 requestType, /* selects request type */ UINT8 descriptorType, /* Type of descriptor */ UINT8 descriptorIndex, /* Index of descriptor */ UINT16 languageId, /* Language ID */ UINT16 bfrLen, /* Max length of data to be returned */ pUINT8 pBfr /* Pointer to bfr to receive data */ ); STATUS usbdInterfaceGet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId, /* Node Id of device/hub */ UINT16 interfaceIndex, /* Index of interface */ pUINT16 pAlternateSetting /* Current alternate setting */ ); STATUS usbdInterfaceSet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId, /* Node Id of device/hub */ UINT16 interfaceIndex, /* Index of interface */ UINT16 alternateSetting /* Alternate setting */ ); STATUS usbdStatusGet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId, /* Node Id of device/hub */ UINT16 requestType, /* Selects device/interface/endpoint */ UINT16 index, /* Interface/endpoint index */ UINT16 bfrLen, /* length of bfr */ pUINT8 pBfr, /* bfr to receive status */ pUINT16 pActLen /* bfr to receive act len xfr'd */ ); STATUS usbdAddressGet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId, /* Node Id of device/hub */ pUINT16 pDeviceAddress /* Currently assigned device address */ ); STATUS usbdAddressSet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId, /* Node Id of device/hub */ UINT16 deviceAddress /* New device address */ ); STATUS usbdVendorSpecific ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId, /* Node Id of device/hub */ UINT8 requestType, /* bmRequestType in USB spec. */ UINT8 request, /* bRequest in USB spec. */ UINT16 value, /* wValue in USB spec. */ UINT16 index, /* wIndex in USB spec. */ UINT16 length, /* wLength in USB spec. */ pUINT8 pBfr, /* ptr to data buffer */ pUINT16 pActLen /* actual length of IN */ ); STATUS usbdPipeCreate ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId, /* Node Id of device/hub */ UINT16 endpoint, /* Endpoint number */ UINT16 configuration, /* config w/which pipe associated */ UINT16 interface, /* interface w/which pipe associated */ UINT16 transferType, /* Type of transfer: control, bulk... */ UINT16 direction, /* Specifies IN or OUT endpoint */ UINT16 maxPayload, /* Maximum data payload per packet */ UINT32 bandwidth, /* Bandwidth required for pipe */ UINT16 serviceInterval, /* Required service interval */ pUSBD_PIPE_HANDLE pPipeHandle /* pipe handle returned by USBD */ ); STATUS usbdPipeDestroy ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_PIPE_HANDLE pipeHandle /* pipe handle */ ); STATUS usbdTransfer ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_PIPE_HANDLE pipeHandle, /* Pipe handle */ pUSB_IRP pIrp /* ptr to I/O request packet */ ); STATUS usbdTransferAbort ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_PIPE_HANDLE pipeHandle, /* Pipe handle */ pUSB_IRP pIrp /* ptr to I/O to abort */ ); STATUS usbdSynchFrameGet ( USBD_CLIENT_HANDLE clientHandle, /* Client Handle */ USBD_NODE_ID nodeId, /* Node Id of device/hub */ UINT16 endpoint, /* Endpoint to be queried */ pUINT16 pFrameNo /* Frame number returned by device */ ); STATUS usbdCurrentFrameGet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId, /* Node Id of root for desired USB */ pUINT32 pFrameNo, /* bfr to receive current frame no. */ pUINT32 pFrameWindow /* bfr to receive frame window */ ); STATUS usbdSofMasterTake ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId /* Node Id of node on desired USB */ ); STATUS usbdSofMasterRelease ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId /* Node Id of node on desired USB */ ); STATUS usbdSofIntervalGet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId, /* Node Id of node on desired USB */ pUINT16 pSofInterval /* bfr to receive SOF interval */ ); STATUS usbdSofIntervalSet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId, /* Node Id of node on desired USB */ UINT16 sofInterval /* new SOF interval */ ); STATUS usbdVersionGet ( pUINT16 pVersion, /* UINT16 bfr to receive version */ pCHAR pMfg /* bfr to receive USBD mfg string */ ); STATUS usbdHcdAttach ( HCD_EXEC_FUNC hcdExecFunc, /* Ptr to HCD’s primary entry point */ pVOID param, /* HCD-specific parameter */ pGENERIC_HANDLE pAttachToken /* Token to identify HCD in future */ ); STATUS usbdHcdDetach ( GENERIC_HANDLE attachToken /* AttachToken returned */ ); STATUS usbdStatisticsGet ( USBD_CLIENT_HANDLE clientHandle, /* Client handle */ USBD_NODE_ID nodeId, /* Node Id of a node on desired USB */ pUSBD_STATS pStatistics, /* Ptr to structure to receive stats */ UINT16 statLen /* Len of bfr provided by caller */ ); #ifdef __cplusplus } #endif #endif /* __INCusbdLibh */ /* End of file. */