• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /******************************************************************************
2  *
3  *  Copyright (C) 2006-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 is the public interface file the BTA Java I/F
22  *
23  ******************************************************************************/
24 #ifndef BTA_JV_API_H
25 #define BTA_JV_API_H
26 
27 #include "data_types.h"
28 #include "bt_target.h"
29 #include "bt_types.h"
30 #include "bta_api.h"
31 #include "btm_api.h"
32 /*****************************************************************************
33 **  Constants and data types
34 *****************************************************************************/
35 /* status values */
36 #define BTA_JV_SUCCESS             0            /* Successful operation. */
37 #define BTA_JV_FAILURE             1            /* Generic failure. */
38 #define BTA_JV_BUSY                2            /* Temporarily can not handle this request. */
39 #define BTA_JV_NO_DATA             3            /* no data. */
40 #define BTA_JV_NO_RESOURCE         4            /* No more set pm control block */
41 
42 typedef UINT8 tBTA_JV_STATUS;
43 #define BTA_JV_INTERNAL_ERR        (-1) /* internal error. */
44 
45 #define BTA_JV_MAX_UUIDS        SDP_MAX_UUID_FILTERS
46 #define BTA_JV_MAX_ATTRS        SDP_MAX_ATTR_FILTERS
47 #define BTA_JV_MAX_SDP_REC      SDP_MAX_RECORDS
48 #if SDP_FOR_JV_INCLUDED == TRUE
49 #define BTA_JV_MAX_L2C_CONN     (GAP_MAX_CONNECTIONS + 1)
50 #else
51 #define BTA_JV_MAX_L2C_CONN     GAP_MAX_CONNECTIONS
52 #endif
53 #define BTA_JV_MAX_SCN          PORT_MAX_RFC_PORTS /* same as BTM_MAX_SCN (in btm_int.h) */
54 #define BTA_JV_MAX_RFC_CONN     MAX_RFC_PORTS
55 
56 #ifndef BTA_JV_DEF_RFC_MTU
57 #define BTA_JV_DEF_RFC_MTU      (3*330)
58 #endif
59 
60 /* */
61 #ifndef BTA_JV_MAX_RFC_SR_SESSION
62 #define BTA_JV_MAX_RFC_SR_SESSION   MAX_BD_CONNECTIONS
63 #endif
64 
65 /* BTA_JV_MAX_RFC_SR_SESSION can not be bigger than MAX_BD_CONNECTIONS */
66 #if (BTA_JV_MAX_RFC_SR_SESSION > MAX_BD_CONNECTIONS)
67 #undef BTA_JV_MAX_RFC_SR_SESSION
68 #define BTA_JV_MAX_RFC_SR_SESSION   MAX_BD_CONNECTIONS
69 #endif
70 
71 #define BTA_JV_FIRST_SERVICE_ID BTA_FIRST_JV_SERVICE_ID
72 #define BTA_JV_LAST_SERVICE_ID  BTA_LAST_JV_SERVICE_ID
73 #define BTA_JV_NUM_SERVICE_ID   (BTA_LAST_JV_SERVICE_ID - BTA_FIRST_JV_SERVICE_ID + 1)
74 
75 /* Discoverable modes */
76 enum
77 {
78     BTA_JV_DISC_NONE,
79     BTA_JV_DISC_LIMITED,
80     BTA_JV_DISC_GENERAL
81 };
82 typedef UINT16 tBTA_JV_DISC;
83 
84 /* Security Mode (BTA_JvGetSecurityMode) */
85 #define BTA_JV_SEC_MODE_UNDEFINED   BTM_SEC_MODE_UNDEFINED  /* 0 */
86 #define BTA_JV_SEC_MODE_NONE        BTM_SEC_MODE_NONE       /* 1 */
87 #define BTA_JV_SEC_MODE_SERVICE     BTM_SEC_MODE_SERVICE    /* 2 */
88 #define BTA_JV_SEC_MODE_LINK        BTM_SEC_MODE_LINK       /* 3 */
89 #define BTA_JV_SEC_MODE_SP          BTM_SEC_MODE_SP         /* 4 */
90 #define BTA_JV_SEC_MODE_SP_DEBUG    BTM_SEC_MODE_SP_DEBUG   /* 5 */
91 typedef UINT8 tBTA_JV_SEC_MODE;
92 
93 #define BTA_JV_ROLE_SLAVE       BTM_ROLE_SLAVE
94 #define BTA_JV_ROLE_MASTER      BTM_ROLE_MASTER
95 typedef UINT32 tBTA_JV_ROLE;
96 
97 #define BTA_JV_SERVICE_LMTD_DISCOVER    BTM_COD_SERVICE_LMTD_DISCOVER   /* 0x0020 */
98 #define BTA_JV_SERVICE_POSITIONING      BTM_COD_SERVICE_POSITIONING     /* 0x0100 */
99 #define BTA_JV_SERVICE_NETWORKING       BTM_COD_SERVICE_NETWORKING      /* 0x0200 */
100 #define BTA_JV_SERVICE_RENDERING        BTM_COD_SERVICE_RENDERING       /* 0x0400 */
101 #define BTA_JV_SERVICE_CAPTURING        BTM_COD_SERVICE_CAPTURING       /* 0x0800 */
102 #define BTA_JV_SERVICE_OBJ_TRANSFER     BTM_COD_SERVICE_OBJ_TRANSFER    /* 0x1000 */
103 #define BTA_JV_SERVICE_AUDIO            BTM_COD_SERVICE_AUDIO           /* 0x2000 */
104 #define BTA_JV_SERVICE_TELEPHONY        BTM_COD_SERVICE_TELEPHONY       /* 0x4000 */
105 #define BTA_JV_SERVICE_INFORMATION      BTM_COD_SERVICE_INFORMATION     /* 0x8000 */
106 
107 /* JV ID type */
108 #define BTA_JV_PM_ID_1             1    /* PM example profile 1 */
109 #define BTA_JV_PM_ID_2             2    /* PM example profile 2 */
110 #define BTA_JV_PM_ID_CLEAR         0    /* Special JV ID used to clear PM profile */
111 #define BTA_JV_PM_ALL              0xFF /* Generic match all id, see bta_dm_cfg.c */
112 typedef UINT8 tBTA_JV_PM_ID;
113 
114 #define BTA_JV_PM_HANDLE_CLEAR     0xFF /* Special JV ID used to clear PM profile  */
115 
116 /* define maximum number of registered PM entities. should be in sync with bta pm! */
117 #ifndef BTA_JV_PM_MAX_NUM
118 #define BTA_JV_PM_MAX_NUM 5
119 #endif
120 
121 /* JV pm connection states */
122 enum
123 {
124     BTA_JV_CONN_OPEN = 0,   /* Connection opened state */
125     BTA_JV_CONN_CLOSE,      /* Connection closed state */
126     BTA_JV_APP_OPEN,        /* JV Application opened state */
127     BTA_JV_APP_CLOSE,       /* JV Application closed state */
128     BTA_JV_SCO_OPEN,        /* SCO connection opened state */
129     BTA_JV_SCO_CLOSE,       /* SCO connection opened state */
130     BTA_JV_CONN_IDLE,       /* Connection idle state */
131     BTA_JV_CONN_BUSY,       /* Connection busy state */
132     BTA_JV_MAX_CONN_STATE   /* Max number of connection state */
133 };
134 typedef UINT8 tBTA_JV_CONN_STATE;
135 
136 /* Java I/F callback events */
137 /* events received by tBTA_JV_DM_CBACK */
138 #define BTA_JV_ENABLE_EVT           0  /* JV enabled */
139 #define BTA_JV_SET_DISCOVER_EVT     1  /* the result for BTA_JvSetDiscoverability */
140 #define BTA_JV_LOCAL_ADDR_EVT       2  /* Local device address */
141 #define BTA_JV_LOCAL_NAME_EVT       3  /* Local device name */
142 #define BTA_JV_REMOTE_NAME_EVT      4  /* Remote device name */
143 #define BTA_JV_SET_ENCRYPTION_EVT   5  /* Set Encryption */
144 #define BTA_JV_GET_SCN_EVT          6  /* Reserved an SCN */
145 #define BTA_JV_GET_PSM_EVT          7  /* Reserved a PSM */
146 #define BTA_JV_DISCOVERY_COMP_EVT   8  /* SDP discovery complete */
147 #define BTA_JV_SERVICES_LEN_EVT     9  /* the result for BTA_JvGetServicesLength */
148 #define BTA_JV_SERVICE_SEL_EVT      10 /* the result for BTA_JvServiceSelect */
149 #define BTA_JV_CREATE_RECORD_EVT    11 /* the result for BTA_JvCreateRecord */
150 #define BTA_JV_UPDATE_RECORD_EVT    12 /* the result for BTA_JvUpdateRecord */
151 #define BTA_JV_ADD_ATTR_EVT         13 /* the result for BTA_JvAddAttribute */
152 #define BTA_JV_DELETE_ATTR_EVT      14 /* the result for BTA_JvDeleteAttribute */
153 #define BTA_JV_CANCEL_DISCVRY_EVT   15 /* the result for BTA_JvCancelDiscovery */
154 
155 /* events received by tBTA_JV_L2CAP_CBACK */
156 #define BTA_JV_L2CAP_OPEN_EVT       16 /* open status of L2CAP connection */
157 #define BTA_JV_L2CAP_CLOSE_EVT      17 /* L2CAP connection closed */
158 #define BTA_JV_L2CAP_START_EVT      18 /* L2CAP server started */
159 #define BTA_JV_L2CAP_CL_INIT_EVT    19 /* L2CAP client initiated a connection */
160 #define BTA_JV_L2CAP_DATA_IND_EVT   20 /* L2CAP connection received data */
161 #define BTA_JV_L2CAP_CONG_EVT       21 /* L2CAP connection congestion status changed */
162 #define BTA_JV_L2CAP_READ_EVT       22 /* the result for BTA_JvL2capRead */
163 #define BTA_JV_L2CAP_RECEIVE_EVT    23 /* the result for BTA_JvL2capReceive*/
164 #define BTA_JV_L2CAP_WRITE_EVT      24 /* the result for BTA_JvL2capWrite*/
165 
166 /* events received by tBTA_JV_RFCOMM_CBACK */
167 #define BTA_JV_RFCOMM_OPEN_EVT      25 /* open status of RFCOMM Client connection */
168 #define BTA_JV_RFCOMM_CLOSE_EVT     26 /* RFCOMM connection closed */
169 #define BTA_JV_RFCOMM_START_EVT     27 /* RFCOMM server started */
170 #define BTA_JV_RFCOMM_CL_INIT_EVT   28 /* RFCOMM client initiated a connection */
171 #define BTA_JV_RFCOMM_DATA_IND_EVT  29 /* RFCOMM connection received data */
172 #define BTA_JV_RFCOMM_CONG_EVT      30 /* RFCOMM connection congestion status changed */
173 #define BTA_JV_RFCOMM_READ_EVT      31 /* the result for BTA_JvRfcommRead */
174 #define BTA_JV_RFCOMM_WRITE_EVT     32 /* the result for BTA_JvRfcommWrite*/
175 #define BTA_JV_RFCOMM_SRV_OPEN_EVT  33 /* open status of Server RFCOMM connection */
176 #define BTA_JV_MAX_EVT              34 /* max number of JV events */
177 
178 typedef UINT16 tBTA_JV_EVT;
179 
180 /* data associated with BTA_JV_SET_DISCOVER_EVT */
181 typedef struct
182 {
183     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
184     tBTA_JV_DISC    disc_mode;  /* The current discoverable mode */
185 } tBTA_JV_SET_DISCOVER;
186 
187 /* data associated with BTA_JV_DISCOVERY_COMP_EVT_ */
188 typedef struct
189 {
190     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
191     int scn;                    /* channel # */
192 } tBTA_JV_DISCOVERY_COMP;
193 
194 /* data associated with BTA_JV_SET_ENCRYPTION_EVT */
195 typedef struct
196 {
197     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
198     BD_ADDR     bd_addr;        /* The peer address */
199 } tBTA_JV_SET_ENCRYPTION;
200 
201 /* data associated with BTA_JV_SERVICES_LEN_EVT */
202 typedef struct
203 {
204     INT32       num_services;       /* -1, if error. Otherwise, the number of
205                                      * services collected from peer */
206     UINT16      *p_services_len;    /* this points the same location as the
207                                      * parameter in BTA_JvGetServicesLength() */
208 } tBTA_JV_SERVICES_LEN;
209 
210 /* data associated with BTA_JV_SERVICE_SEL_EVT */
211 typedef struct
212 {
213     BD_ADDR     bd_addr;            /* The peer address */
214     UINT16      service_len;        /* the length of this record */
215 } tBTA_JV_SERVICE_SEL;
216 
217 /* data associated with BTA_JV_CREATE_RECORD_EVT */
218 typedef struct
219 {
220    tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
221 } tBTA_JV_CREATE_RECORD;
222 
223 /* data associated with BTA_JV_UPDATE_RECORD_EVT */
224 typedef struct
225 {
226     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
227     UINT32          handle;     /* The SDP record handle was updated */
228 } tBTA_JV_UPDATE_RECORD;
229 
230 /* data associated with BTA_JV_ADD_ATTR_EVT */
231 typedef struct
232 {
233     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
234     UINT32          handle;     /* The SDP record handle was updated */
235 } tBTA_JV_ADD_ATTR;
236 
237 /* data associated with BTA_JV_DELETE_ATTR_EVT */
238 typedef struct
239 {
240     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
241     UINT32          handle;     /* The SDP record handle was updated */
242 } tBTA_JV_DELETE_ATTR;
243 
244 /* data associated with BTA_JV_L2CAP_OPEN_EVT */
245 typedef struct
246 {
247     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
248     UINT32          handle;     /* The connection handle */
249     BD_ADDR         rem_bda;    /* The peer address */
250     INT32           tx_mtu;     /* The transmit MTU */
251 } tBTA_JV_L2CAP_OPEN;
252 
253 /* data associated with BTA_JV_L2CAP_CLOSE_EVT */
254 typedef struct
255 {
256     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
257     UINT32          handle;     /* The connection handle */
258     BOOLEAN         async;      /* FALSE, if local initiates disconnect */
259 } tBTA_JV_L2CAP_CLOSE;
260 
261 /* data associated with BTA_JV_L2CAP_START_EVT */
262 typedef struct
263 {
264     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
265     UINT32          handle;     /* The connection handle */
266     UINT8           sec_id;     /* security ID used by this server */
267 } tBTA_JV_L2CAP_START;
268 
269 /* data associated with BTA_JV_L2CAP_CL_INIT_EVT */
270 typedef struct
271 {
272     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
273     UINT32          handle;     /* The connection handle */
274     UINT8           sec_id;     /* security ID used by this client */
275 } tBTA_JV_L2CAP_CL_INIT;
276 
277 /* data associated with BTA_JV_L2CAP_CONG_EVT */
278 typedef struct
279 {
280     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
281     UINT32          handle;     /* The connection handle */
282     BOOLEAN         cong;       /* TRUE, congested. FALSE, uncongested */
283 } tBTA_JV_L2CAP_CONG;
284 
285 /* data associated with BTA_JV_L2CAP_READ_EVT */
286 typedef struct
287 {
288     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
289     UINT32          handle;     /* The connection handle */
290     UINT32          req_id;     /* The req_id in the associated BTA_JvL2capRead() */
291     UINT8           *p_data;    /* This points the same location as the p_data
292                                  * parameter in BTA_JvL2capRead () */
293     UINT16          len;        /* The length of the data read. */
294 } tBTA_JV_L2CAP_READ;
295 
296 /* data associated with BTA_JV_L2CAP_RECEIVE_EVT */
297 typedef struct
298 {
299     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
300     UINT32          handle;     /* The connection handle */
301     UINT32          req_id;     /* The req_id in the associated BTA_JvL2capReceive() */
302     UINT8           *p_data;    /* This points the same location as the p_data
303                                  * parameter in BTA_JvL2capReceive () */
304     UINT16          len;        /* The length of the data read. */
305 } tBTA_JV_L2CAP_RECEIVE;
306 
307 /* data associated with BTA_JV_L2CAP_WRITE_EVT */
308 typedef struct
309 {
310     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
311     UINT32          handle;     /* The connection handle */
312     UINT32          req_id;     /* The req_id in the associated BTA_JvL2capWrite() */
313     UINT16          len;        /* The length of the data written. */
314     BOOLEAN         cong;       /* congestion status */
315 } tBTA_JV_L2CAP_WRITE;
316 
317 /* data associated with BTA_JV_RFCOMM_OPEN_EVT */
318 typedef struct
319 {
320     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
321     UINT32          handle;     /* The connection handle */
322     BD_ADDR         rem_bda;    /* The peer address */
323 } tBTA_JV_RFCOMM_OPEN;
324 /* data associated with BTA_JV_RFCOMM_SRV_OPEN_EVT */
325 typedef struct
326 {
327     tBTA_JV_STATUS  status;             /* Whether the operation succeeded or failed. */
328     UINT32          handle;             /* The connection handle */
329     UINT32          new_listen_handle;  /* The new listen handle */
330     BD_ADDR         rem_bda;            /* The peer address */
331 } tBTA_JV_RFCOMM_SRV_OPEN;
332 
333 
334 /* data associated with BTA_JV_RFCOMM_CLOSE_EVT */
335 typedef struct
336 {
337     tBTA_JV_STATUS  status;      /* Whether the operation succeeded or failed. */
338     UINT32          port_status; /* PORT status */
339     UINT32          handle;      /* The connection handle */
340     BOOLEAN         async;       /* FALSE, if local initiates disconnect */
341 } tBTA_JV_RFCOMM_CLOSE;
342 
343 /* data associated with BTA_JV_RFCOMM_START_EVT */
344 typedef struct
345 {
346     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
347     UINT32          handle;     /* The connection handle */
348     UINT8           sec_id;     /* security ID used by this server */
349     BOOLEAN         use_co;     /* TRUE to use co_rfc_data */
350 } tBTA_JV_RFCOMM_START;
351 
352 /* data associated with BTA_JV_RFCOMM_CL_INIT_EVT */
353 typedef struct
354 {
355     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
356     UINT32          handle;     /* The connection handle */
357     UINT8           sec_id;     /* security ID used by this client */
358     BOOLEAN         use_co;     /* TRUE to use co_rfc_data */
359 } tBTA_JV_RFCOMM_CL_INIT;
360 /*data associated with BTA_JV_L2CAP_DATA_IND_EVT & BTA_JV_RFCOMM_DATA_IND_EVT */
361 typedef struct
362 {
363     UINT32          handle;     /* The connection handle */
364 } tBTA_JV_DATA_IND;
365 
366 /* data associated with BTA_JV_RFCOMM_CONG_EVT */
367 typedef struct
368 {
369     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
370     UINT32          handle;     /* The connection handle */
371     BOOLEAN         cong;       /* TRUE, congested. FALSE, uncongested */
372 } tBTA_JV_RFCOMM_CONG;
373 
374 /* data associated with BTA_JV_RFCOMM_READ_EVT */
375 typedef struct
376 {
377     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
378     UINT32          handle;     /* The connection handle */
379     UINT32          req_id;     /* The req_id in the associated BTA_JvRfcommRead() */
380     UINT8           *p_data;    /* This points the same location as the p_data
381                                  * parameter in BTA_JvRfcommRead () */
382     UINT16          len;        /* The length of the data read. */
383 } tBTA_JV_RFCOMM_READ;
384 
385 /* data associated with BTA_JV_RFCOMM_WRITE_EVT */
386 typedef struct
387 {
388     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
389     UINT32          handle;     /* The connection handle */
390     UINT32          req_id;     /* The req_id in the associated BTA_JvRfcommWrite() */
391     int             len;        /* The length of the data written. */
392     BOOLEAN         cong;       /* congestion status */
393 } tBTA_JV_RFCOMM_WRITE;
394 
395 /* data associated with BTA_JV_API_SET_PM_PROFILE_EVT */
396 typedef struct
397 {
398     tBTA_JV_STATUS  status;     /* Status of the operation */
399     UINT32          handle;     /* Connection handle */
400     tBTA_JV_PM_ID   app_id;      /* JV app ID */
401 } tBTA_JV_SET_PM_PROFILE;
402 
403 /* data associated with BTA_JV_API_NOTIFY_PM_STATE_CHANGE_EVT */
404 typedef struct
405 {
406     UINT32          handle;     /* Connection handle */
407     tBTA_JV_CONN_STATE  state;  /* JV connection stata */
408 } tBTA_JV_NOTIFY_PM_STATE_CHANGE;
409 
410 
411 /* union of data associated with JV callback */
412 typedef union
413 {
414     tBTA_JV_STATUS          status;         /* BTA_JV_ENABLE_EVT */
415     tBTA_JV_DISCOVERY_COMP  disc_comp;      /* BTA_JV_DISCOVERY_COMP_EVT */
416     tBTA_JV_SET_DISCOVER    set_discover;   /* BTA_JV_SET_DISCOVER_EVT */
417     tBTA_JV_SET_ENCRYPTION  set_encrypt;    /* BTA_JV_SET_ENCRYPTION_EVT */
418     BD_ADDR                 bd_addr;        /* BTA_JV_LOCAL_ADDR_EVT */
419     UINT8                   *p_name;        /* BTA_JV_LOCAL_NAME_EVT,
420                                                BTA_JV_REMOTE_NAME_EVT */
421     UINT8                   scn;            /* BTA_JV_GET_SCN_EVT */
422     UINT16                  psm;            /* BTA_JV_GET_PSM_EVT */
423     tBTA_JV_SERVICES_LEN    servs_len;      /* BTA_JV_SERVICES_LEN_EVT */
424     tBTA_JV_SERVICE_SEL     serv_sel;       /* BTA_JV_SERVICE_SEL_EVT */
425     tBTA_JV_CREATE_RECORD   create_rec;     /* BTA_JV_CREATE_RECORD_EVT */
426     tBTA_JV_UPDATE_RECORD   update_rec;     /* BTA_JV_UPDATE_RECORD_EVT */
427     tBTA_JV_ADD_ATTR        add_attr;       /* BTA_JV_ADD_ATTR_EVT */
428     tBTA_JV_DELETE_ATTR     del_attr;       /* BTA_JV_DELETE_ATTR_EVT */
429     tBTA_JV_L2CAP_OPEN      l2c_open;       /* BTA_JV_L2CAP_OPEN_EVT */
430     tBTA_JV_L2CAP_CLOSE     l2c_close;      /* BTA_JV_L2CAP_CLOSE_EVT */
431     tBTA_JV_L2CAP_START     l2c_start;      /* BTA_JV_L2CAP_START_EVT */
432     tBTA_JV_L2CAP_CL_INIT   l2c_cl_init;    /* BTA_JV_L2CAP_CL_INIT_EVT */
433     tBTA_JV_L2CAP_CONG      l2c_cong;       /* BTA_JV_L2CAP_CONG_EVT */
434     tBTA_JV_L2CAP_READ      l2c_read;       /* BTA_JV_L2CAP_READ_EVT */
435     tBTA_JV_L2CAP_WRITE     l2c_write;      /* BTA_JV_L2CAP_WRITE_EVT */
436     tBTA_JV_RFCOMM_OPEN     rfc_open;       /* BTA_JV_RFCOMM_OPEN_EVT */
437     tBTA_JV_RFCOMM_SRV_OPEN rfc_srv_open;   /* BTA_JV_RFCOMM_SRV_OPEN_EVT */
438     tBTA_JV_RFCOMM_CLOSE    rfc_close;      /* BTA_JV_RFCOMM_CLOSE_EVT */
439     tBTA_JV_RFCOMM_START    rfc_start;      /* BTA_JV_RFCOMM_START_EVT */
440     tBTA_JV_RFCOMM_CL_INIT  rfc_cl_init;    /* BTA_JV_RFCOMM_CL_INIT_EVT */
441     tBTA_JV_RFCOMM_CONG     rfc_cong;       /* BTA_JV_RFCOMM_CONG_EVT */
442     tBTA_JV_RFCOMM_READ     rfc_read;       /* BTA_JV_RFCOMM_READ_EVT */
443     tBTA_JV_RFCOMM_WRITE    rfc_write;      /* BTA_JV_RFCOMM_WRITE_EVT */
444     tBTA_JV_DATA_IND        data_ind;    /* BTA_JV_L2CAP_DATA_IND_EVT
445                                                BTA_JV_RFCOMM_DATA_IND_EVT */
446 } tBTA_JV;
447 
448 /* JAVA DM Interface callback */
449 typedef void (tBTA_JV_DM_CBACK)(tBTA_JV_EVT event, tBTA_JV *p_data, void * user_data);
450 
451 /* JAVA RFCOMM interface callback */
452 typedef void* (tBTA_JV_RFCOMM_CBACK)(tBTA_JV_EVT event, tBTA_JV *p_data, void *user_data);
453 
454 /* JAVA L2CAP interface callback */
455 typedef void (tBTA_JV_L2CAP_CBACK)(tBTA_JV_EVT event, tBTA_JV *p_data);
456 
457 /* JV configuration structure */
458 typedef struct
459 {
460     UINT16  sdp_raw_size;           /* The size of p_sdp_raw_data */
461     UINT16  sdp_db_size;            /* The size of p_sdp_db */
462     UINT8   *p_sdp_raw_data;        /* The data buffer to keep raw data */
463     tSDP_DISCOVERY_DB   *p_sdp_db;  /* The data buffer to keep SDP database */
464 } tBTA_JV_CFG;
465 
466 /*****************************************************************************
467 **  External Function Declarations
468 *****************************************************************************/
469 #ifdef __cplusplus
470 extern "C"
471 {
472 #endif
473 
474 /*******************************************************************************
475 **
476 ** Function         BTA_JvEnable
477 **
478 ** Description      Enable the Java I/F service. When the enable
479 **                  operation is complete the callback function will be
480 **                  called with a BTA_JV_ENABLE_EVT. This function must
481 **                  be called before other functions in the JV API are
482 **                  called.
483 **
484 ** Returns          BTA_JV_SUCCESS if successful.
485 **                  BTA_JV_FAIL if internal failure.
486 **
487 *******************************************************************************/
488 BTA_API extern tBTA_JV_STATUS BTA_JvEnable(tBTA_JV_DM_CBACK *p_cback);
489 
490 /*******************************************************************************
491 **
492 ** Function         BTA_JvDisable
493 **
494 ** Description      Disable the Java I/F
495 **
496 ** Returns          void
497 **
498 *******************************************************************************/
499 BTA_API extern void BTA_JvDisable(void);
500 
501 /*******************************************************************************
502 **
503 ** Function         BTA_JvIsEnable
504 **
505 ** Description      Get the JV registration status.
506 **
507 ** Returns          TRUE, if registered
508 **
509 *******************************************************************************/
510 BTA_API extern BOOLEAN BTA_JvIsEnable(void);
511 
512 /*******************************************************************************
513 **
514 ** Function         BTA_JvSetDiscoverability
515 **
516 ** Description      This function sets the Bluetooth  discoverable modes
517 **                  of the local device.  This controls whether other
518 **                  Bluetooth devices can find the local device.
519 **
520 **                  When the operation is complete the tBTA_JV_DM_CBACK callback
521 **                  function will be called with a BTA_JV_SET_DISCOVER_EVT.
522 **
523 ** Returns          BTA_JV_SUCCESS if successful.
524 **                  BTA_JV_FAIL if internal failure.
525 **
526 *******************************************************************************/
527 BTA_API extern tBTA_JV_STATUS BTA_JvSetDiscoverability(tBTA_JV_DISC disc_mode);
528 
529 /*******************************************************************************
530 **
531 ** Function         BTA_JvGetDiscoverability
532 **
533 ** Description      This function gets the Bluetooth
534 **                  discoverable modes of local device
535 **
536 ** Returns          The current Bluetooth discoverable mode.
537 **
538 *******************************************************************************/
539 BTA_API extern tBTA_JV_DISC BTA_JvGetDiscoverability(void);
540 
541 /*******************************************************************************
542 **
543 ** Function         BTA_JvGetLocalDeviceAddr
544 **
545 ** Description      This function obtains the local Bluetooth device address.
546 **                  The local Bluetooth device address is reported by the
547 **                  tBTA_JV_DM_CBACK callback with a BTA_JV_LOCAL_ADDR_EVT.
548 **
549 ** Returns          BTA_JV_SUCCESS if successful.
550 **                  BTA_JV_FAIL if internal failure.
551 **
552 *******************************************************************************/
553 BTA_API extern tBTA_JV_STATUS BTA_JvGetLocalDeviceAddr(void);
554 
555 /*******************************************************************************
556 **
557 ** Function         BTA_JvGetLocalDeviceName
558 **
559 ** Description      This function obtains the name of the local device
560 **                  The local Bluetooth device name is reported by the
561 **                  tBTA_JV_DM_CBACK callback with a BTA_JV_LOCAL_NAME_EVT.
562 **
563 ** Returns          BTA_JV_SUCCESS if successful.
564 **                  BTA_JV_FAIL if internal failure.
565 **
566 *******************************************************************************/
567 BTA_API extern tBTA_JV_STATUS BTA_JvGetLocalDeviceName(void);
568 
569 /*******************************************************************************
570 **
571 ** Function         BTA_JvGetRemoteDeviceName
572 **
573 ** Description      This function obtains the name of the specified device.
574 **                  The Bluetooth device name is reported by the
575 **                  tBTA_JV_DM_CBACK callback with a BTA_JV_REMOTE_NAME_EVT.
576 **
577 ** Returns          BTA_JV_SUCCESS if successful.
578 **                  BTA_JV_FAIL if internal failure.
579 **
580 *******************************************************************************/
581 BTA_API extern tBTA_JV_STATUS BTA_JvGetRemoteDeviceName(BD_ADDR bd_addr);
582 
583 /*******************************************************************************
584 **
585 ** Function         BTA_JvGetPreknownDevice
586 **
587 ** Description      This function obtains the Bluetooth address in the inquiry
588 **                  database collected via the previous call to BTA_DmSearch().
589 **
590 ** Returns          The number of preknown devices if p_bd_addr is NULL
591 **                  BTA_JV_SUCCESS if successful.
592 **                  BTA_JV_INTERNAL_ERR(-1) if internal failure.
593 **
594 *******************************************************************************/
595 BTA_API extern INT32 BTA_JvGetPreknownDevice(UINT8 * p_bd_addr, UINT32 index);
596 
597 /*******************************************************************************
598 **
599 ** Function         BTA_JvGetDeviceClass
600 **
601 ** Description      This function obtains the local Class of Device.
602 **
603 ** Returns          DEV_CLASS, A three-byte array of UINT8 that contains the
604 **                  Class of Device information. The definitions are in the
605 **                  "Bluetooth Assigned Numbers".
606 **
607 *******************************************************************************/
608 BTA_API extern UINT8 * BTA_JvGetDeviceClass(void);
609 
610 /*******************************************************************************
611 **
612 ** Function         BTA_JvSetServiceClass
613 **
614 ** Description      This function sets the service class of local Class of Device
615 **
616 ** Returns          BTA_JV_SUCCESS if successful.
617 **                  BTA_JV_FAIL if internal failure.
618 **
619 *******************************************************************************/
620 BTA_API extern tBTA_JV_STATUS BTA_JvSetServiceClass(UINT32 service);
621 
622 /*******************************************************************************
623 **
624 ** Function         BTA_JvSetEncryption
625 **
626 ** Description      This function ensures that the connection to the given device
627 **                  is encrypted.
628 **                  When the operation is complete the tBTA_JV_DM_CBACK callback
629 **                  function will be called with a BTA_JV_SET_ENCRYPTION_EVT.
630 **
631 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
632 **                  BTA_JV_FAILURE, otherwise.
633 **
634 *******************************************************************************/
635 BTA_API extern tBTA_JV_STATUS BTA_JvSetEncryption(BD_ADDR bd_addr);
636 
637 /*******************************************************************************
638 **
639 ** Function         BTA_JvIsAuthenticated
640 **
641 ** Description      This function checks if the peer device is authenticated
642 **
643 ** Returns          TRUE if authenticated.
644 **                  FALSE if not.
645 **
646 *******************************************************************************/
647 BTA_API extern BOOLEAN BTA_JvIsAuthenticated(BD_ADDR bd_addr);
648 
649 /*******************************************************************************
650 **
651 ** Function         BTA_JvIsTrusted
652 **
653 ** Description      This function checks if the peer device is trusted
654 **                  (previously paired)
655 **
656 ** Returns          TRUE if trusted.
657 **                  FALSE if not.
658 **
659 *******************************************************************************/
660 BTA_API extern BOOLEAN BTA_JvIsTrusted(BD_ADDR bd_addr);
661 
662 /*******************************************************************************
663 **
664 ** Function         BTA_JvIsAuthorized
665 **
666 ** Description      This function checks if the peer device is authorized
667 **
668 ** Returns          TRUE if authorized.
669 **                  FALSE if not.
670 **
671 *******************************************************************************/
672 BTA_API extern BOOLEAN BTA_JvIsAuthorized(BD_ADDR bd_addr);
673 
674 /*******************************************************************************
675 **
676 ** Function         BTA_JvIsEncrypted
677 **
678 ** Description      This function checks if the link to peer device is encrypted
679 **
680 ** Returns          TRUE if encrypted.
681 **                  FALSE if not.
682 **
683 *******************************************************************************/
684 BTA_API extern BOOLEAN BTA_JvIsEncrypted(BD_ADDR bd_addr);
685 
686 /*******************************************************************************
687 **
688 ** Function         BTA_JvGetSecurityMode
689 **
690 ** Description      This function returns the current Bluetooth security mode
691 **                  of the local device
692 **
693 ** Returns          The current Bluetooth security mode.
694 **
695 *******************************************************************************/
696 BTA_API extern tBTA_JV_SEC_MODE BTA_JvGetSecurityMode(void);
697 
698 /* BTA_JvIsMaster is replaced by BTA_DmIsMaster */
699 
700 /*******************************************************************************
701 **
702 ** Function         BTA_JvGetSCN
703 **
704 ** Description      This function reserves a SCN (server channel number) for
705 **                  applications running over RFCOMM. It is primarily called by
706 **                  server profiles/applications to register their SCN into the
707 **                  SDP database. The SCN is reported by the tBTA_JV_DM_CBACK
708 **                  callback with a BTA_JV_GET_SCN_EVT.
709 **                  If the SCN reported is 0, that means all SCN resources are
710 **                  exhausted.
711 **
712 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
713 **                  BTA_JV_FAILURE, otherwise.
714 **
715 *******************************************************************************/
716 BTA_API extern tBTA_JV_STATUS BTA_JvGetSCN(void);
717 
718 /*******************************************************************************
719 **
720 ** Function         BTA_JvFreeSCN
721 **
722 ** Description      This function frees a server channel number that was used
723 **                  by an application running over RFCOMM.
724 **
725 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
726 **                  BTA_JV_FAILURE, otherwise.
727 **
728 *******************************************************************************/
729 BTA_API extern tBTA_JV_STATUS BTA_JvFreeSCN(UINT8 scn);
730 
731 /*******************************************************************************
732 **
733 ** Function         BTA_JvGetPSM
734 **
735 ** Description      This function reserves a PSM (Protocol Service Multiplexer)
736 **                  applications running over L2CAP. It is primarily called by
737 **                  server profiles/applications to register their PSM into the
738 **                  SDP database.
739 **
740 ** Returns          The next free PSM
741 **
742 *******************************************************************************/
743 BTA_API extern UINT16 BTA_JvGetPSM(void);
744 
745 /*******************************************************************************
746 **
747 ** Function         BTA_JvStartDiscovery
748 **
749 ** Description      This function performs service discovery for the services
750 **                  provided by the given peer device. When the operation is
751 **                  complete the tBTA_JV_DM_CBACK callback function will be
752 **                  called with a BTA_JV_DISCOVERY_COMP_EVT.
753 **
754 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
755 **                  BTA_JV_FAILURE, otherwise.
756 **
757 *******************************************************************************/
758 BTA_API extern tBTA_JV_STATUS BTA_JvStartDiscovery(BD_ADDR bd_addr, UINT16 num_uuid,
759                            tSDP_UUID *p_uuid_list, void* user_data);
760 
761 /*******************************************************************************
762 **
763 ** Function         BTA_JvCancelDiscovery
764 **
765 ** Description      This function cancels an active service discovery.
766 **                  When the operation is
767 **                  complete the tBTA_JV_DM_CBACK callback function will be
768 **                  called with a BTA_JV_CANCEL_DISCVRY_EVT.
769 **
770 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
771 **                  BTA_JV_FAILURE, otherwise.
772 **
773 *******************************************************************************/
774 BTA_API extern tBTA_JV_STATUS BTA_JvCancelDiscovery(void * user_data);
775 
776 /*******************************************************************************
777 **
778 ** Function         BTA_JvGetServicesLength
779 **
780 ** Description      This function obtains the number of services and the length
781 **                  of each service found in the SDP database (result of last
782 **                  BTA_JvStartDiscovery().When the operation is complete the
783 **                  tBTA_JV_DM_CBACK callback function will be called with a
784 **                  BTA_JV_SERVICES_LEN_EVT.
785 **
786 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
787 **                  BTA_JV_FAILURE, otherwise.
788 **
789 *******************************************************************************/
790 BTA_API extern tBTA_JV_STATUS BTA_JvGetServicesLength(BOOLEAN inc_hdr, UINT16 *p_services_len);
791 
792 /*******************************************************************************
793 **
794 ** Function         BTA_JvGetServicesResult
795 **
796 ** Description      This function returns a number of service records found
797 **                  during current service search, equals to the number returned
798 **                  by previous call to BTA_JvGetServicesLength.
799 **                  The contents of each SDP record will be returned under a
800 **                  TLV (type, len, value) representation in the data buffer
801 **                  provided by the caller.
802 **
803 ** Returns          -1, if error. Otherwise, the number of services
804 **
805 *******************************************************************************/
806 BTA_API extern INT32 BTA_JvGetServicesResult(BOOLEAN inc_hdr, UINT8 **TLVs);
807 
808 /*******************************************************************************
809 **
810 ** Function         BTA_JvServiceSelect
811 **
812 ** Description      This function checks if the SDP database contains the given
813 **                  service UUID. When the operation is complete the
814 **                  tBTA_JV_DM_CBACK callback function will be called with a
815 **                  BTA_JV_SERVICE_SEL_EVT with the length of the service record.
816 **                  If the service is not found or error, -1 is reported.
817 **
818 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
819 **                  BTA_JV_FAILURE, otherwise.
820 **
821 *******************************************************************************/
822 BTA_API extern tBTA_JV_STATUS BTA_JvServiceSelect(UINT16 uuid);
823 
824 /*******************************************************************************
825 **
826 ** Function         BTA_JvServiceResult
827 **
828 ** Description      This function returns the contents of the SDP record from
829 **                  last BTA_JvServiceSelect. The contents will be returned under
830 **                  a TLV (type, len, value) representation in the data buffer
831 **                  provided by the caller.
832 **
833 ** Returns          -1, if error. Otherwise, the length of service record.
834 **
835 *******************************************************************************/
836 BTA_API extern INT32 BTA_JvServiceResult(UINT8 *TLV);
837 
838 /*******************************************************************************
839 **
840 ** Function         BTA_JvCreateRecord
841 **
842 ** Description      Create a service record in the local SDP database by user in
843 **                  tBTA_JV_DM_CBACK callback with a BTA_JV_CREATE_RECORD_EVT.
844 **
845 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
846 **                  BTA_JV_FAILURE, otherwise.
847 **
848 *******************************************************************************/
849 BTA_API extern tBTA_JV_STATUS BTA_JvCreateRecordByUser(void* user_data);
850 
851 /*******************************************************************************
852 **
853 ** Function         BTA_JvUpdateRecord
854 **
855 ** Description      Update a service record in the local SDP database.
856 **                  When the operation is complete the tBTA_JV_DM_CBACK callback
857 **                  function will be called with a BTA_JV_UPDATE_RECORD_EVT.
858 **
859 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
860 **                  BTA_JV_FAILURE, otherwise.
861 **
862 *******************************************************************************/
863 BTA_API extern tBTA_JV_STATUS BTA_JvUpdateRecord(UINT32 handle, UINT16 *p_ids,
864                            UINT8 **p_values, INT32 *p_value_sizes, INT32 array_len);
865 
866 /*******************************************************************************
867 **
868 ** Function         BTA_JvAddAttribute
869 **
870 ** Description      Add an attribute to a service record in the local SDP database.
871 **                  When the operation is complete the tBTA_JV_DM_CBACK callback
872 **                  function will be called with a BTA_JV_ADD_ATTR_EVT.
873 **
874 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
875 **                  BTA_JV_FAILURE, otherwise.
876 **
877 *******************************************************************************/
878 BTA_API extern tBTA_JV_STATUS BTA_JvAddAttribute(UINT32 handle, UINT16 attr_id,
879                            UINT8 *p_value, INT32 value_size);
880 
881 /*******************************************************************************
882 **
883 ** Function         BTA_JvDeleteAttribute
884 **
885 ** Description      Delete an attribute from a service record in the local SDP database.
886 **                  When the operation is complete the tBTA_JV_DM_CBACK callback
887 **                  function will be called with a BTA_JV_DELETE_ATTR_EVT.
888 **
889 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
890 **                  BTA_JV_FAILURE, otherwise.
891 **
892 *******************************************************************************/
893 BTA_API extern tBTA_JV_STATUS BTA_JvDeleteAttribute(UINT32 handle, UINT16 attr_id);
894 
895 /*******************************************************************************
896 **
897 ** Function         BTA_JvDeleteRecord
898 **
899 ** Description      Delete a service record in the local SDP database.
900 **
901 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
902 **                  BTA_JV_FAILURE, otherwise.
903 **
904 *******************************************************************************/
905 BTA_API extern tBTA_JV_STATUS BTA_JvDeleteRecord(UINT32 handle);
906 
907 /*******************************************************************************
908 **
909 ** Function         BTA_JvReadRecord
910 **
911 ** Description      Read a service record in the local SDP database.
912 **
913 ** Returns          -1, if the record is not found.
914 **                  Otherwise, the offset (0 or 1) to start of data in p_data.
915 **
916 **                  The size of data copied into p_data is in *p_data_len.
917 **
918 *******************************************************************************/
919 BTA_API extern INT32 BTA_JvReadRecord(UINT32 handle, UINT8 *p_data, INT32 *p_data_len);
920 
921 /*******************************************************************************
922 **
923 ** Function         BTA_JvL2capConnect
924 **
925 ** Description      Initiate a connection as a L2CAP client to the given BD
926 **                  Address.
927 **                  When the connection is initiated or failed to initiate,
928 **                  tBTA_JV_L2CAP_CBACK is called with BTA_JV_L2CAP_CL_INIT_EVT
929 **                  When the connection is established or failed,
930 **                  tBTA_JV_L2CAP_CBACK is called with BTA_JV_L2CAP_OPEN_EVT
931 **
932 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
933 **                  BTA_JV_FAILURE, otherwise.
934 **
935 *******************************************************************************/
936 BTA_API extern tBTA_JV_STATUS BTA_JvL2capConnect(tBTA_SEC sec_mask,
937                            tBTA_JV_ROLE role,  UINT16 remote_psm, UINT16 rx_mtu,
938                            BD_ADDR peer_bd_addr, tBTA_JV_L2CAP_CBACK *p_cback);
939 
940 /*******************************************************************************
941 **
942 ** Function         BTA_JvL2capClose
943 **
944 ** Description      This function closes an L2CAP client connection
945 **
946 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
947 **                  BTA_JV_FAILURE, otherwise.
948 **
949 *******************************************************************************/
950 BTA_API extern tBTA_JV_STATUS BTA_JvL2capClose(UINT32 handle);
951 
952 /*******************************************************************************
953 **
954 ** Function         BTA_JvL2capStartServer
955 **
956 ** Description      This function starts an L2CAP server and listens for an L2CAP
957 **                  connection from a remote Bluetooth device.  When the server
958 **                  is started successfully, tBTA_JV_L2CAP_CBACK is called with
959 **                  BTA_JV_L2CAP_START_EVT.  When the connection is established,
960 **                  tBTA_JV_L2CAP_CBACK is called with BTA_JV_L2CAP_OPEN_EVT.
961 **
962 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
963 **                  BTA_JV_FAILURE, otherwise.
964 **
965 *******************************************************************************/
966 BTA_API extern tBTA_JV_STATUS BTA_JvL2capStartServer(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
967                            UINT16 local_psm, UINT16 rx_mtu,
968                            tBTA_JV_L2CAP_CBACK *p_cback);
969 
970 /*******************************************************************************
971 **
972 ** Function         BTA_JvL2capStopServer
973 **
974 ** Description      This function stops the L2CAP server. If the server has an
975 **                  active connection, it would be closed.
976 **
977 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
978 **                  BTA_JV_FAILURE, otherwise.
979 **
980 *******************************************************************************/
981 BTA_API extern tBTA_JV_STATUS BTA_JvL2capStopServer(UINT16 local_psm);
982 
983 /*******************************************************************************
984 **
985 ** Function         BTA_JvL2capRead
986 **
987 ** Description      This function reads data from an L2CAP connection
988 **                  When the operation is complete, tBTA_JV_L2CAP_CBACK is
989 **                  called with BTA_JV_L2CAP_READ_EVT.
990 **
991 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
992 **                  BTA_JV_FAILURE, otherwise.
993 **
994 *******************************************************************************/
995 BTA_API extern tBTA_JV_STATUS BTA_JvL2capRead(UINT32 handle, UINT32 req_id,
996                                               UINT8 *p_data, UINT16 len);
997 
998 /*******************************************************************************
999 **
1000 ** Function         BTA_JvL2capReceive
1001 **
1002 ** Description      This function reads data from an L2CAP connection
1003 **                  When the operation is complete, tBTA_JV_L2CAP_CBACK is
1004 **                  called with BTA_JV_L2CAP_RECEIVE_EVT.
1005 **                  If there are more data queued in L2CAP than len, the extra data will be discarded.
1006 **
1007 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
1008 **                  BTA_JV_FAILURE, otherwise.
1009 **
1010 *******************************************************************************/
1011 BTA_API extern tBTA_JV_STATUS BTA_JvL2capReceive(UINT32 handle, UINT32 req_id,
1012                                               UINT8 *p_data, UINT16 len);
1013 
1014 /*******************************************************************************
1015 **
1016 ** Function         BTA_JvL2capReady
1017 **
1018 ** Description      This function determined if there is data to read from
1019 **                  an L2CAP connection
1020 **
1021 ** Returns          BTA_JV_SUCCESS, if data queue size is in *p_data_size.
1022 **                  BTA_JV_FAILURE, if error.
1023 **
1024 *******************************************************************************/
1025 BTA_API extern tBTA_JV_STATUS BTA_JvL2capReady(UINT32 handle, UINT32 *p_data_size);
1026 
1027 /*******************************************************************************
1028 **
1029 ** Function         BTA_JvL2capWrite
1030 **
1031 ** Description      This function writes data to an L2CAP connection
1032 **                  When the operation is complete, tBTA_JV_L2CAP_CBACK is
1033 **                  called with BTA_JV_L2CAP_WRITE_EVT.
1034 **
1035 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
1036 **                  BTA_JV_FAILURE, otherwise.
1037 **
1038 *******************************************************************************/
1039 BTA_API extern tBTA_JV_STATUS BTA_JvL2capWrite(UINT32 handle, UINT32 req_id,
1040                                                UINT8 *p_data, UINT16 len);
1041 
1042 /*******************************************************************************
1043 **
1044 ** Function         BTA_JvRfcommConnect
1045 **
1046 ** Description      This function makes an RFCOMM conection to a remote BD
1047 **                  Address.
1048 **                  When the connection is initiated or failed to initiate,
1049 **                  tBTA_JV_RFCOMM_CBACK is called with BTA_JV_RFCOMM_CL_INIT_EVT
1050 **                  When the connection is established or failed,
1051 **                  tBTA_JV_RFCOMM_CBACK is called with BTA_JV_RFCOMM_OPEN_EVT
1052 **
1053 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
1054 **                  BTA_JV_FAILURE, otherwise.
1055 **
1056 *******************************************************************************/
1057 BTA_API extern tBTA_JV_STATUS BTA_JvRfcommConnect(tBTA_SEC sec_mask,
1058                            tBTA_JV_ROLE role, UINT8 remote_scn, BD_ADDR peer_bd_addr,
1059                            tBTA_JV_RFCOMM_CBACK *p_cback, void *user_data);
1060 
1061 /*******************************************************************************
1062 **
1063 ** Function         BTA_JvRfcommClose
1064 **
1065 ** Description      This function closes an RFCOMM connection
1066 **
1067 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
1068 **                  BTA_JV_FAILURE, otherwise.
1069 **
1070 *******************************************************************************/
1071 BTA_API extern tBTA_JV_STATUS BTA_JvRfcommClose(UINT32 handle, void* user_data);
1072 
1073 /*******************************************************************************
1074 **
1075 ** Function         BTA_JvRfcommStartServer
1076 **
1077 ** Description      This function starts listening for an RFCOMM connection
1078 **                  request from a remote Bluetooth device.  When the server is
1079 **                  started successfully, tBTA_JV_RFCOMM_CBACK is called
1080 **                  with BTA_JV_RFCOMM_START_EVT.
1081 **                  When the connection is established, tBTA_JV_RFCOMM_CBACK
1082 **                  is called with BTA_JV_RFCOMM_OPEN_EVT.
1083 **
1084 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
1085 **                  BTA_JV_FAILURE, otherwise.
1086 **
1087 *******************************************************************************/
1088 BTA_API extern tBTA_JV_STATUS BTA_JvRfcommStartServer(tBTA_SEC sec_mask,
1089                            tBTA_JV_ROLE role, UINT8 local_scn, UINT8 max_session,
1090                            tBTA_JV_RFCOMM_CBACK *p_cback, void *user_data);
1091 
1092 /*******************************************************************************
1093 **
1094 ** Function         BTA_JvRfcommStopServer
1095 **
1096 ** Description      This function stops the RFCOMM server. If the server has an
1097 **                  active connection, it would be closed.
1098 **
1099 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
1100 **                  BTA_JV_FAILURE, otherwise.
1101 **
1102 *******************************************************************************/
1103 BTA_API extern tBTA_JV_STATUS BTA_JvRfcommStopServer(UINT32 handle, void* user_data);
1104 
1105 /*******************************************************************************
1106 **
1107 ** Function         BTA_JvRfcommRead
1108 **
1109 ** Description      This function reads data from an RFCOMM connection
1110 **                  When the operation is complete, tBTA_JV_RFCOMM_CBACK is
1111 **                  called with BTA_JV_RFCOMM_READ_EVT.
1112 **
1113 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
1114 **                  BTA_JV_FAILURE, otherwise.
1115 **
1116 *******************************************************************************/
1117 BTA_API extern tBTA_JV_STATUS BTA_JvRfcommRead(UINT32 handle, UINT32 req_id,
1118                                                UINT8 *p_data, UINT16 len);
1119 
1120 /*******************************************************************************
1121 **
1122 ** Function         BTA_JvRfcommReady
1123 **
1124 ** Description      This function determined if there is data to read from
1125 **                  an RFCOMM connection
1126 **
1127 ** Returns          BTA_JV_SUCCESS, if data queue size is in *p_data_size.
1128 **                  BTA_JV_FAILURE, if error.
1129 **
1130 *******************************************************************************/
1131 BTA_API extern tBTA_JV_STATUS BTA_JvRfcommReady(UINT32 handle, UINT32 *p_data_size);
1132 
1133 /*******************************************************************************
1134 **
1135 ** Function         BTA_JvRfcommWrite
1136 **
1137 ** Description      This function writes data to an RFCOMM connection
1138 **                  When the operation is complete, tBTA_JV_RFCOMM_CBACK is
1139 **                  called with BTA_JV_RFCOMM_WRITE_EVT.
1140 **
1141 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
1142 **                  BTA_JV_FAILURE, otherwise.
1143 **
1144 *******************************************************************************/
1145 BTA_API extern tBTA_JV_STATUS BTA_JvRfcommWrite(UINT32 handle, UINT32 req_id);
1146 
1147 /*******************************************************************************
1148  **
1149  ** Function    BTA_JVSetPmProfile
1150  **
1151  ** Description This function set or free power mode profile for different JV application
1152  **
1153  ** Parameters:  handle,  JV handle from RFCOMM or L2CAP
1154  **              app_id:  app specific pm ID, can be BTA_JV_PM_ALL, see bta_dm_cfg.c for details
1155  **              BTA_JV_PM_ID_CLEAR: removes pm management on the handle. init_st is ignored and
1156  **              BTA_JV_CONN_CLOSE is called implicitely
1157  **              init_st:  state after calling this API. typically it should be BTA_JV_CONN_OPEN
1158  **
1159  ** Returns      BTA_JV_SUCCESS, if the request is being processed.
1160  **              BTA_JV_FAILURE, otherwise.
1161  **
1162  ** NOTE:        BTA_JV_PM_ID_CLEAR: In general no need to be called as jv pm calls automatically
1163  **              BTA_JV_CONN_CLOSE to remove in case of connection close!
1164  **
1165  *******************************************************************************/
1166 BTA_API extern tBTA_JV_STATUS BTA_JvSetPmProfile(UINT32 handle, tBTA_JV_PM_ID app_id,
1167                                                  tBTA_JV_CONN_STATE init_st);
1168 
1169 /*******************************************************************************
1170 **
1171 ** Function         BTA_JvRfcommGetPortHdl
1172 **
1173 ** Description    This function fetches the rfcomm port handle
1174 **
1175 ** Returns          BTA_JV_SUCCESS, if the request is being processed.
1176 **                  BTA_JV_FAILURE, otherwise.
1177 **
1178 *******************************************************************************/
1179 UINT16 BTA_JvRfcommGetPortHdl(UINT32 handle);
1180 
1181 #ifdef __cplusplus
1182 }
1183 #endif
1184 
1185 #endif /* BTA_JV_API_H */
1186 
1187