1 /****************************************************************************** 2 * 3 * Copyright (C) 2009-2012 Broadcom Corporation 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ******************************************************************************/ 18 19 /****************************************************************************** 20 * 21 * This is the public interface file for the HeaLth device profile (HL) 22 * subsystem of BTA, Broadcom's Bluetooth application layer for mobile 23 * phones. 24 * 25 ******************************************************************************/ 26 #ifndef BTA_HL_API_H 27 #define BTA_HL_API_H 28 29 #include "bta_api.h" 30 #include "btm_api.h" 31 #include "mca_api.h" 32 33 /***************************************************************************** 34 ** Constants and data types 35 *****************************************************************************/ 36 /* Extra Debug Code */ 37 #ifndef BTA_HL_DEBUG 38 #define BTA_HL_DEBUG TRUE 39 #endif 40 41 #ifndef BTA_HL_NUM_APPS 42 #define BTA_HL_NUM_APPS 3 43 #endif 44 45 #ifndef BTA_HL_NUM_MDEPS 46 #define BTA_HL_NUM_MDEPS 5 47 #endif 48 49 #ifndef BTA_HL_NUM_MCLS 50 #define BTA_HL_NUM_MCLS 7 51 #endif 52 53 #ifndef BTA_HL_NUM_MDLS_PER_MDEP 54 #define BTA_HL_NUM_MDLS_PER_MDEP 4 55 #endif 56 57 #ifndef BTA_HL_NUM_MDLS_PER_MCL 58 #define BTA_HL_NUM_MDLS_PER_MCL 10 59 #endif 60 61 #ifndef BTA_HL_NUM_DATA_TYPES 62 #define BTA_HL_NUM_DATA_TYPES 5 /* maximum number of data types can be supported 63 per MDEP ID */ 64 #endif 65 66 #define BTA_HL_MCAP_RSP_TOUT 2 /* 2 seconds */ 67 68 #ifndef BTA_HL_CCH_NUM_FILTER_ELEMS 69 #define BTA_HL_CCH_NUM_FILTER_ELEMS 3 70 #endif 71 72 #ifndef BTA_HL_NUM_SDP_CBACKS 73 #define BTA_HL_NUM_SDP_CBACKS 7 74 #endif 75 76 #ifndef BTA_HL_NUM_SDP_RECS 77 #define BTA_HL_NUM_SDP_RECS 3 78 #endif 79 80 #ifndef BTA_HL_NUM_SDP_MDEPS 81 #define BTA_HL_NUM_SDP_MDEPS 10 82 #endif 83 84 #ifndef BTA_HL_NUM_SVC_ELEMS 85 #define BTA_HL_NUM_SVC_ELEMS 2 86 #endif 87 88 #ifndef BTA_HL_NUM_PROTO_ELEMS 89 #define BTA_HL_NUM_PROTO_ELEMS 2 90 #endif 91 92 #define BTA_HL_VERSION_01_00 0x0100 93 #define BTA_HL_NUM_ADD_PROTO_LISTS 1 94 #define BTA_HL_NUM_ADD_PROTO_ELEMS 2 95 #define BTA_HL_MDEP_SEQ_SIZE 20 96 #define BTA_HL_VAL_ARRY_SIZE 320 97 98 #ifndef BTA_HL_NUM_MDL_CFGS 99 #define BTA_HL_NUM_MDL_CFGS 16 /* numer of MDL cfg saved in the persistent memory*/ 100 #endif 101 102 #define BTA_HL_NUM_TIMERS 7 103 104 #define BTA_HL_CCH_RSP_TOUT 2000 105 #define BTA_HL_LRG_POOL_ID GKI_POOL_ID_7 106 #define BTA_HL_MAX_TIME 255 107 #define BTA_HL_MIN_TIME 1 108 #define BTA_HL_INVALID_APP_HANDLE 0xFF 109 #define BTA_HL_INVALID_MCL_HANDLE 0xFF 110 #define BTA_HL_INVALID_MDL_HANDLE 0xFFFF 111 112 #define BTA_HL_STATUS_OK 0 113 #define BTA_HL_STATUS_FAIL 1 /* Used to pass all other errors */ 114 #define BTA_HL_STATUS_ABORTED 2 115 #define BTA_HL_STATUS_NO_RESOURCE 3 116 #define BTA_HL_STATUS_LAST_ITEM 4 117 #define BTA_HL_STATUS_DUPLICATE_APP_ID 5 118 #define BTA_HL_STATUS_INVALID_APP_HANDLE 6 119 #define BTA_HL_STATUS_INVALID_MCL_HANDLE 7 120 #define BTA_HL_STATUS_MCAP_REG_FAIL 8 121 #define BTA_HL_STATUS_MDEP_CO_FAIL 9 122 #define BTA_HL_STATUS_ECHO_CO_FAIL 10 123 #define BTA_HL_STATUS_MDL_CFG_CO_FAIL 11 124 #define BTA_HL_STATUS_SDP_NO_RESOURCE 12 125 #define BTA_HL_STATUS_SDP_FAIL 13 126 #define BTA_HL_STATUS_NO_CCH 14 127 #define BTA_HL_STATUS_NO_MCL 15 128 129 #define BTA_HL_STATUS_NO_FIRST_RELIABLE 17 130 #define BTA_HL_STATUS_INVALID_DCH_CFG 18 131 #define BTA_HL_STATUS_INVALID_MDL_HANDLE 19 132 #define BTA_HL_STATUS_INVALID_BD_ADDR 20 133 #define BTA_HL_STATUS_INVALID_RECONNECT_CFG 21 134 #define BTA_HL_STATUS_ECHO_TEST_BUSY 22 135 #define BTA_HL_STATUS_INVALID_LOCAL_MDEP_ID 23 136 #define BTA_HL_STATUS_INVALID_MDL_ID 24 137 #define BTA_HL_STATUS_NO_MDL_ID_FOUND 25 138 #define BTA_HL_STATUS_DCH_BUSY 26 /* DCH is congested*/ 139 #define BTA_HL_STATUS_INVALID_CTRL_PSM 27 140 141 typedef UINT8 tBTA_HL_STATUS; 142 typedef tMCA_HANDLE tBTA_HL_APP_HANDLE; 143 typedef tMCA_CL tBTA_HL_MCL_HANDLE; 144 typedef tMCA_DL tBTA_HL_MDL_HANDLE; 145 enum 146 { 147 BTA_HL_DEVICE_TYPE_SINK, 148 BTA_HL_DEVICE_TYPE_SOURCE, 149 BTA_HL_DEVICE_TYPE_DUAL 150 }; 151 152 typedef UINT8 tBTA_HL_DEVICE_TYPE; 153 154 155 156 #define BTA_HL_SDP_IEEE_11073_20601 0x01 157 158 #define BTA_HL_MCAP_SUP_RECONNECT_MASK_INIT 2 /* 0x02 */ 159 #define BTA_HL_MCAP_SUP_RECONNECT_MASK_ACCEPT 4 /* 0x04 */ 160 #define BTA_HL_MCAP_SUP_CSP_MASK_SYNC_SLAVE 0 /* 0x08 */ 161 #define BTA_HL_MCAP_SUP_CSP_MASK_SYNC_MASTER 0 /* 0x10 */ 162 163 #define BTA_HL_MCAP_SUP_PROC_MASK (BTA_HL_MCAP_SUP_RECONNECT_MASK_INIT | \ 164 BTA_HL_MCAP_SUP_RECONNECT_MASK_ACCEPT | \ 165 BTA_HL_MCAP_SUP_CSP_MASK_SYNC_SLAVE | \ 166 BTA_HL_MCAP_SUP_CSP_MASK_SYNC_MASTER) 167 #define BTA_HL_MDEP_ROLE_SOURCE 0x00 168 #define BTA_HL_MDEP_ROLE_SINK 0x01 169 170 typedef UINT8 tBTA_HL_MDEP_ROLE; 171 172 #define BTA_HL_MDEP_ROLE_MASK_SOURCE 0x01 /* bit mask */ 173 #define BTA_HL_MDEP_ROLE_MASK_SINK 0x02 174 typedef UINT8 tBTA_HL_MDEP_ROLE_MASK; 175 176 177 #define BTA_HL_ECHO_TEST_MDEP_ID 0 178 #define BTA_HL_ECHO_TEST_MDEP_CFG_IDX 0 179 180 #define BTA_HL_INVALID_MDEP_ID 0xFF 181 typedef tMCA_DEP tBTA_HL_MDEP_ID; /* 0 is for echo test, 182 0x01-0x7F availave for use, 183 0x80-0xFF reserved*/ 184 185 186 #define BTA_HL_DELETE_ALL_MDL_IDS 0xFFFF 187 #define BTA_HL_MAX_MDL_VAL 0xFEFF 188 typedef UINT16 tBTA_HL_MDL_ID; /* 0x0000 reserved, 189 0x0001-0xFEFF dynamic range, 190 0xFF00-0xFFFE reserved, 191 0xFFFF indicates all MDLs*/ 192 193 #define BTA_HL_MDEP_DESP_LEN 35 194 195 #define BTA_HL_DCH_MODE_RELIABLE 0 196 #define BTA_HL_DCH_MODE_STREAMING 1 197 198 typedef UINT8 tBTA_HL_DCH_MODE; 199 200 #define BTA_HL_DCH_CFG_NO_PREF 0 201 #define BTA_HL_DCH_CFG_RELIABLE 1 202 #define BTA_HL_DCH_CFG_STREAMING 2 203 #define BTA_HL_DCH_CFG_UNKNOWN 0xFF 204 205 typedef UINT8 tBTA_HL_DCH_CFG; 206 207 /* The Default DCH CFG for the echo test when the device is a Source */ 208 #define BTA_HL_DEFAULT_ECHO_TEST_SRC_DCH_CFG BTA_HL_DCH_CFG_RELIABLE 209 210 #define BTA_HL_DCH_CREATE_RSP_SUCCESS 0 211 #define BTA_HL_DCH_CREATE_RSP_CFG_REJ 1 212 213 typedef UINT8 tBTA_HL_DCH_CREATE_RSP; 214 215 #define BTA_HL_MCAP_SUP_PROC_RECONNECT_INIT 0x02 216 #define BTA_HL_MCAP_SUP_PROC_RECONNECT_APT 0x04 217 #define BTA_HL_MCAP_SUP_PROC_CSP_SLAVE 0x08 218 #define BTA_HL_MCAP_SUP_PROC_CSP_MASTER 0x10 219 220 typedef UINT8 tBTA_HL_SUP_PROC_MASK; 221 222 typedef struct 223 { 224 UINT16 max_rx_apdu_size; /* local rcv MTU */ 225 UINT16 max_tx_apdu_size; /* maximum TX APDU size*/ 226 } tBTA_HL_ECHO_CFG; 227 228 229 typedef struct 230 { 231 UINT16 data_type; 232 UINT16 max_rx_apdu_size; /* local rcv MTU */ 233 UINT16 max_tx_apdu_size; /* maximum TX APDU size*/ 234 char desp[BTA_HL_MDEP_DESP_LEN+1]; 235 } tBTA_HL_MDEP_DATA_TYPE_CFG; 236 237 238 typedef struct 239 { 240 tBTA_HL_MDEP_ROLE mdep_role; 241 UINT8 num_of_mdep_data_types; 242 tBTA_HL_MDEP_DATA_TYPE_CFG data_cfg[BTA_HL_NUM_DATA_TYPES]; 243 } tBTA_HL_MDEP_CFG; 244 245 typedef struct 246 { 247 tBTA_HL_MDEP_ID mdep_id; /* MDEP ID 0x01-0x7F */ 248 tBTA_HL_MDEP_CFG mdep_cfg; 249 } tBTA_HL_MDEP; 250 251 typedef struct 252 { 253 tBTA_HL_MDEP mdep[BTA_HL_NUM_MDEPS]; 254 tBTA_HL_ECHO_CFG echo_cfg; 255 tBTA_HL_MDEP_ROLE_MASK app_role_mask; 256 BOOLEAN advertize_source_sdp; 257 UINT8 num_of_mdeps; 258 } tBTA_HL_SUP_FEATURE; 259 260 typedef struct 261 { 262 BOOLEAN delete_req_pending; 263 tBTA_HL_MDL_ID mdl_id; 264 tBTA_HL_MCL_HANDLE mcl_handle; 265 } tBTA_HL_DELETE_MDL; 266 267 typedef struct 268 { 269 UINT8 time; 270 UINT16 mtu; 271 tBTA_HL_MDL_ID mdl_id; 272 tBTA_HL_MDEP_ID local_mdep_id; 273 tBTA_HL_MDEP_ROLE local_mdep_role; 274 BOOLEAN active; /* true if this item is in use */ 275 tBTA_HL_DCH_MODE dch_mode; 276 UINT8 fcs; 277 BD_ADDR peer_bd_addr; 278 } tBTA_HL_MDL_CFG; 279 280 281 /* Maximum number of supported feature list items (list_elem in tSDP_SUP_FEATURE_ELEM) */ 282 #define BTA_HL_NUM_SUP_FEATURE_ELEMS 10 283 #define BTA_HL_SUP_FEATURE_SDP_BUF_SIZE 512 284 /* This structure is used to add supported feature lists and find supported feature elements */ 285 typedef struct 286 { 287 UINT8 mdep_id; 288 UINT16 data_type; 289 tBTA_HL_MDEP_ROLE mdep_role; 290 char *p_mdep_desp; 291 } tBTA_HL_SUP_FEATURE_ELEM; 292 293 typedef struct 294 { 295 UINT16 num_elems; 296 tBTA_HL_SUP_FEATURE_ELEM list_elem[BTA_HL_NUM_SUP_FEATURE_ELEMS]; 297 } tBTA_HL_SUP_FEATURE_LIST_ELEM; 298 299 300 typedef struct 301 { 302 tBTA_HL_DEVICE_TYPE dev_type; /* sink, source or dual roles */ 303 tBTA_SEC sec_mask; /* security mask for accepting conenction*/ 304 const char *p_srv_name; /* service name to be used in the SDP; null terminated*/ 305 const char *p_srv_desp; /* service description to be used in the SDP; null terminated */ 306 const char *p_provider_name; /* provide name to be used in the SDP; null terminated */ 307 } tBTA_HL_REG_PARAM; 308 309 typedef struct 310 { 311 UINT16 ctrl_psm; 312 BD_ADDR bd_addr; /* Address of peer device */ 313 tBTA_SEC sec_mask; /* security mask for initiating connection*/ 314 } tBTA_HL_CCH_OPEN_PARAM; 315 316 317 typedef struct 318 { 319 UINT16 ctrl_psm; 320 tBTA_HL_MDEP_ID local_mdep_id; /* local MDEP ID */ 321 tBTA_HL_MDEP_ID peer_mdep_id; /* peer mdep id */ 322 tBTA_HL_DCH_CFG local_cfg; 323 tBTA_SEC sec_mask; /* security mask for initiating connection*/ 324 } tBTA_HL_DCH_OPEN_PARAM; 325 326 327 typedef struct 328 { 329 UINT16 ctrl_psm; 330 tBTA_HL_MDL_ID mdl_id; 331 } tBTA_HL_DCH_RECONNECT_PARAM; 332 333 334 typedef struct 335 { 336 UINT16 ctrl_psm; 337 UINT16 pkt_size; 338 tBTA_HL_DCH_CFG local_cfg; 339 } tBTA_HL_DCH_ECHO_TEST_PARAM; 340 341 typedef struct 342 { 343 UINT16 buf_size; 344 UINT8 p_buf; /* buffer pointer */ 345 } tBTA_HL_DCH_BUF_INFO; 346 347 typedef struct 348 { 349 tBTA_HL_MDEP_ID local_mdep_id; /* local MDEP ID */ 350 tBTA_HL_MDL_ID mdl_id; 351 tBTA_HL_DCH_CREATE_RSP rsp_code; 352 tBTA_HL_DCH_CFG cfg_rsp; 353 } tBTA_HL_DCH_CREATE_RSP_PARAM; 354 355 typedef struct 356 { 357 UINT16 data_type; 358 UINT8 mdep_id; 359 tBTA_HL_MDEP_ROLE mdep_role; 360 char mdep_desp[BTA_HL_MDEP_DESP_LEN+1]; 361 }tBTA_HL_SDP_MDEP_CFG; 362 363 typedef struct 364 { 365 UINT16 ctrl_psm; 366 UINT16 data_psm; 367 UINT8 mcap_sup_proc; 368 UINT8 num_mdeps; /* number of mdep elements from SDP*/ 369 char srv_name[BTA_SERVICE_NAME_LEN+1]; 370 char srv_desp[BTA_SERVICE_DESP_LEN+1]; 371 char provider_name[BTA_PROVIDER_NAME_LEN+1]; 372 tBTA_HL_SDP_MDEP_CFG mdep_cfg[BTA_HL_NUM_SDP_MDEPS]; 373 } tBTA_HL_SDP_REC; 374 375 typedef struct 376 { 377 UINT8 num_recs; 378 tBTA_HL_SDP_REC sdp_rec[BTA_HL_NUM_SDP_RECS]; 379 } tBTA_HL_SDP; 380 381 /* HL control callback function events */ 382 enum 383 { 384 BTA_HL_CTRL_ENABLE_CFM_EVT = 0, 385 BTA_HL_CTRL_DISABLE_CFM_EVT 386 }; 387 typedef UINT8 tBTA_HL_CTRL_EVT; 388 /* Structure associated with BTA_HL_ENABLE_EVT 389 BTA_HL_DISABLE_EVT */ 390 391 typedef struct 392 { 393 tBTA_HL_STATUS status; 394 } tBTA_HL_CTRL_ENABLE_DISABLE; 395 396 typedef union 397 { 398 tBTA_HL_CTRL_ENABLE_DISABLE enable_cfm; 399 tBTA_HL_CTRL_ENABLE_DISABLE disable_cfm; 400 } tBTA_HL_CTRL; 401 402 /* HL instance callback function events */ 403 enum 404 { 405 BTA_HL_REGISTER_CFM_EVT =0, 406 BTA_HL_DEREGISTER_CFM_EVT, 407 BTA_HL_CCH_OPEN_IND_EVT, 408 BTA_HL_CCH_OPEN_CFM_EVT, 409 BTA_HL_CCH_CLOSE_IND_EVT, 410 BTA_HL_CCH_CLOSE_CFM_EVT, 411 BTA_HL_DCH_CREATE_IND_EVT, 412 BTA_HL_DCH_OPEN_IND_EVT, 413 BTA_HL_DCH_OPEN_CFM_EVT, 414 BTA_HL_DCH_CLOSE_IND_EVT, 415 BTA_HL_DCH_CLOSE_CFM_EVT, 416 BTA_HL_DCH_RECONNECT_IND_EVT, 417 BTA_HL_DCH_RECONNECT_CFM_EVT, 418 419 BTA_HL_DCH_ABORT_IND_EVT, 420 BTA_HL_DCH_ABORT_CFM_EVT, 421 BTA_HL_DELETE_MDL_IND_EVT, 422 BTA_HL_DELETE_MDL_CFM_EVT, 423 BTA_HL_DCH_SEND_DATA_CFM_EVT, 424 BTA_HL_DCH_RCV_DATA_IND_EVT, 425 BTA_HL_CONG_CHG_IND_EVT, 426 BTA_HL_DCH_ECHO_TEST_CFM_EVT, 427 BTA_HL_SDP_QUERY_CFM_EVT, 428 BTA_HL_SDP_INFO_IND_EVT 429 }; 430 typedef UINT8 tBTA_HL_EVT; 431 432 433 typedef struct 434 { 435 tBTA_HL_STATUS status; /* start status */ 436 UINT8 app_id; 437 tBTA_HL_APP_HANDLE app_handle; 438 } tBTA_HL_REGISTER_CFM; 439 440 441 typedef struct 442 { 443 tBTA_HL_STATUS status; /* start status */ 444 tBTA_HL_APP_HANDLE app_handle; 445 } tBTA_HL_DEREGISTER_CFM; 446 447 448 typedef struct 449 { 450 BOOLEAN intentional; 451 tBTA_HL_MCL_HANDLE mcl_handle; 452 tBTA_HL_APP_HANDLE app_handle; 453 } tBTA_HL_CCH_CLOSE_IND; 454 455 456 typedef struct 457 { 458 tBTA_HL_MCL_HANDLE mcl_handle; 459 tBTA_HL_APP_HANDLE app_handle; 460 } tBTA_HL_MCL_IND; 461 462 typedef struct 463 { 464 tBTA_HL_STATUS status; /* connection status */ 465 tBTA_HL_MCL_HANDLE mcl_handle; 466 tBTA_HL_APP_HANDLE app_handle; 467 } tBTA_HL_MCL_CFM; 468 469 typedef struct 470 { 471 tBTA_HL_MCL_HANDLE mcl_handle; 472 tBTA_HL_APP_HANDLE app_handle; 473 BD_ADDR bd_addr; /* address of peer device */ 474 } tBTA_HL_CCH_OPEN_IND; 475 476 typedef struct 477 { 478 tBTA_HL_STATUS status; /* connection status */ 479 tBTA_HL_MCL_HANDLE mcl_handle; 480 tBTA_HL_APP_HANDLE app_handle; 481 BD_ADDR bd_addr; /* address of peer device */ 482 } tBTA_HL_CCH_OPEN_CFM; 483 484 typedef struct 485 { 486 tBTA_HL_MCL_HANDLE mcl_handle; 487 tBTA_HL_APP_HANDLE app_handle; 488 tBTA_HL_MDEP_ID local_mdep_id; 489 tBTA_HL_MDL_ID mdl_id; /* MCAP data link ID for this 490 data channel conenction */ 491 tBTA_HL_DCH_CFG cfg; /* dch cfg requested by the peer device */ 492 } tBTA_HL_DCH_CREATE_IND; 493 494 typedef struct 495 { 496 tBTA_HL_MDL_HANDLE mdl_handle; 497 tBTA_HL_MCL_HANDLE mcl_handle; 498 tBTA_HL_APP_HANDLE app_handle; 499 tBTA_HL_MDEP_ID local_mdep_id; 500 tBTA_HL_MDL_ID mdl_id; /* MCAP data link ID for this 501 data channel conenction */ 502 tBTA_HL_DCH_MODE dch_mode; /* data channel mode - reliable or streaming*/ 503 504 BOOLEAN first_reliable; /* whether this is the first reliable data channel */ 505 UINT16 mtu; 506 } tBTA_HL_DCH_OPEN_IND; 507 508 typedef struct 509 { 510 tBTA_HL_STATUS status; /* connection status */ 511 tBTA_HL_MDL_HANDLE mdl_handle; 512 tBTA_HL_MCL_HANDLE mcl_handle; 513 tBTA_HL_APP_HANDLE app_handle; 514 tBTA_HL_MDEP_ID local_mdep_id; 515 tBTA_HL_MDL_ID mdl_id; /* MCAP data link ID for this 516 data channel conenction */ 517 tBTA_HL_DCH_MODE dch_mode; /* data channel mode - reliable or streaming*/ 518 BOOLEAN first_reliable; /* whether this is the first reliable data channel */ 519 UINT16 mtu; 520 } tBTA_HL_DCH_OPEN_CFM; 521 522 523 typedef struct 524 { 525 BOOLEAN intentional; 526 tBTA_HL_MDL_HANDLE mdl_handle; 527 tBTA_HL_MCL_HANDLE mcl_handle; 528 tBTA_HL_APP_HANDLE app_handle; 529 } tBTA_HL_DCH_CLOSE_IND; 530 531 532 typedef struct 533 { 534 tBTA_HL_MDL_HANDLE mdl_handle; 535 tBTA_HL_MCL_HANDLE mcl_handle; 536 tBTA_HL_APP_HANDLE app_handle; 537 } tBTA_HL_MDL_IND; 538 539 typedef struct 540 { 541 tBTA_HL_STATUS status; 542 tBTA_HL_MDL_HANDLE mdl_handle; 543 tBTA_HL_MCL_HANDLE mcl_handle; 544 tBTA_HL_APP_HANDLE app_handle; 545 } tBTA_HL_MDL_CFM; 546 547 typedef struct 548 { 549 tBTA_HL_MCL_HANDLE mcl_handle; 550 tBTA_HL_APP_HANDLE app_handle; 551 tBTA_HL_MDL_ID mdl_id; 552 } tBTA_HL_DELETE_MDL_IND; 553 554 typedef struct 555 { 556 tBTA_HL_STATUS status; 557 tBTA_HL_MCL_HANDLE mcl_handle; 558 tBTA_HL_APP_HANDLE app_handle; 559 tBTA_HL_MDL_ID mdl_id; 560 } tBTA_HL_DELETE_MDL_CFM; 561 562 typedef struct 563 { 564 tBTA_HL_MDL_HANDLE mdl_handle; 565 tBTA_HL_MCL_HANDLE mcl_handle; 566 tBTA_HL_APP_HANDLE app_handle; 567 BOOLEAN cong; 568 } tBTA_HL_DCH_CONG_IND; 569 570 typedef struct 571 { 572 tBTA_HL_APP_HANDLE app_handle; 573 UINT16 ctrl_psm; 574 UINT16 data_psm; 575 UINT8 data_x_spec; 576 UINT8 mcap_sup_procs; 577 } tBTA_HL_SDP_INFO_IND; 578 579 typedef struct 580 { 581 tBTA_HL_STATUS status; 582 tBTA_HL_APP_HANDLE app_handle; 583 BD_ADDR bd_addr; 584 tBTA_HL_SDP *p_sdp; 585 } tBTA_HL_SDP_QUERY_CFM; 586 587 typedef union 588 { 589 tBTA_HL_REGISTER_CFM reg_cfm; 590 tBTA_HL_DEREGISTER_CFM dereg_cfm; 591 tBTA_HL_CCH_OPEN_IND cch_open_ind; 592 tBTA_HL_CCH_OPEN_CFM cch_open_cfm; 593 tBTA_HL_CCH_CLOSE_IND cch_close_ind; 594 tBTA_HL_MCL_CFM cch_close_cfm; 595 tBTA_HL_DCH_CREATE_IND dch_create_ind; 596 tBTA_HL_DCH_OPEN_IND dch_open_ind; 597 tBTA_HL_DCH_OPEN_CFM dch_open_cfm; 598 tBTA_HL_DCH_CLOSE_IND dch_close_ind; 599 tBTA_HL_MDL_CFM dch_close_cfm; 600 tBTA_HL_DCH_OPEN_IND dch_reconnect_ind; 601 tBTA_HL_DCH_OPEN_CFM dch_reconnect_cfm; 602 tBTA_HL_MCL_IND dch_abort_ind; 603 tBTA_HL_MCL_CFM dch_abort_cfm; 604 tBTA_HL_DELETE_MDL_IND delete_mdl_ind; 605 tBTA_HL_DELETE_MDL_CFM delete_mdl_cfm; 606 tBTA_HL_MDL_CFM dch_send_data_cfm; 607 tBTA_HL_MDL_IND dch_rcv_data_ind; 608 tBTA_HL_DCH_CONG_IND dch_cong_ind; 609 tBTA_HL_MCL_CFM echo_test_cfm; 610 tBTA_HL_SDP_QUERY_CFM sdp_query_cfm; 611 tBTA_HL_SDP_INFO_IND sdp_info_ind; 612 613 } tBTA_HL; 614 615 /* HL callback functions */ 616 typedef void tBTA_HL_CTRL_CBACK(tBTA_HL_CTRL_EVT event, tBTA_HL_CTRL *p_data); 617 typedef void tBTA_HL_CBACK(tBTA_HL_EVT event, tBTA_HL *p_data); 618 619 620 /***************************************************************************** 621 ** External Function Declarations 622 *****************************************************************************/ 623 #ifdef __cplusplus 624 extern "C" 625 { 626 #endif 627 628 /************************** 629 ** API Functions 630 ***************************/ 631 632 /******************************************************************************* 633 ** 634 ** Function BTA_HlEnable 635 ** 636 ** Description Enable the HL subsystems. This function must be 637 ** called before any other functions in the HL API are called. 638 ** When the enable operation is completed the callback function 639 ** will be called with an BTA_HL_CTRL_ENABLE_CFM_EVT event. 640 ** 641 ** Parameters p_cback - HL event call back function 642 ** 643 ** Returns void 644 ** 645 *******************************************************************************/ 646 BTA_API extern void BTA_HlEnable(tBTA_HL_CTRL_CBACK *p_ctrl_cback); 647 /******************************************************************************* 648 ** 649 ** Function BTA_HlDisable 650 ** 651 ** Description Disable the HL subsystem. 652 ** 653 ** Returns void 654 ** 655 *******************************************************************************/ 656 BTA_API extern void BTA_HlDisable(void); 657 /******************************************************************************* 658 ** 659 ** Function BTA_HlRegister 660 ** 661 ** Description Register a HDP application 662 ** 663 ** 664 ** Parameters app_id - hdp application ID 665 ** p_reg_param - non-platform related parameters for the 666 ** HDP application 667 ** p_cback - HL event callback fucntion 668 ** 669 ** Returns void 670 ** 671 *******************************************************************************/ 672 BTA_API extern void BTA_HlRegister(UINT8 app_id, 673 tBTA_HL_REG_PARAM *p_reg_param, 674 tBTA_HL_CBACK *p_cback); 675 676 /******************************************************************************* 677 ** 678 ** Function BTA_HlDeregister 679 ** 680 ** Description Deregister an HDP application 681 ** 682 ** Parameters app_handle - Application handle 683 ** 684 ** Returns void 685 ** 686 *******************************************************************************/ 687 BTA_API extern void BTA_HlDeregister(tBTA_HL_APP_HANDLE app_handle); 688 689 /******************************************************************************* 690 ** 691 ** Function BTA_HlCchOpen 692 ** 693 ** Description Open a Control channel connection with the specified BD address 694 ** and the control PSM value is used to select which 695 ** HDP insatnce should be used in case the peer device support 696 ** multiple HDP instances. 697 ** 698 ** 699 ** Parameters app_handle - Application Handle 700 ** p_open_param - parameters for opening a control channel 701 ** 702 ** Returns void 703 ** 704 ** Note: If the control PSM value is zero then the first HDP 705 ** instance is used for the control channel setup 706 *******************************************************************************/ 707 BTA_API extern void BTA_HlCchOpen(tBTA_HL_APP_HANDLE app_handle, 708 tBTA_HL_CCH_OPEN_PARAM *p_open_param); 709 710 /******************************************************************************* 711 ** 712 ** Function BTA_HlCchClose 713 ** 714 ** Description Close a Control channel connection with the specified MCL 715 ** handle 716 ** 717 ** Parameters mcl_handle - MCL handle 718 ** 719 ** Returns void 720 ** 721 *******************************************************************************/ 722 BTA_API extern void BTA_HlCchClose(tBTA_HL_MCL_HANDLE mcl_handle); 723 724 /******************************************************************************* 725 ** 726 ** Function BTA_HlDchOpen 727 ** 728 ** Description Open a data channel connection with the specified DCH parameters 729 ** 730 ** Parameters mcl_handle - MCL handle 731 ** p_open_param - parameters for opening a data channel 732 ** 733 ** Returns void 734 ** 735 *******************************************************************************/ 736 BTA_API extern void BTA_HlDchOpen(tBTA_HL_MCL_HANDLE mcl_handle, 737 tBTA_HL_DCH_OPEN_PARAM *p_open_param); 738 /******************************************************************************* 739 ** 740 ** Function BTA_HlDchReconnect 741 ** 742 ** Description Reconnect a data channel with the specified MDL_ID 743 ** 744 ** Parameters mcl_handle - MCL handle 745 *8 p_recon_param - parameters for reconnecting a data channel 746 ** 747 ** Returns void 748 ** 749 *******************************************************************************/ 750 BTA_API extern void BTA_HlDchReconnect(tBTA_HL_MCL_HANDLE mcl_handle, 751 tBTA_HL_DCH_RECONNECT_PARAM *p_recon_param); 752 /******************************************************************************* 753 ** 754 ** Function BTA_HlDchClose 755 ** 756 ** Description Close a data channel with the specified MDL handle 757 ** 758 ** Parameters mdl_handle - MDL handle 759 ** 760 ** Returns void 761 ** 762 *******************************************************************************/ 763 BTA_API extern void BTA_HlDchClose(tBTA_HL_MDL_HANDLE mdl_handle); 764 765 /******************************************************************************* 766 ** 767 ** Function BTA_HlDchAbort 768 ** 769 ** Description Abort the current data channel setup with the specified MCL 770 ** handle 771 ** 772 ** Parameters mcl_handle - MCL handle 773 ** 774 ** 775 ** Returns void 776 ** 777 *******************************************************************************/ 778 BTA_API extern void BTA_HlDchAbort(tBTA_HL_MCL_HANDLE mcl_handle); 779 780 /******************************************************************************* 781 ** 782 ** Function BTA_HlSendData 783 ** 784 ** Description Send an APDU to the peer device 785 ** 786 ** Parameters mdl_handle - MDL handle 787 ** pkt_size - size of the data packet to be sent 788 ** 789 ** Returns void 790 ** 791 *******************************************************************************/ 792 BTA_API extern void BTA_HlSendData(tBTA_HL_MDL_HANDLE mdl_handle, 793 UINT16 pkt_size); 794 795 /******************************************************************************* 796 ** 797 ** Function BTA_HlDeleteMdl 798 ** 799 ** Description Delete the specified MDL_ID within the specified MCL handle 800 ** 801 ** Parameters mcl_handle - MCL handle 802 ** mdl_id - MDL ID 803 ** 804 ** Returns void 805 ** 806 ** note: If mdl_id = 0xFFFF then this means to delete all MDLs 807 ** and this value can only be used with DeleteMdl request only 808 ** not other requests 809 ** 810 *******************************************************************************/ 811 BTA_API extern void BTA_HlDeleteMdl(tBTA_HL_MCL_HANDLE mcl_handle, 812 tBTA_HL_MDL_ID mdl_id ); 813 814 /******************************************************************************* 815 ** 816 ** Function BTA_HlDchEchoTest 817 ** 818 ** Description Initiate an echo test with the specified MCL handle 819 ** 820 ** Parameters mcl_handle - MCL handle 821 *8 p_echo_test_param - parameters for echo testing 822 ** 823 ** Returns void 824 ** 825 *******************************************************************************/ 826 BTA_API extern void BTA_HlDchEchoTest( tBTA_HL_MCL_HANDLE mcl_handle, 827 tBTA_HL_DCH_ECHO_TEST_PARAM *p_echo_test_param); 828 829 /******************************************************************************* 830 ** 831 ** Function BTA_HlSdpQuery 832 ** 833 ** Description SDP query request for the specified BD address 834 ** 835 ** Parameters app_handle - application handle 836 ** bd_addr - BD address 837 ** 838 ** Returns void 839 ** 840 *******************************************************************************/ 841 BTA_API extern void BTA_HlSdpQuery(tBTA_HL_APP_HANDLE app_handle, 842 BD_ADDR bd_addr); 843 844 /******************************************************************************* 845 ** 846 ** Function BTA_HlDchCreateMdlRsp 847 ** 848 ** Description Set the Response and configuration values for the Create MDL 849 ** request 850 ** 851 ** Parameters mcl_handle - MCL handle 852 ** p_rsp_param - parameters specified whether the request should 853 ** be accepted or not and if it should be accepted 854 ** then it also specified the configuration response 855 ** value 856 ** 857 ** Returns void 858 ** 859 *******************************************************************************/ 860 BTA_API extern void BTA_HlDchCreateRsp(tBTA_HL_MCL_HANDLE mcl_handle, 861 tBTA_HL_DCH_CREATE_RSP_PARAM *p_rsp_param); 862 863 864 865 #ifdef __cplusplus 866 867 } 868 #endif 869 870 #endif /* BTA_HL_API_H */ 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909