1 /******************************************************************************
2  *
3  *  Copyright (C) 2009-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 #ifndef UAMP_API_H
26 #define UAMP_API_H
27 
28 /*****************************************************************************
29 **  Constant and Type Definitions
30 *****************************************************************************/
31 
32 /* UAMP identifiers */
33 #define UAMP_ID_1   1
34 #define UAMP_ID_2   2
35 typedef UINT8 tUAMP_ID;
36 
37 /* UAMP event ids (used by UAMP_CBACK) */
38 #define UAMP_EVT_RX_READY           0   /* Data from AMP controller is ready to be read */
39 #define UAMP_EVT_CTLR_REMOVED       1   /* Controller removed */
40 #define UAMP_EVT_CTLR_READY         2   /* Controller added/ready */
41 typedef UINT8 tUAMP_EVT;
42 
43 
44 /* UAMP Channels */
45 #define UAMP_CH_HCI_CMD            0   /* HCI Command channel */
46 #define UAMP_CH_HCI_EVT            1   /* HCI Event channel */
47 #define UAMP_CH_HCI_DATA           2   /* HCI ACL Data channel */
48 typedef UINT8 tUAMP_CH;
49 
50 /* tUAMP_EVT_DATA: union for event-specific data, used by UAMP_CBACK */
51 typedef union {
52     tUAMP_CH channel;       /* UAMP_EVT_RX_READY: channel for which rx occured */
53 } tUAMP_EVT_DATA;
54 
55 
56 
57 
58 /*****************************************************************************
59 **
60 ** Function:    UAMP_CBACK
61 **
62 ** Description: Callback for events. Register callback using UAMP_Init.
63 **
64 ** Parameters   amp_id:         AMP device identifier that generated the event
65 **              amp_evt:        event id
66 **              p_amp_evt_data: pointer to event-specific data
67 **
68 *****************************************************************************/
69 typedef void (tUAMP_CBACK)(tUAMP_ID amp_id, tUAMP_EVT amp_evt, tUAMP_EVT_DATA *p_amp_evt_data);
70 
71 /*****************************************************************************
72 **  external function declarations
73 *****************************************************************************/
74 #ifdef __cplusplus
75 extern "C"
76 {
77 #endif
78 
79 /*****************************************************************************
80 **
81 ** Function:    UAMP_Init
82 **
83 ** Description: Initialize UAMP driver
84 **
85 ** Parameters   p_cback:    Callback function for UAMP event notification
86 **
87 *****************************************************************************/
88 BT_API BOOLEAN UAMP_Init(tUAMP_CBACK *p_cback);
89 
90 
91 /*****************************************************************************
92 **
93 ** Function:    UAMP_Open
94 **
95 ** Description: Open connection to local AMP device.
96 **
97 ** Parameters   app_id: Application specific AMP identifer. This value
98 **                      will be included in AMP messages sent to the
99 **                      BTU task, to identify source of the message
100 **
101 *****************************************************************************/
102 BT_API BOOLEAN UAMP_Open(tUAMP_ID amp_id);
103 
104 /*****************************************************************************
105 **
106 ** Function:    UAMP_Close
107 **
108 ** Description: Close connection to local AMP device.
109 **
110 ** Parameters   app_id: Application specific AMP identifer.
111 **
112 *****************************************************************************/
113 BT_API void UAMP_Close(tUAMP_ID amp_id);
114 
115 
116 /*****************************************************************************
117 **
118 ** Function:    UAMP_Write
119 **
120 ** Description: Send buffer to AMP device.
121 **
122 **
123 ** Parameters:  app_id:     AMP identifer.
124 **              p_buf:      pointer to buffer to write
125 **              num_bytes:  number of bytes to write
126 **              channel:    UAMP_CH_HCI_ACL, or UAMP_CH_HCI_CMD
127 **
128 ** Returns:     number of bytes written
129 **
130 *****************************************************************************/
131 BT_API UINT16 UAMP_Write(tUAMP_ID amp_id, UINT8 *p_buf, UINT16 num_bytes, tUAMP_CH channel);
132 
133 
134 /*****************************************************************************
135 **
136 ** Function:    UAMP_WriteBuf
137 **
138 ** Description: Send GKI buffer to AMP device. Frees GKI buffer when done.
139 **
140 ** Parameters   app_amp_id: AMP identifer (BTM_AMP_1, BTM_AMP_2, ...)
141 **              p_msg:      message to send.
142 **
143 *****************************************************************************/
144 BT_API UINT16 UAMP_WriteBuf(tUAMP_ID amp_id, BT_HDR *p_msg);
145 
146 
147 /*****************************************************************************
148 **
149 ** Function:    UAMP_Read
150 **
151 ** Description: Read incoming data from AMP. Call after receiving a
152 **              UAMP_EVT_RX_READY callback event.
153 **
154 ** Parameters:  app_id:     AMP identifer.
155 **              p_buf:      pointer to buffer for holding incoming AMP data
156 **              buf_size:   size of p_buf
157 **              channel:    UAMP_CH_HCI_ACL, or UAMP_CH_HCI_EVT
158 **
159 ** Returns:     number of bytes read
160 **
161 *****************************************************************************/
162 BT_API UINT16 UAMP_Read(tUAMP_ID amp_id, UINT8 *p_buf, UINT16 buf_size, tUAMP_CH channel);
163 
164 #ifdef __cplusplus
165 }
166 #endif
167 
168 #endif /* UAMP_API_H */
169