Home | History | Annotate | Download | only in include
      1 /******************************************************************************
      2  *
      3  *  Copyright (C) 2001-2012 Broadcom Corporation
      4  *
      5  *  Licensed under the Apache License, Version 2.0 (the "License");
      6  *  you may not use this file except in compliance with the License.
      7  *  You may obtain a copy of the License at:
      8  *
      9  *  http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  *  Unless required by applicable law or agreed to in writing, software
     12  *  distributed under the License is distributed on an "AS IS" BASIS,
     13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  *  See the License for the specific language governing permissions and
     15  *  limitations under the License.
     16  *
     17  ******************************************************************************/
     18 
     19 /******************************************************************************
     20  *
     21  *  This file contains usb definitions from Widcomm's Universal Embedded
     22  *  Drivers API.
     23  *
     24  ******************************************************************************/
     25 
     26 #ifndef UUSB_H
     27 #define UUSB_H
     28 
     29 #include "bt_target.h"
     30 #ifdef __cplusplus
     31 extern "C" {
     32 #endif
     33 
     34 
     35 /*******************************************************************************
     36 ** Codec APIs
     37 *******************************************************************************/
     38 
     39 
     40 /**** Status ****/
     41 #define UUSB_SUCCESS                                  0
     42 #define UUSB_DRV_INVALID_PARM                         1   // Invalid parameter(s) passed to Driver
     43 #define UUSB_DRV_INVALID_STATE                        2   // Driver is not in correct state to accept
     44 #define UUSB_DRV_UNSUPPORTED_SETUP_REQ                3   // Unsupported SETUP request (use with tUSER_EP0_SETUP_CB)
     45 #define UUSB_DRV_NO_BUFFER_AVAILABLE                  4   // User cannot provide a Buffer (use with CB functions)
     46 
     47 typedef UINT8 tUUSB_STATUS;
     48 
     49 
     50 #define  UUSB_EP1   0
     51 #define  UUSB_EP2   1
     52 #define  UUSB_EP3   2
     53 #define  UUSB_EP4   3
     54 #define  UUSB_EP5   4
     55 #define  UUSB_EP6   5
     56 #define  UUSB_EP7   6
     57 
     58 typedef UINT8 tUUSB_EP_ID;
     59 
     60 typedef enum {
     61   UUSB_EP_TYPE_CONTROL = 0,
     62   UUSB_EP_TYPE_ISOCHRONOUS,
     63   UUSB_EP_TYPE_BULK,
     64   UUSB_EP_TYPE_INTERRUPT
     65 } tUUSB_EP_TYPE;
     66 
     67 typedef enum {
     68   UUSB_DIR_OUT = 0,
     69   UUSB_DIR_IN
     70 } tUUSB_EP_DIRECTION;
     71 
     72 typedef struct tUUSB_SETUP_PKTTag
     73 {
     74 /* Definition of "USBbmRequestType" */
     75 #define UUSB_DATA_PHASE_DIR      0x80    /* Mask to get data phase transfer direction */
     76 #define UUSB_HOST_TO_DEVICE      0x00    /* Data transfer directions */
     77 #define UUSB_DEVICE_TO_HOST      0x80    /* Data transfer directions */
     78 /* Types of requests */
     79 #define UUSB_REQUEST_TYPE		0x60	/* Mask to get request type */
     80 #define UUSB_STANDARD_REQUEST	0x00	/* Standard request */
     81 #define	UUSB_CLASS_REQUEST		0x20	/* Class request */
     82 #define	UUSB_VENDOR_REQUEST		0x40	/* Vendor request */
     83   UINT8 bmRequestType;
     84   UINT8 bRequest;
     85   UINT16 wValue;
     86   UINT16 wIndex;
     87   UINT16 wLength;
     88 } tUUSB_SETUP_PKT;
     89 
     90 typedef union
     91 {
     92 #define UUSB_HEAD_SIZE (8)
     93 	UINT8           HeadBytes[UUSB_HEAD_SIZE];
     94     tUUSB_SETUP_PKT Setup;
     95 } tSETUP_OR_HEAD;
     96 
     97 typedef struct
     98 {
     99   UINT8        BufSize;
    100   UINT8        NumBytesInBuf;
    101   tSETUP_OR_HEAD Buf;
    102 } tUUSB_RX_HEAD;
    103 
    104 typedef enum
    105 {
    106   UUSB_EP_DISABLE,
    107   UUSB_EP_ENABLE,
    108   UUSB_EP_STALL
    109 } tUUSB_EP_STATE;
    110 
    111 typedef UINT8 tEndPoint;
    112 
    113 #if 0
    114 #define  UUSB_ATTACHED      0
    115 #define  UUSB_POWERED       1
    116 #define  UUSB_DEFAULT       2
    117 #define  UUSB_ADDRESS       3
    118 #define  UUSB_CONFIGURED    4
    119 #define  UUSB_SUSPENDED     5
    120 
    121 typedef UINT8 tUUSB_BUS_STATE;
    122 #else
    123 typedef enum
    124 {
    125   UUSB_ATTACHED,
    126   UUSB_POWERED,
    127   UUSB_DEFAULT,
    128   UUSB_ADDRESS,
    129   UUSB_CONFIGURED,
    130   UUSB_SUSPENDED
    131 } tUUSB_BUS_STATE;
    132 #endif
    133 
    134 typedef enum _tUUSB_STANDART_REQ
    135 {
    136 	UUSB_GET_STATUS = 0,
    137 	UUSB_CLEAR_FEATURE,
    138 	UUSB_RESERVED1,
    139 	UUSB_SET_FEATURE,
    140 	UUSB_RESERVED2,
    141 	UUSB_SET_ADDRESS,
    142 	UUSB_GET_DESCRIPTOR,
    143 	UUSB_SET_DESCRIPTOR,
    144 	UUSB_GET_CONFIGURATION,
    145 	UUSB_SET_CONFIGURATION,
    146 	UUSB_GET_INTERFACE,
    147 	UUSB_SET_INTERFACE,
    148 	UUSB_TOTAL_sREQUEST,				/* Total number of Standard request */
    149 	UUSB_SYNCH_FRAME = 12
    150 } tUUSB_STANDART_REQ;
    151 
    152 
    153 typedef void (*tUUSB_STATE_CB)          (tUUSB_BUS_STATE State);
    154 typedef void (*tUUSB_PROT_COMPLETE_CB ) (UINT8 *pBuf,UINT16 NumBytesInBuf);
    155 
    156 typedef tUUSB_STATUS (*tUUSB_PROT_SETUP_CB ) (UINT8 **ppBuf,UINT16 *pBufSize);
    157 
    158 typedef void (*tUUSB_RX_START_CB )      (tUUSB_EP_ID EndPoint,
    159                                         UINT8 **ppBuf,
    160                                         UINT16 *pBufSize);
    161 
    162 typedef void (*tUUSB_RX_COMPLETE_CB )   (tUUSB_EP_ID EndPoint,
    163                                         UINT8 *pRxBuf,
    164                                         UINT16 NumBytesInBuf);
    165 
    166 typedef void (*tUUSB_TX_COMPLETE_CB )   (tUUSB_EP_ID EndPoint,
    167                                         UINT8 *pRxBuf);
    168 /*******************************************************************************
    169 ** Function Prototypes
    170 *******************************************************************************/
    171 
    172 /******************************************************************************
    173 **
    174 ** Function         UCODEC_Init
    175 **
    176 ** Description      Startup initialisation function. This function is called
    177 **                  before any orther function of UUSB it initialize UUSB
    178 **                  internal structure an the external hw.
    179 **
    180 **                  Input :
    181 **
    182 **                  Output Parameters :
    183 **
    184 ** Returns          UUSB_SUCCESS if The action was performed with sucess.
    185 **                  Error code else.
    186 **
    187 ******************************************************************************/
    188 BT_API extern tUUSB_STATUS    UUSB_Init    (tUUSB_PROT_SETUP_CB       userProtSetupCallBack,
    189                                             tUUSB_PROT_COMPLETE_CB    userProtCompleteCallBack,
    190                                             tUUSB_RX_START_CB         userRxStartCallBack,
    191                                             tUUSB_STATE_CB            userStateCallBack,
    192                                             tUUSB_TX_COMPLETE_CB      userTxCompleteCallBack,
    193                                             tUUSB_RX_COMPLETE_CB      userRxCompleteCallBack);
    194 
    195 
    196 
    197 
    198 /******************************************************************************
    199 **
    200 ** Function         UUSB_Start
    201 **
    202 ** Description
    203 **
    204 **
    205 **
    206 **
    207 **
    208 ** Returns          UUSB_SUCCESS if The action was performed with sucess.
    209 **
    210 ******************************************************************************/
    211 BT_API extern tUUSB_STATUS    UUSB_Start  (void);
    212 
    213 /******************************************************************************
    214 **
    215 ** Function         UUSB_Stop
    216 **
    217 ** Description
    218 **
    219 **
    220 **
    221 **
    222 ** Returns          UUSB_SUCCESS if The action was performed with sucess.
    223 **                  Error code else.
    224 **
    225 ******************************************************************************/
    226 BT_API extern tUUSB_STATUS    UUSB_Stop      (void);
    227 
    228 /******************************************************************************
    229 **
    230 ** Function         UUSB_SetEndPointCnf
    231 **
    232 ** Description
    233 **
    234 **
    235 ** Returns
    236 **
    237 ******************************************************************************/
    238 BT_API extern tUUSB_STATUS    UUSB_SetEndPointCnf ( BOOLEAN         IsIN_EndPoint,
    239                                                     tUUSB_EP_ID     EndPoint,
    240                                                     UINT8           MaxPacketSize,
    241                                                     tUUSB_EP_TYPE   EndPointType,
    242                                                     tUUSB_RX_HEAD   *pRxHead,
    243                                                     UINT16          RxTimeOut);
    244 
    245 
    246 /******************************************************************************
    247 **
    248 ** Function         UUSB_SetEndPointState
    249 **
    250 ** Description
    251 **
    252 **
    253 ** Returns
    254 **
    255 ******************************************************************************/
    256 BT_API extern tUUSB_STATUS UUSB_SetEndPointState (tUUSB_EP_ID    EndPoint,
    257                                                     tUUSB_EP_STATE EndPointState);
    258 
    259 /******************************************************************************
    260 **
    261 ** Function         UUSB_WriteEndPoint
    262 **
    263 ** Description
    264 **
    265 **
    266 ** Returns
    267 **
    268 ******************************************************************************/
    269 BT_API extern tUUSB_STATUS UUSB_WriteEndPoint (tUUSB_EP_ID     EndPoint,
    270                                                 UINT16     Length,
    271                                                 UINT8*    pBuf);
    272 
    273 /******************************************************************************
    274 **
    275 ** Function         UUSB_GenerateRemoteWakeUp
    276 **
    277 ** Description
    278 **
    279 **
    280 ** Returns
    281 **
    282 ******************************************************************************/
    283 BT_API extern tUUSB_STATUS UUSB_GenerateRemoteWakeUp (void);
    284 
    285 #ifdef __cplusplus
    286 };
    287 #endif
    288 
    289 
    290 #endif /* UUSB_H */
    291