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 "bt_target.h" 28 #include "bt_types.h" 29 #include "bta_api.h" 30 #include "btm_api.h" 31 #include "l2c_api.h" 32 33 /***************************************************************************** 34 ** Constants and data types 35 *****************************************************************************/ 36 /* status values */ 37 #define BTA_JV_SUCCESS 0 /* Successful operation. */ 38 #define BTA_JV_FAILURE 1 /* Generic failure. */ 39 #define BTA_JV_BUSY 2 /* Temporarily can not handle this request. */ 40 #define BTA_JV_NO_DATA 3 /* no data. */ 41 #define BTA_JV_NO_RESOURCE 4 /* No more set pm control block */ 42 43 typedef UINT8 tBTA_JV_STATUS; 44 #define BTA_JV_INTERNAL_ERR (-1) /* internal error. */ 45 46 #define BTA_JV_MAX_UUIDS SDP_MAX_UUID_FILTERS 47 #define BTA_JV_MAX_ATTRS SDP_MAX_ATTR_FILTERS 48 #define BTA_JV_MAX_SDP_REC SDP_MAX_RECORDS 49 #define BTA_JV_MAX_L2C_CONN GAP_MAX_CONNECTIONS /* GAP handle is used as index, hence do not change this value */ 50 #define BTA_JV_MAX_SCN PORT_MAX_RFC_PORTS /* same as BTM_MAX_SCN (in btm_int.h) */ 51 #define BTA_JV_MAX_RFC_CONN MAX_RFC_PORTS 52 53 #ifndef BTA_JV_DEF_RFC_MTU 54 #define BTA_JV_DEF_RFC_MTU (3*330) 55 #endif 56 57 #ifndef BTA_JV_MAX_RFC_SR_SESSION 58 #define BTA_JV_MAX_RFC_SR_SESSION MAX_BD_CONNECTIONS 59 #endif 60 61 /* BTA_JV_MAX_RFC_SR_SESSION can not be bigger than MAX_BD_CONNECTIONS */ 62 #if (BTA_JV_MAX_RFC_SR_SESSION > MAX_BD_CONNECTIONS) 63 #undef BTA_JV_MAX_RFC_SR_SESSION 64 #define BTA_JV_MAX_RFC_SR_SESSION MAX_BD_CONNECTIONS 65 #endif 66 67 #define BTA_JV_FIRST_SERVICE_ID BTA_FIRST_JV_SERVICE_ID 68 #define BTA_JV_LAST_SERVICE_ID BTA_LAST_JV_SERVICE_ID 69 #define BTA_JV_NUM_SERVICE_ID (BTA_LAST_JV_SERVICE_ID - BTA_FIRST_JV_SERVICE_ID + 1) 70 71 /* Discoverable modes */ 72 enum 73 { 74 BTA_JV_DISC_NONE, 75 BTA_JV_DISC_LIMITED, 76 BTA_JV_DISC_GENERAL 77 }; 78 typedef UINT16 tBTA_JV_DISC; 79 80 #define BTA_JV_ROLE_SLAVE BTM_ROLE_SLAVE 81 #define BTA_JV_ROLE_MASTER BTM_ROLE_MASTER 82 typedef UINT32 tBTA_JV_ROLE; 83 84 #define BTA_JV_SERVICE_LMTD_DISCOVER BTM_COD_SERVICE_LMTD_DISCOVER /* 0x0020 */ 85 #define BTA_JV_SERVICE_POSITIONING BTM_COD_SERVICE_POSITIONING /* 0x0100 */ 86 #define BTA_JV_SERVICE_NETWORKING BTM_COD_SERVICE_NETWORKING /* 0x0200 */ 87 #define BTA_JV_SERVICE_RENDERING BTM_COD_SERVICE_RENDERING /* 0x0400 */ 88 #define BTA_JV_SERVICE_CAPTURING BTM_COD_SERVICE_CAPTURING /* 0x0800 */ 89 #define BTA_JV_SERVICE_OBJ_TRANSFER BTM_COD_SERVICE_OBJ_TRANSFER /* 0x1000 */ 90 #define BTA_JV_SERVICE_AUDIO BTM_COD_SERVICE_AUDIO /* 0x2000 */ 91 #define BTA_JV_SERVICE_TELEPHONY BTM_COD_SERVICE_TELEPHONY /* 0x4000 */ 92 #define BTA_JV_SERVICE_INFORMATION BTM_COD_SERVICE_INFORMATION /* 0x8000 */ 93 94 /* JV ID type */ 95 #define BTA_JV_PM_ID_1 1 /* PM example profile 1 */ 96 #define BTA_JV_PM_ID_2 2 /* PM example profile 2 */ 97 #define BTA_JV_PM_ID_CLEAR 0 /* Special JV ID used to clear PM profile */ 98 #define BTA_JV_PM_ALL 0xFF /* Generic match all id, see bta_dm_cfg.c */ 99 typedef UINT8 tBTA_JV_PM_ID; 100 101 #define BTA_JV_PM_HANDLE_CLEAR 0xFF /* Special JV ID used to clear PM profile */ 102 103 /* define maximum number of registered PM entities. should be in sync with bta pm! */ 104 #ifndef BTA_JV_PM_MAX_NUM 105 #define BTA_JV_PM_MAX_NUM 5 106 #endif 107 108 /* JV pm connection states */ 109 enum 110 { 111 BTA_JV_CONN_OPEN = 0, /* Connection opened state */ 112 BTA_JV_CONN_CLOSE, /* Connection closed state */ 113 BTA_JV_APP_OPEN, /* JV Application opened state */ 114 BTA_JV_APP_CLOSE, /* JV Application closed state */ 115 BTA_JV_SCO_OPEN, /* SCO connection opened state */ 116 BTA_JV_SCO_CLOSE, /* SCO connection opened state */ 117 BTA_JV_CONN_IDLE, /* Connection idle state */ 118 BTA_JV_CONN_BUSY, /* Connection busy state */ 119 BTA_JV_MAX_CONN_STATE /* Max number of connection state */ 120 }; 121 typedef UINT8 tBTA_JV_CONN_STATE; 122 123 /* JV Connection types */ 124 #define BTA_JV_CONN_TYPE_RFCOMM 0 125 #define BTA_JV_CONN_TYPE_L2CAP 1 126 #define BTA_JV_CONN_TYPE_L2CAP_LE 2 127 128 /* Java I/F callback events */ 129 /* events received by tBTA_JV_DM_CBACK */ 130 #define BTA_JV_ENABLE_EVT 0 /* JV enabled */ 131 #define BTA_JV_GET_SCN_EVT 6 /* Reserved an SCN */ 132 #define BTA_JV_GET_PSM_EVT 7 /* Reserved a PSM */ 133 #define BTA_JV_DISCOVERY_COMP_EVT 8 /* SDP discovery complete */ 134 #define BTA_JV_CREATE_RECORD_EVT 11 /* the result for BTA_JvCreateRecord */ 135 /* events received by tBTA_JV_L2CAP_CBACK */ 136 #define BTA_JV_L2CAP_OPEN_EVT 16 /* open status of L2CAP connection */ 137 #define BTA_JV_L2CAP_CLOSE_EVT 17 /* L2CAP connection closed */ 138 #define BTA_JV_L2CAP_START_EVT 18 /* L2CAP server started */ 139 #define BTA_JV_L2CAP_CL_INIT_EVT 19 /* L2CAP client initiated a connection */ 140 #define BTA_JV_L2CAP_DATA_IND_EVT 20 /* L2CAP connection received data */ 141 #define BTA_JV_L2CAP_CONG_EVT 21 /* L2CAP connection congestion status changed */ 142 #define BTA_JV_L2CAP_READ_EVT 22 /* the result for BTA_JvL2capRead */ 143 #define BTA_JV_L2CAP_RECEIVE_EVT 23 /* the result for BTA_JvL2capReceive*/ 144 #define BTA_JV_L2CAP_WRITE_EVT 24 /* the result for BTA_JvL2capWrite*/ 145 #define BTA_JV_L2CAP_WRITE_FIXED_EVT 25 /* the result for BTA_JvL2capWriteFixed */ 146 147 /* events received by tBTA_JV_RFCOMM_CBACK */ 148 #define BTA_JV_RFCOMM_OPEN_EVT 26 /* open status of RFCOMM Client connection */ 149 #define BTA_JV_RFCOMM_CLOSE_EVT 27 /* RFCOMM connection closed */ 150 #define BTA_JV_RFCOMM_START_EVT 28 /* RFCOMM server started */ 151 #define BTA_JV_RFCOMM_CL_INIT_EVT 29 /* RFCOMM client initiated a connection */ 152 #define BTA_JV_RFCOMM_DATA_IND_EVT 30 /* RFCOMM connection received data */ 153 #define BTA_JV_RFCOMM_CONG_EVT 31 /* RFCOMM connection congestion status changed */ 154 #define BTA_JV_RFCOMM_READ_EVT 32 /* the result for BTA_JvRfcommRead */ 155 #define BTA_JV_RFCOMM_WRITE_EVT 33 /* the result for BTA_JvRfcommWrite*/ 156 #define BTA_JV_RFCOMM_SRV_OPEN_EVT 34 /* open status of Server RFCOMM connection */ 157 #define BTA_JV_MAX_EVT 35 /* max number of JV events */ 158 159 typedef UINT16 tBTA_JV_EVT; 160 161 /* data associated with BTA_JV_SET_DISCOVER_EVT */ 162 typedef struct 163 { 164 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 165 tBTA_JV_DISC disc_mode; /* The current discoverable mode */ 166 } tBTA_JV_SET_DISCOVER; 167 168 /* data associated with BTA_JV_DISCOVERY_COMP_EVT_ */ 169 typedef struct 170 { 171 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 172 int scn; /* channel # */ 173 } tBTA_JV_DISCOVERY_COMP; 174 175 /* data associated with BTA_JV_CREATE_RECORD_EVT */ 176 typedef struct 177 { 178 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 179 } tBTA_JV_CREATE_RECORD; 180 181 /* data associated with BTA_JV_L2CAP_OPEN_EVT */ 182 typedef struct 183 { 184 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 185 UINT32 handle; /* The connection handle */ 186 BD_ADDR rem_bda; /* The peer address */ 187 INT32 tx_mtu; /* The transmit MTU */ 188 } tBTA_JV_L2CAP_OPEN; 189 190 /* data associated with BTA_JV_L2CAP_OPEN_EVT for LE sockets */ 191 typedef struct 192 { 193 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 194 UINT32 handle; /* The connection handle */ 195 BD_ADDR rem_bda; /* The peer address */ 196 INT32 tx_mtu; /* The transmit MTU */ 197 void **p_p_cback; /* set them for new socket */ 198 void **p_user_data;/* set them for new socket */ 199 200 } tBTA_JV_L2CAP_LE_OPEN; 201 202 203 /* data associated with BTA_JV_L2CAP_CLOSE_EVT */ 204 typedef struct 205 { 206 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 207 UINT32 handle; /* The connection handle */ 208 BOOLEAN async; /* FALSE, if local initiates disconnect */ 209 } tBTA_JV_L2CAP_CLOSE; 210 211 /* data associated with BTA_JV_L2CAP_START_EVT */ 212 typedef struct 213 { 214 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 215 UINT32 handle; /* The connection handle */ 216 UINT8 sec_id; /* security ID used by this server */ 217 } tBTA_JV_L2CAP_START; 218 219 /* data associated with BTA_JV_L2CAP_CL_INIT_EVT */ 220 typedef struct 221 { 222 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 223 UINT32 handle; /* The connection handle */ 224 UINT8 sec_id; /* security ID used by this client */ 225 } tBTA_JV_L2CAP_CL_INIT; 226 227 /* data associated with BTA_JV_L2CAP_CONG_EVT */ 228 typedef struct 229 { 230 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 231 UINT32 handle; /* The connection handle */ 232 BOOLEAN cong; /* TRUE, congested. FALSE, uncongested */ 233 } tBTA_JV_L2CAP_CONG; 234 235 /* data associated with BTA_JV_L2CAP_READ_EVT */ 236 typedef struct 237 { 238 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 239 UINT32 handle; /* The connection handle */ 240 UINT32 req_id; /* The req_id in the associated BTA_JvL2capRead() */ 241 UINT8 *p_data; /* This points the same location as the p_data 242 * parameter in BTA_JvL2capRead () */ 243 UINT16 len; /* The length of the data read. */ 244 } tBTA_JV_L2CAP_READ; 245 246 /* data associated with BTA_JV_L2CAP_RECEIVE_EVT */ 247 typedef struct 248 { 249 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 250 UINT32 handle; /* The connection handle */ 251 UINT32 req_id; /* The req_id in the associated BTA_JvL2capReceive() */ 252 UINT8 *p_data; /* This points the same location as the p_data 253 * parameter in BTA_JvL2capReceive () */ 254 UINT16 len; /* The length of the data read. */ 255 } tBTA_JV_L2CAP_RECEIVE; 256 257 /* data associated with BTA_JV_L2CAP_WRITE_EVT */ 258 typedef struct 259 { 260 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 261 UINT32 handle; /* The connection handle */ 262 UINT32 req_id; /* The req_id in the associated BTA_JvL2capWrite() */ 263 UINT16 len; /* The length of the data written. */ 264 BOOLEAN cong; /* congestion status */ 265 } tBTA_JV_L2CAP_WRITE; 266 267 268 /* data associated with BTA_JV_L2CAP_WRITE_FIXED_EVT */ 269 typedef struct 270 { 271 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 272 UINT16 channel; /* The connection channel */ 273 BD_ADDR addr; /* The peer address */ 274 UINT32 req_id; /* The req_id in the associated BTA_JvL2capWrite() */ 275 UINT16 len; /* The length of the data written. */ 276 BOOLEAN cong; /* congestion status */ 277 } tBTA_JV_L2CAP_WRITE_FIXED; 278 279 /* data associated with BTA_JV_RFCOMM_OPEN_EVT */ 280 typedef struct 281 { 282 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 283 UINT32 handle; /* The connection handle */ 284 BD_ADDR rem_bda; /* The peer address */ 285 } tBTA_JV_RFCOMM_OPEN; 286 /* data associated with BTA_JV_RFCOMM_SRV_OPEN_EVT */ 287 typedef struct 288 { 289 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 290 UINT32 handle; /* The connection handle */ 291 UINT32 new_listen_handle; /* The new listen handle */ 292 BD_ADDR rem_bda; /* The peer address */ 293 } tBTA_JV_RFCOMM_SRV_OPEN; 294 295 296 /* data associated with BTA_JV_RFCOMM_CLOSE_EVT */ 297 typedef struct 298 { 299 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 300 UINT32 port_status; /* PORT status */ 301 UINT32 handle; /* The connection handle */ 302 BOOLEAN async; /* FALSE, if local initiates disconnect */ 303 } tBTA_JV_RFCOMM_CLOSE; 304 305 /* data associated with BTA_JV_RFCOMM_START_EVT */ 306 typedef struct 307 { 308 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 309 UINT32 handle; /* The connection handle */ 310 UINT8 sec_id; /* security ID used by this server */ 311 BOOLEAN use_co; /* TRUE to use co_rfc_data */ 312 } tBTA_JV_RFCOMM_START; 313 314 /* data associated with BTA_JV_RFCOMM_CL_INIT_EVT */ 315 typedef struct 316 { 317 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 318 UINT32 handle; /* The connection handle */ 319 UINT8 sec_id; /* security ID used by this client */ 320 BOOLEAN use_co; /* TRUE to use co_rfc_data */ 321 } tBTA_JV_RFCOMM_CL_INIT; 322 /*data associated with BTA_JV_L2CAP_DATA_IND_EVT & BTA_JV_RFCOMM_DATA_IND_EVT */ 323 typedef struct 324 { 325 UINT32 handle; /* The connection handle */ 326 } tBTA_JV_DATA_IND; 327 328 /*data associated with BTA_JV_L2CAP_DATA_IND_EVT if used for LE */ 329 typedef struct 330 { 331 UINT32 handle; /* The connection handle */ 332 BT_HDR *p_buf; /* The incoming data */ 333 } tBTA_JV_LE_DATA_IND; 334 335 336 /* data associated with BTA_JV_RFCOMM_CONG_EVT */ 337 typedef struct 338 { 339 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 340 UINT32 handle; /* The connection handle */ 341 BOOLEAN cong; /* TRUE, congested. FALSE, uncongested */ 342 } tBTA_JV_RFCOMM_CONG; 343 344 /* data associated with BTA_JV_RFCOMM_READ_EVT */ 345 typedef struct 346 { 347 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 348 UINT32 handle; /* The connection handle */ 349 UINT32 req_id; /* The req_id in the associated BTA_JvRfcommRead() */ 350 UINT8 *p_data; /* This points the same location as the p_data 351 * parameter in BTA_JvRfcommRead () */ 352 UINT16 len; /* The length of the data read. */ 353 } tBTA_JV_RFCOMM_READ; 354 355 /* data associated with BTA_JV_RFCOMM_WRITE_EVT */ 356 typedef struct 357 { 358 tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */ 359 UINT32 handle; /* The connection handle */ 360 UINT32 req_id; /* The req_id in the associated BTA_JvRfcommWrite() */ 361 int len; /* The length of the data written. */ 362 BOOLEAN cong; /* congestion status */ 363 } tBTA_JV_RFCOMM_WRITE; 364 365 /* data associated with BTA_JV_API_SET_PM_PROFILE_EVT */ 366 typedef struct 367 { 368 tBTA_JV_STATUS status; /* Status of the operation */ 369 UINT32 handle; /* Connection handle */ 370 tBTA_JV_PM_ID app_id; /* JV app ID */ 371 } tBTA_JV_SET_PM_PROFILE; 372 373 /* data associated with BTA_JV_API_NOTIFY_PM_STATE_CHANGE_EVT */ 374 typedef struct 375 { 376 UINT32 handle; /* Connection handle */ 377 tBTA_JV_CONN_STATE state; /* JV connection stata */ 378 } tBTA_JV_NOTIFY_PM_STATE_CHANGE; 379 380 381 /* union of data associated with JV callback */ 382 typedef union 383 { 384 tBTA_JV_STATUS status; /* BTA_JV_ENABLE_EVT */ 385 tBTA_JV_DISCOVERY_COMP disc_comp; /* BTA_JV_DISCOVERY_COMP_EVT */ 386 tBTA_JV_SET_DISCOVER set_discover; /* BTA_JV_SET_DISCOVER_EVT */ 387 UINT8 scn; /* BTA_JV_GET_SCN_EVT */ 388 UINT16 psm; /* BTA_JV_GET_PSM_EVT */ 389 tBTA_JV_CREATE_RECORD create_rec; /* BTA_JV_CREATE_RECORD_EVT */ 390 tBTA_JV_L2CAP_OPEN l2c_open; /* BTA_JV_L2CAP_OPEN_EVT */ 391 tBTA_JV_L2CAP_CLOSE l2c_close; /* BTA_JV_L2CAP_CLOSE_EVT */ 392 tBTA_JV_L2CAP_START l2c_start; /* BTA_JV_L2CAP_START_EVT */ 393 tBTA_JV_L2CAP_CL_INIT l2c_cl_init; /* BTA_JV_L2CAP_CL_INIT_EVT */ 394 tBTA_JV_L2CAP_CONG l2c_cong; /* BTA_JV_L2CAP_CONG_EVT */ 395 tBTA_JV_L2CAP_READ l2c_read; /* BTA_JV_L2CAP_READ_EVT */ 396 tBTA_JV_L2CAP_WRITE l2c_write; /* BTA_JV_L2CAP_WRITE_EVT */ 397 tBTA_JV_RFCOMM_OPEN rfc_open; /* BTA_JV_RFCOMM_OPEN_EVT */ 398 tBTA_JV_RFCOMM_SRV_OPEN rfc_srv_open; /* BTA_JV_RFCOMM_SRV_OPEN_EVT */ 399 tBTA_JV_RFCOMM_CLOSE rfc_close; /* BTA_JV_RFCOMM_CLOSE_EVT */ 400 tBTA_JV_RFCOMM_START rfc_start; /* BTA_JV_RFCOMM_START_EVT */ 401 tBTA_JV_RFCOMM_CL_INIT rfc_cl_init; /* BTA_JV_RFCOMM_CL_INIT_EVT */ 402 tBTA_JV_RFCOMM_CONG rfc_cong; /* BTA_JV_RFCOMM_CONG_EVT */ 403 tBTA_JV_RFCOMM_READ rfc_read; /* BTA_JV_RFCOMM_READ_EVT */ 404 tBTA_JV_RFCOMM_WRITE rfc_write; /* BTA_JV_RFCOMM_WRITE_EVT */ 405 tBTA_JV_DATA_IND data_ind; /* BTA_JV_L2CAP_DATA_IND_EVT 406 BTA_JV_RFCOMM_DATA_IND_EVT */ 407 tBTA_JV_LE_DATA_IND le_data_ind; /* BTA_JV_L2CAP_LE_DATA_IND_EVT */ 408 tBTA_JV_L2CAP_LE_OPEN l2c_le_open; /* BTA_JV_L2CAP_OPEN_EVT */ 409 tBTA_JV_L2CAP_WRITE_FIXED l2c_write_fixed; /* BTA_JV_L2CAP_WRITE_FIXED_EVT */ 410 } tBTA_JV; 411 412 /* JAVA DM Interface callback */ 413 typedef void (tBTA_JV_DM_CBACK)(tBTA_JV_EVT event, tBTA_JV *p_data, void * user_data); 414 415 /* JAVA RFCOMM interface callback */ 416 typedef void* (tBTA_JV_RFCOMM_CBACK)(tBTA_JV_EVT event, tBTA_JV *p_data, void *user_data); 417 418 /* JAVA L2CAP interface callback */ 419 typedef void (tBTA_JV_L2CAP_CBACK)(tBTA_JV_EVT event, tBTA_JV *p_data, void *user_Data); 420 421 /* JV configuration structure */ 422 typedef struct 423 { 424 UINT16 sdp_raw_size; /* The size of p_sdp_raw_data */ 425 UINT16 sdp_db_size; /* The size of p_sdp_db */ 426 UINT8 *p_sdp_raw_data; /* The data buffer to keep raw data */ 427 tSDP_DISCOVERY_DB *p_sdp_db; /* The data buffer to keep SDP database */ 428 } tBTA_JV_CFG; 429 430 /******************************************************************************* 431 ** 432 ** Function BTA_JvEnable 433 ** 434 ** Description Enable the Java I/F service. When the enable 435 ** operation is complete the callback function will be 436 ** called with a BTA_JV_ENABLE_EVT. This function must 437 ** be called before other functions in the JV API are 438 ** called. 439 ** 440 ** Returns BTA_JV_SUCCESS if successful. 441 ** BTA_JV_FAIL if internal failure. 442 ** 443 *******************************************************************************/ 444 extern tBTA_JV_STATUS BTA_JvEnable(tBTA_JV_DM_CBACK *p_cback); 445 446 /******************************************************************************* 447 ** 448 ** Function BTA_JvDisable 449 ** 450 ** Description Disable the Java I/F 451 ** 452 ** Returns void 453 ** 454 *******************************************************************************/ 455 extern void BTA_JvDisable(void); 456 457 /******************************************************************************* 458 ** 459 ** Function BTA_JvIsEnable 460 ** 461 ** Description Get the JV registration status. 462 ** 463 ** Returns TRUE, if registered 464 ** 465 *******************************************************************************/ 466 extern BOOLEAN BTA_JvIsEnable(void); 467 468 /******************************************************************************* 469 ** 470 ** Function BTA_JvIsEncrypted 471 ** 472 ** Description This function checks if the link to peer device is encrypted 473 ** 474 ** Returns TRUE if encrypted. 475 ** FALSE if not. 476 ** 477 *******************************************************************************/ 478 extern BOOLEAN BTA_JvIsEncrypted(BD_ADDR bd_addr); 479 480 /******************************************************************************* 481 ** 482 ** Function BTA_JvGetChannelId 483 ** 484 ** Description This function reserves a SCN/PSM for applications running 485 ** over RFCOMM or L2CAP. It is primarily called by 486 ** server profiles/applications to register their SCN/PSM into the 487 ** SDP database. The SCN is reported by the tBTA_JV_DM_CBACK 488 ** callback with a BTA_JV_GET_SCN_EVT. 489 ** If the SCN/PSM reported is 0, that means all SCN resources are 490 ** exhausted. 491 ** The channel parameter can be used to request a specific 492 ** channel. If the request on the specific channel fails, the 493 ** SCN/PSM returned in the EVT will be 0 - no attempt to request 494 ** a new channel will be made. set channel to <= 0 to automatically 495 ** assign an channel ID. 496 ** 497 ** Returns BTA_JV_SUCCESS, if the request is being processed. 498 ** BTA_JV_FAILURE, otherwise. 499 ** 500 *******************************************************************************/ 501 extern tBTA_JV_STATUS BTA_JvGetChannelId(int conn_type, void* user_data, 502 INT32 channel); 503 504 /******************************************************************************* 505 ** 506 ** Function BTA_JvFreeChannel 507 ** 508 ** Description This function frees a SCN/PSM that was used 509 ** by an application running over RFCOMM or L2CAP. 510 ** 511 ** Returns BTA_JV_SUCCESS, if the request is being processed. 512 ** BTA_JV_FAILURE, otherwise. 513 ** 514 *******************************************************************************/ 515 extern tBTA_JV_STATUS BTA_JvFreeChannel(UINT16 channel, int conn_type); 516 517 /******************************************************************************* 518 ** 519 ** Function BTA_JvStartDiscovery 520 ** 521 ** Description This function performs service discovery for the services 522 ** provided by the given peer device. When the operation is 523 ** complete the tBTA_JV_DM_CBACK callback function will be 524 ** called with a BTA_JV_DISCOVERY_COMP_EVT. 525 ** 526 ** Returns BTA_JV_SUCCESS, if the request is being processed. 527 ** BTA_JV_FAILURE, otherwise. 528 ** 529 *******************************************************************************/ 530 extern tBTA_JV_STATUS BTA_JvStartDiscovery(BD_ADDR bd_addr, UINT16 num_uuid, 531 tSDP_UUID *p_uuid_list, void* user_data); 532 533 /******************************************************************************* 534 ** 535 ** Function BTA_JvCreateRecord 536 ** 537 ** Description Create a service record in the local SDP database by user in 538 ** tBTA_JV_DM_CBACK callback with a BTA_JV_CREATE_RECORD_EVT. 539 ** 540 ** Returns BTA_JV_SUCCESS, if the request is being processed. 541 ** BTA_JV_FAILURE, otherwise. 542 ** 543 *******************************************************************************/ 544 extern tBTA_JV_STATUS BTA_JvCreateRecordByUser(void* user_data); 545 546 /******************************************************************************* 547 ** 548 ** Function BTA_JvDeleteRecord 549 ** 550 ** Description Delete a service record in the local SDP database. 551 ** 552 ** Returns BTA_JV_SUCCESS, if the request is being processed. 553 ** BTA_JV_FAILURE, otherwise. 554 ** 555 *******************************************************************************/ 556 extern tBTA_JV_STATUS BTA_JvDeleteRecord(UINT32 handle); 557 558 /******************************************************************************* 559 ** 560 ** Function BTA_JvL2capConnectLE 561 ** 562 ** Description Initiate a connection as an LE L2CAP client to the given BD 563 ** Address. 564 ** When the connection is initiated or failed to initiate, 565 ** tBTA_JV_L2CAP_CBACK is called with BTA_JV_L2CAP_CL_INIT_EVT 566 ** When the connection is established or failed, 567 ** tBTA_JV_L2CAP_CBACK is called with BTA_JV_L2CAP_OPEN_EVT 568 ** 569 ** Returns BTA_JV_SUCCESS, if the request is being processed. 570 ** BTA_JV_FAILURE, otherwise. 571 ** 572 *******************************************************************************/ 573 extern tBTA_JV_STATUS BTA_JvL2capConnectLE(tBTA_SEC sec_mask, tBTA_JV_ROLE role, 574 const tL2CAP_ERTM_INFO *ertm_info, UINT16 remote_chan, 575 UINT16 rx_mtu, tL2CAP_CFG_INFO *cfg, 576 BD_ADDR peer_bd_addr, tBTA_JV_L2CAP_CBACK *p_cback, void *user_data); 577 578 /******************************************************************************* 579 ** 580 ** Function BTA_JvL2capConnect 581 ** 582 ** Description Initiate a connection as a L2CAP client to the given BD 583 ** Address. 584 ** When the connection is initiated or failed to initiate, 585 ** tBTA_JV_L2CAP_CBACK is called with BTA_JV_L2CAP_CL_INIT_EVT 586 ** When the connection is established or failed, 587 ** tBTA_JV_L2CAP_CBACK is called with BTA_JV_L2CAP_OPEN_EVT 588 ** 589 ** Returns BTA_JV_SUCCESS, if the request is being processed. 590 ** BTA_JV_FAILURE, otherwise. 591 ** 592 *******************************************************************************/ 593 extern tBTA_JV_STATUS BTA_JvL2capConnect(tBTA_SEC sec_mask, tBTA_JV_ROLE role, 594 const tL2CAP_ERTM_INFO *ertm_info, UINT16 remote_psm, 595 UINT16 rx_mtu, tL2CAP_CFG_INFO *cfg, 596 BD_ADDR peer_bd_addr, tBTA_JV_L2CAP_CBACK *p_cback, void *user_data); 597 598 /******************************************************************************* 599 ** 600 ** Function BTA_JvL2capClose 601 ** 602 ** Description This function closes an L2CAP client connection 603 ** 604 ** Returns BTA_JV_SUCCESS, if the request is being processed. 605 ** BTA_JV_FAILURE, otherwise. 606 ** 607 *******************************************************************************/ 608 extern tBTA_JV_STATUS BTA_JvL2capClose(UINT32 handle); 609 610 /******************************************************************************* 611 ** 612 ** Function BTA_JvL2capCloseLE 613 ** 614 ** Description This function closes an L2CAP client connection for Fixed Channels 615 ** Function is idempotent and no callbacks are called! 616 ** 617 ** Returns BTA_JV_SUCCESS, if the request is being processed. 618 ** BTA_JV_FAILURE, otherwise. 619 ** 620 *******************************************************************************/ 621 extern tBTA_JV_STATUS BTA_JvL2capCloseLE(UINT32 handle); 622 623 /******************************************************************************* 624 ** 625 ** Function BTA_JvL2capStartServer 626 ** 627 ** Description This function starts an L2CAP server and listens for an L2CAP 628 ** connection from a remote Bluetooth device. When the server 629 ** is started successfully, tBTA_JV_L2CAP_CBACK is called with 630 ** BTA_JV_L2CAP_START_EVT. When the connection is established, 631 ** tBTA_JV_L2CAP_CBACK is called with BTA_JV_L2CAP_OPEN_EVT. 632 ** 633 ** Returns BTA_JV_SUCCESS, if the request is being processed. 634 ** BTA_JV_FAILURE, otherwise. 635 ** 636 *******************************************************************************/ 637 extern tBTA_JV_STATUS BTA_JvL2capStartServer(tBTA_SEC sec_mask, tBTA_JV_ROLE role, 638 const tL2CAP_ERTM_INFO *ertm_info, 639 UINT16 local_psm, UINT16 rx_mtu, tL2CAP_CFG_INFO *cfg, 640 tBTA_JV_L2CAP_CBACK *p_cback, void *user_data); 641 642 /******************************************************************************* 643 ** 644 ** Function BTA_JvL2capStartServerLE 645 ** 646 ** Description This function starts an LE L2CAP server and listens for an L2CAP 647 ** connection from a remote Bluetooth device on a fixed channel 648 ** over an LE link. When the server 649 ** is started successfully, tBTA_JV_L2CAP_CBACK is called with 650 ** BTA_JV_L2CAP_START_EVT. When the connection is established, 651 ** tBTA_JV_L2CAP_CBACK is called with BTA_JV_L2CAP_OPEN_EVT. 652 ** 653 ** Returns BTA_JV_SUCCESS, if the request is being processed. 654 ** BTA_JV_FAILURE, otherwise. 655 ** 656 *******************************************************************************/ 657 extern tBTA_JV_STATUS BTA_JvL2capStartServerLE(tBTA_SEC sec_mask, tBTA_JV_ROLE role, 658 const tL2CAP_ERTM_INFO *ertm_info, 659 UINT16 local_chan, UINT16 rx_mtu, tL2CAP_CFG_INFO *cfg, 660 tBTA_JV_L2CAP_CBACK *p_cback, void *user_data); 661 662 /******************************************************************************* 663 ** 664 ** Function BTA_JvL2capStopServerLE 665 ** 666 ** Description This function stops the LE L2CAP server. If the server has an 667 ** active connection, it would be closed. 668 ** 669 ** Returns BTA_JV_SUCCESS, if the request is being processed. 670 ** BTA_JV_FAILURE, otherwise. 671 ** 672 *******************************************************************************/ 673 extern tBTA_JV_STATUS BTA_JvL2capStopServerLE(UINT16 local_chan, void *user_data); 674 675 /******************************************************************************* 676 ** 677 ** Function BTA_JvL2capStopServerLE 678 ** 679 ** Description This function stops the LE L2CAP server. If the server has an 680 ** active connection, it would be closed. 681 ** 682 ** Returns BTA_JV_SUCCESS, if the request is being processed. 683 ** BTA_JV_FAILURE, otherwise. 684 ** 685 *******************************************************************************/ 686 extern tBTA_JV_STATUS BTA_JvL2capStopServer(UINT16 local_psm, void *user_data); 687 688 /******************************************************************************* 689 ** 690 ** Function BTA_JvL2capRead 691 ** 692 ** Description This function reads data from an L2CAP connection 693 ** When the operation is complete, tBTA_JV_L2CAP_CBACK is 694 ** called with BTA_JV_L2CAP_READ_EVT. 695 ** 696 ** Returns BTA_JV_SUCCESS, if the request is being processed. 697 ** BTA_JV_FAILURE, otherwise. 698 ** 699 *******************************************************************************/ 700 extern tBTA_JV_STATUS BTA_JvL2capRead(UINT32 handle, UINT32 req_id, 701 UINT8 *p_data, UINT16 len); 702 703 /******************************************************************************* 704 ** 705 ** Function BTA_JvL2capReceive 706 ** 707 ** Description This function reads data from an L2CAP connection 708 ** When the operation is complete, tBTA_JV_L2CAP_CBACK is 709 ** called with BTA_JV_L2CAP_RECEIVE_EVT. 710 ** If there are more data queued in L2CAP than len, the extra data will be discarded. 711 ** 712 ** Returns BTA_JV_SUCCESS, if the request is being processed. 713 ** BTA_JV_FAILURE, otherwise. 714 ** 715 *******************************************************************************/ 716 extern tBTA_JV_STATUS BTA_JvL2capReceive(UINT32 handle, UINT32 req_id, 717 UINT8 *p_data, UINT16 len); 718 719 /******************************************************************************* 720 ** 721 ** Function BTA_JvL2capReady 722 ** 723 ** Description This function determined if there is data to read from 724 ** an L2CAP connection 725 ** 726 ** Returns BTA_JV_SUCCESS, if data queue size is in *p_data_size. 727 ** BTA_JV_FAILURE, if error. 728 ** 729 *******************************************************************************/ 730 extern tBTA_JV_STATUS BTA_JvL2capReady(UINT32 handle, UINT32 *p_data_size); 731 732 /******************************************************************************* 733 ** 734 ** Function BTA_JvL2capWrite 735 ** 736 ** Description This function writes data to an L2CAP connection 737 ** When the operation is complete, tBTA_JV_L2CAP_CBACK is 738 ** called with BTA_JV_L2CAP_WRITE_EVT. Works for 739 ** PSM-based connections 740 ** 741 ** Returns BTA_JV_SUCCESS, if the request is being processed. 742 ** BTA_JV_FAILURE, otherwise. 743 ** 744 *******************************************************************************/ 745 extern tBTA_JV_STATUS BTA_JvL2capWrite(UINT32 handle, UINT32 req_id, 746 UINT8 *p_data, UINT16 len, void *user_data); 747 748 749 /******************************************************************************* 750 ** 751 ** Function BTA_JvL2capWriteFixed 752 ** 753 ** Description This function writes data to an L2CAP connection 754 ** When the operation is complete, tBTA_JV_L2CAP_CBACK is 755 ** called with BTA_JV_L2CAP_WRITE_FIXED_EVT. Works for 756 ** fixed-channel connections 757 ** 758 ** Returns BTA_JV_SUCCESS, if the request is being processed. 759 ** BTA_JV_FAILURE, otherwise. 760 ** 761 *******************************************************************************/ 762 extern tBTA_JV_STATUS BTA_JvL2capWriteFixed(UINT16 channel, BD_ADDR *addr, UINT32 req_id, 763 tBTA_JV_L2CAP_CBACK *p_cback, 764 UINT8 *p_data, UINT16 len, void *user_data); 765 766 /******************************************************************************* 767 ** 768 ** Function BTA_JvRfcommConnect 769 ** 770 ** Description This function makes an RFCOMM conection to a remote BD 771 ** Address. 772 ** When the connection is initiated or failed to initiate, 773 ** tBTA_JV_RFCOMM_CBACK is called with BTA_JV_RFCOMM_CL_INIT_EVT 774 ** When the connection is established or failed, 775 ** tBTA_JV_RFCOMM_CBACK is called with BTA_JV_RFCOMM_OPEN_EVT 776 ** 777 ** Returns BTA_JV_SUCCESS, if the request is being processed. 778 ** BTA_JV_FAILURE, otherwise. 779 ** 780 *******************************************************************************/ 781 extern tBTA_JV_STATUS BTA_JvRfcommConnect(tBTA_SEC sec_mask, 782 tBTA_JV_ROLE role, UINT8 remote_scn, BD_ADDR peer_bd_addr, 783 tBTA_JV_RFCOMM_CBACK *p_cback, void *user_data); 784 785 /******************************************************************************* 786 ** 787 ** Function BTA_JvRfcommClose 788 ** 789 ** Description This function closes an RFCOMM connection 790 ** 791 ** Returns BTA_JV_SUCCESS, if the request is being processed. 792 ** BTA_JV_FAILURE, otherwise. 793 ** 794 *******************************************************************************/ 795 extern tBTA_JV_STATUS BTA_JvRfcommClose(UINT32 handle, void* user_data); 796 797 /******************************************************************************* 798 ** 799 ** Function BTA_JvRfcommStartServer 800 ** 801 ** Description This function starts listening for an RFCOMM connection 802 ** request from a remote Bluetooth device. When the server is 803 ** started successfully, tBTA_JV_RFCOMM_CBACK is called 804 ** with BTA_JV_RFCOMM_START_EVT. 805 ** When the connection is established, tBTA_JV_RFCOMM_CBACK 806 ** is called with BTA_JV_RFCOMM_OPEN_EVT. 807 ** 808 ** Returns BTA_JV_SUCCESS, if the request is being processed. 809 ** BTA_JV_FAILURE, otherwise. 810 ** 811 *******************************************************************************/ 812 extern tBTA_JV_STATUS BTA_JvRfcommStartServer(tBTA_SEC sec_mask, 813 tBTA_JV_ROLE role, UINT8 local_scn, UINT8 max_session, 814 tBTA_JV_RFCOMM_CBACK *p_cback, void *user_data); 815 816 /******************************************************************************* 817 ** 818 ** Function BTA_JvRfcommStopServer 819 ** 820 ** Description This function stops the RFCOMM server. If the server has an 821 ** active connection, it would be closed. 822 ** 823 ** Returns BTA_JV_SUCCESS, if the request is being processed. 824 ** BTA_JV_FAILURE, otherwise. 825 ** 826 *******************************************************************************/ 827 extern tBTA_JV_STATUS BTA_JvRfcommStopServer(UINT32 handle, void* user_data); 828 829 /******************************************************************************* 830 ** 831 ** Function BTA_JvRfcommRead 832 ** 833 ** Description This function reads data from an RFCOMM connection 834 ** When the operation is complete, tBTA_JV_RFCOMM_CBACK is 835 ** called with BTA_JV_RFCOMM_READ_EVT. 836 ** 837 ** Returns BTA_JV_SUCCESS, if the request is being processed. 838 ** BTA_JV_FAILURE, otherwise. 839 ** 840 *******************************************************************************/ 841 extern tBTA_JV_STATUS BTA_JvRfcommRead(UINT32 handle, UINT32 req_id, 842 UINT8 *p_data, UINT16 len); 843 844 /******************************************************************************* 845 ** 846 ** Function BTA_JvRfcommReady 847 ** 848 ** Description This function determined if there is data to read from 849 ** an RFCOMM connection 850 ** 851 ** Returns BTA_JV_SUCCESS, if data queue size is in *p_data_size. 852 ** BTA_JV_FAILURE, if error. 853 ** 854 *******************************************************************************/ 855 extern tBTA_JV_STATUS BTA_JvRfcommReady(UINT32 handle, UINT32 *p_data_size); 856 857 /******************************************************************************* 858 ** 859 ** Function BTA_JvRfcommWrite 860 ** 861 ** Description This function writes data to an RFCOMM connection 862 ** When the operation is complete, tBTA_JV_RFCOMM_CBACK is 863 ** called with BTA_JV_RFCOMM_WRITE_EVT. 864 ** 865 ** Returns BTA_JV_SUCCESS, if the request is being processed. 866 ** BTA_JV_FAILURE, otherwise. 867 ** 868 *******************************************************************************/ 869 extern tBTA_JV_STATUS BTA_JvRfcommWrite(UINT32 handle, UINT32 req_id); 870 871 /******************************************************************************* 872 ** 873 ** Function BTA_JVSetPmProfile 874 ** 875 ** Description This function set or free power mode profile for different JV application 876 ** 877 ** Parameters: handle, JV handle from RFCOMM or L2CAP 878 ** app_id: app specific pm ID, can be BTA_JV_PM_ALL, see bta_dm_cfg.c for details 879 ** BTA_JV_PM_ID_CLEAR: removes pm management on the handle. init_st is ignored and 880 ** BTA_JV_CONN_CLOSE is called implicitely 881 ** init_st: state after calling this API. typically it should be BTA_JV_CONN_OPEN 882 ** 883 ** Returns BTA_JV_SUCCESS, if the request is being processed. 884 ** BTA_JV_FAILURE, otherwise. 885 ** 886 ** NOTE: BTA_JV_PM_ID_CLEAR: In general no need to be called as jv pm calls automatically 887 ** BTA_JV_CONN_CLOSE to remove in case of connection close! 888 ** 889 *******************************************************************************/ 890 extern tBTA_JV_STATUS BTA_JvSetPmProfile(UINT32 handle, tBTA_JV_PM_ID app_id, 891 tBTA_JV_CONN_STATE init_st); 892 893 /******************************************************************************* 894 ** 895 ** Function BTA_JvRfcommGetPortHdl 896 ** 897 ** Description This function fetches the rfcomm port handle 898 ** 899 ** Returns BTA_JV_SUCCESS, if the request is being processed. 900 ** BTA_JV_FAILURE, otherwise. 901 ** 902 *******************************************************************************/ 903 UINT16 BTA_JvRfcommGetPortHdl(UINT32 handle); 904 905 #endif /* BTA_JV_API_H */ 906