/****************************************************************************** * * Copyright (C) 2001-2012 Broadcom Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ******************************************************************************/ /****************************************************************************** * * This file contains usb definitions from Widcomm's Universal Embedded * Drivers API. * ******************************************************************************/ #ifndef UUSB_H #define UUSB_H #include "bt_target.h" #ifdef __cplusplus extern "C" { #endif /******************************************************************************* ** Codec APIs *******************************************************************************/ /**** Status ****/ #define UUSB_SUCCESS 0 #define UUSB_DRV_INVALID_PARM 1 // Invalid parameter(s) passed to Driver #define UUSB_DRV_INVALID_STATE 2 // Driver is not in correct state to accept #define UUSB_DRV_UNSUPPORTED_SETUP_REQ 3 // Unsupported SETUP request (use with tUSER_EP0_SETUP_CB) #define UUSB_DRV_NO_BUFFER_AVAILABLE 4 // User cannot provide a Buffer (use with CB functions) typedef UINT8 tUUSB_STATUS; #define UUSB_EP1 0 #define UUSB_EP2 1 #define UUSB_EP3 2 #define UUSB_EP4 3 #define UUSB_EP5 4 #define UUSB_EP6 5 #define UUSB_EP7 6 typedef UINT8 tUUSB_EP_ID; typedef enum { UUSB_EP_TYPE_CONTROL = 0, UUSB_EP_TYPE_ISOCHRONOUS, UUSB_EP_TYPE_BULK, UUSB_EP_TYPE_INTERRUPT } tUUSB_EP_TYPE; typedef enum { UUSB_DIR_OUT = 0, UUSB_DIR_IN } tUUSB_EP_DIRECTION; typedef struct tUUSB_SETUP_PKTTag { /* Definition of "USBbmRequestType" */ #define UUSB_DATA_PHASE_DIR 0x80 /* Mask to get data phase transfer direction */ #define UUSB_HOST_TO_DEVICE 0x00 /* Data transfer directions */ #define UUSB_DEVICE_TO_HOST 0x80 /* Data transfer directions */ /* Types of requests */ #define UUSB_REQUEST_TYPE 0x60 /* Mask to get request type */ #define UUSB_STANDARD_REQUEST 0x00 /* Standard request */ #define UUSB_CLASS_REQUEST 0x20 /* Class request */ #define UUSB_VENDOR_REQUEST 0x40 /* Vendor request */ UINT8 bmRequestType; UINT8 bRequest; UINT16 wValue; UINT16 wIndex; UINT16 wLength; } tUUSB_SETUP_PKT; typedef union { #define UUSB_HEAD_SIZE (8) UINT8 HeadBytes[UUSB_HEAD_SIZE]; tUUSB_SETUP_PKT Setup; } tSETUP_OR_HEAD; typedef struct { UINT8 BufSize; UINT8 NumBytesInBuf; tSETUP_OR_HEAD Buf; } tUUSB_RX_HEAD; typedef enum { UUSB_EP_DISABLE, UUSB_EP_ENABLE, UUSB_EP_STALL } tUUSB_EP_STATE; typedef UINT8 tEndPoint; #if 0 #define UUSB_ATTACHED 0 #define UUSB_POWERED 1 #define UUSB_DEFAULT 2 #define UUSB_ADDRESS 3 #define UUSB_CONFIGURED 4 #define UUSB_SUSPENDED 5 typedef UINT8 tUUSB_BUS_STATE; #else typedef enum { UUSB_ATTACHED, UUSB_POWERED, UUSB_DEFAULT, UUSB_ADDRESS, UUSB_CONFIGURED, UUSB_SUSPENDED } tUUSB_BUS_STATE; #endif typedef enum _tUUSB_STANDART_REQ { UUSB_GET_STATUS = 0, UUSB_CLEAR_FEATURE, UUSB_RESERVED1, UUSB_SET_FEATURE, UUSB_RESERVED2, UUSB_SET_ADDRESS, UUSB_GET_DESCRIPTOR, UUSB_SET_DESCRIPTOR, UUSB_GET_CONFIGURATION, UUSB_SET_CONFIGURATION, UUSB_GET_INTERFACE, UUSB_SET_INTERFACE, UUSB_TOTAL_sREQUEST, /* Total number of Standard request */ UUSB_SYNCH_FRAME = 12 } tUUSB_STANDART_REQ; typedef void (*tUUSB_STATE_CB) (tUUSB_BUS_STATE State); typedef void (*tUUSB_PROT_COMPLETE_CB ) (UINT8 *pBuf,UINT16 NumBytesInBuf); typedef tUUSB_STATUS (*tUUSB_PROT_SETUP_CB ) (UINT8 **ppBuf,UINT16 *pBufSize); typedef void (*tUUSB_RX_START_CB ) (tUUSB_EP_ID EndPoint, UINT8 **ppBuf, UINT16 *pBufSize); typedef void (*tUUSB_RX_COMPLETE_CB ) (tUUSB_EP_ID EndPoint, UINT8 *pRxBuf, UINT16 NumBytesInBuf); typedef void (*tUUSB_TX_COMPLETE_CB ) (tUUSB_EP_ID EndPoint, UINT8 *pRxBuf); /******************************************************************************* ** Function Prototypes *******************************************************************************/ /****************************************************************************** ** ** Function UCODEC_Init ** ** Description Startup initialisation function. This function is called ** before any orther function of UUSB it initialize UUSB ** internal structure an the external hw. ** ** Input : ** ** Output Parameters : ** ** Returns UUSB_SUCCESS if The action was performed with sucess. ** Error code else. ** ******************************************************************************/ BT_API extern tUUSB_STATUS UUSB_Init (tUUSB_PROT_SETUP_CB userProtSetupCallBack, tUUSB_PROT_COMPLETE_CB userProtCompleteCallBack, tUUSB_RX_START_CB userRxStartCallBack, tUUSB_STATE_CB userStateCallBack, tUUSB_TX_COMPLETE_CB userTxCompleteCallBack, tUUSB_RX_COMPLETE_CB userRxCompleteCallBack); /****************************************************************************** ** ** Function UUSB_Start ** ** Description ** ** ** ** ** ** Returns UUSB_SUCCESS if The action was performed with sucess. ** ******************************************************************************/ BT_API extern tUUSB_STATUS UUSB_Start (void); /****************************************************************************** ** ** Function UUSB_Stop ** ** Description ** ** ** ** ** Returns UUSB_SUCCESS if The action was performed with sucess. ** Error code else. ** ******************************************************************************/ BT_API extern tUUSB_STATUS UUSB_Stop (void); /****************************************************************************** ** ** Function UUSB_SetEndPointCnf ** ** Description ** ** ** Returns ** ******************************************************************************/ BT_API extern tUUSB_STATUS UUSB_SetEndPointCnf ( BOOLEAN IsIN_EndPoint, tUUSB_EP_ID EndPoint, UINT8 MaxPacketSize, tUUSB_EP_TYPE EndPointType, tUUSB_RX_HEAD *pRxHead, UINT16 RxTimeOut); /****************************************************************************** ** ** Function UUSB_SetEndPointState ** ** Description ** ** ** Returns ** ******************************************************************************/ BT_API extern tUUSB_STATUS UUSB_SetEndPointState (tUUSB_EP_ID EndPoint, tUUSB_EP_STATE EndPointState); /****************************************************************************** ** ** Function UUSB_WriteEndPoint ** ** Description ** ** ** Returns ** ******************************************************************************/ BT_API extern tUUSB_STATUS UUSB_WriteEndPoint (tUUSB_EP_ID EndPoint, UINT16 Length, UINT8* pBuf); /****************************************************************************** ** ** Function UUSB_GenerateRemoteWakeUp ** ** Description ** ** ** Returns ** ******************************************************************************/ BT_API extern tUUSB_STATUS UUSB_GenerateRemoteWakeUp (void); #ifdef __cplusplus }; #endif #endif /* UUSB_H */