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 serial definitions from WIDCOMM's Universal Embedded
22 *  Drivers API.
23 *
24 ******************************************************************************/
25
26#ifndef USB_H
27#define USB_H
28
29/*******************************************************************************
30** Serial APIs
31*******************************************************************************/
32
33/**** port IDs ****/
34#define USB_PORT_1            0
35#define USB_PORT_2            1
36#define USB_PORT_3            2
37#define USB_PORT_4            3
38
39typedef UINT8 tUSB_PORT;
40
41/**** baud rates ****/
42#define USB_BAUD_300          0
43#define USB_BAUD_600          1
44#define USB_BAUD_1200         2
45#define USB_BAUD_2400         3
46#define USB_BAUD_9600         4
47#define USB_BAUD_19200        5
48#define USB_BAUD_57600        6
49#define USB_BAUD_115200       7
50#define USB_BAUD_230400       8
51#define USB_BAUD_460800       9
52#define USB_BAUD_921600       10
53#define USB_BAUD_AUTO         11
54
55/**** Data Format ****/
56
57/* Stop Bits */
58#define USB_STOPBITS_1        1
59#define USB_STOPBITS_1_5      (1<<1)
60#define USB_STOPBITS_2        (1<<2)
61
62/* Parity Bits */
63#define USB_PARITY_NONE       (1<<3)
64#define USB_PARITY_EVEN       (1<<4)
65#define USB_PARITY_ODD        (1<<5)
66
67/* Data Bits */
68#define USB_DATABITS_5        (1<<6)
69#define USB_DATABITS_6        (1<<7)
70#define USB_DATABITS_7        (1<<8)
71#define USB_DATABITS_8        (1<<9)
72
73
74/**** Flow Control ****/
75#define USB_FC_NONE           0
76#define USB_FC_HW             1
77#define USB_FC_SW             2
78
79/**** Data Buffering Mechanism ****/
80#define USB_BUF_BYTE          0
81#define USB_BUF_GKI           1
82
83/**** Signals ****/
84#define USB_SIG_RTSCTS        1
85#define USB_SIG_DSRDTR        (1<<1)
86#define USB_SIG_RI            (1<<2)
87#define USB_SIG_CD            (1<<3)
88#define USB_SIG_DTE_DEVICE    (1<<4)
89
90/**** Errors *****/
91#define USB_ERR_OVERRUN       1
92#define USB_ERR_PARITY        (1<<1)
93#define USB_ERR_FRAMING       (1<<2)
94#define USB_ERR_BREAK         (1<<3)
95
96/**** Serial Operations ****/
97#define USB_OP_FLUSH          0
98#define USB_OP_FLUSH_RX       1
99#define USB_OP_FLUSH_TX       2
100#define USB_OP_BREAK_OFF      3
101#define USB_OP_BREAK_ON       4
102#define USB_OP_BAUD_RD        5
103#define USB_OP_BAUD_WR        6
104#define USB_OP_FMT_RD         7
105#define USB_OP_FMT_WR         8
106#define USB_OP_SIG_RD         9
107#define USB_OP_SIG_WR         10
108#define USB_OP_FC_RD          11
109#define USB_OP_FC_WR          12
110
111typedef UINT8 tUSB_OP;
112
113
114/**** Serial feature types ****/
115#define USB_FEAT_PORT_1       0
116#define USB_FEAT_PORT_2       1
117#define USB_FEAT_PORT_3       2
118#define USB_FEAT_PORT_4       3
119#define USB_FEAT_BAUD_AUTO    4
120#define USB_FEAT_BAUD_300     5
121#define USB_FEAT_BAUD_600     6
122#define USB_FEAT_BAUD_1200    7
123#define USB_FEAT_BAUD_2400    8
124#define USB_FEAT_BAUD_9600    9
125#define USB_FEAT_BAUD_19200   10
126#define USB_FEAT_BAUD_57600   11
127#define USB_FEAT_BAUD_115200  12
128#define USB_FEAT_BAUD_230400  13
129#define USB_FEAT_BAUD_460800  14
130#define USB_FEAT_BAUD_921600  15
131#define USB_FEAT_STOPBITS_1   16
132#define USB_FEAT_STOPBITS_1_5 17
133#define USB_FEAT_STOPBITS_2   18
134#define USB_FEAT_PARITY_NONE  19
135#define USB_FEAT_PARITY_EVEN  20
136#define USB_FEAT_PARITY_ODD   21
137#define USB_FEAT_DATABITS_5   22
138#define USB_FEAT_DATABITS_6   23
139#define USB_FEAT_DATABITS_7   24
140#define USB_FEAT_DATABITS_8   25
141#define USB_FEAT_FC_NONE      26
142#define USB_FEAT_FC_HW        27
143#define USB_FEAT_FC_SW        28
144#define USB_FEAT_BUF_BYTE     29
145#define USB_FEAT_BUF_GKI      30
146#define USB_FEAT_SIG_RTS      31
147#define USB_FEAT_SIG_CTS      32
148#define USB_FEAT_SIG_DSR      33
149#define USB_FEAT_SIG_DTR      34
150#define USB_FEAT_SIG_RI       35
151#define USB_FEAT_SIG_CD       36
152#define USB_FEAT_OP_FLUSH     37
153#define USB_FEAT_OP_FLUSH_RX  38
154#define USB_FEAT_OP_FLUSH_TX  39
155#define USB_FEAT_OP_BREAK     40
156#define USB_FEAT_OP_BAUD_RD   41
157#define USB_FEAT_OP_BAUD_WR   42
158#define USB_FEAT_OP_FMT_RD    43
159#define USB_FEAT_OP_FMT_WR    44
160#define USB_FEAT_OP_SIG_RD    45
161#define USB_FEAT_OP_SIG_WR    46
162#define USB_FEAT_OP_FC_RD     47
163#define USB_FEAT_OP_FC_WR     48
164
165typedef UINT8 tUSB_FEATURE;
166
167
168/**** Event types ****/
169#define USB_RX_READY_EVT      0
170#define USB_TX_DONE_EVT       1
171#define USB_SIG_EVT           2
172#define USB_ERR_EVT           3
173
174typedef UINT8 tUSB_EVT;
175
176
177/* Structure used to configure serial port during open        */
178typedef struct
179{
180    UINT16 fmt;          /* Data format                       */
181    UINT8  baud;         /* Baud rate                         */
182    UINT8  fc;           /* Flow control                      */
183    UINT8  buf;          /* Data buffering mechanism          */
184    UINT8  pool;         /* GKI buffer pool for received data */
185    UINT16 size;         /* Size of GKI buffer pool           */
186    UINT16 offset;       /* Offset in GKI buffer pool         */
187} tUSB_OPEN_CFG;
188
189/* Union used to pass ioctl arguments */
190typedef union
191{
192    UINT16 fmt;
193    UINT8  baud;
194    UINT8  fc;
195    UINT8  sigs;
196} tUSB_IOCTL_DATA;
197
198
199/* Union to pass event data */
200typedef union
201{
202    UINT8 sigs;
203    UINT8 error;
204} tUSB_EVT_DATA;
205
206/* callback for events */
207typedef void (tUSB_CBACK)(tUSB_PORT, tUSB_EVT, tUSB_EVT_DATA *);
208
209
210/*******************************************************************************
211** Function Prototypes
212*******************************************************************************/
213
214#ifdef __cplusplus
215extern "C" {
216#endif
217
218UDRV_API extern void    USB_Init(void *);
219UDRV_API extern void    USB_Open(tUSB_PORT, tUSB_OPEN_CFG *, tUSB_CBACK *);
220UDRV_API extern void    USB_ReadBuf(tUSB_PORT, BT_HDR **);
221UDRV_API extern UINT16  USB_Read(tUSB_PORT, UINT8 *, UINT16);
222UDRV_API extern BOOLEAN USB_WriteBuf(tUSB_PORT, BT_HDR *);
223UDRV_API extern UINT16  USB_Write(tUSB_PORT, UINT8 *, UINT16);
224UDRV_API extern void    USB_Ioctl(tUSB_PORT, tUSB_OP, tUSB_IOCTL_DATA *);
225UDRV_API extern void    USB_Close(tUSB_PORT);
226UDRV_API extern BOOLEAN USB_Feature(tUSB_FEATURE);
227
228#ifdef __cplusplus
229}
230#endif
231
232#endif /* USB_H */
233