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 12 43 #endif 44 45 #ifndef BTA_HL_NUM_MDEPS 46 #define BTA_HL_NUM_MDEPS 13 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 5 78 #endif 79 80 #ifndef BTA_HL_NUM_SDP_MDEPS 81 #define BTA_HL_NUM_SDP_MDEPS 12 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 0x0101 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_MAX_TIME 255 106 #define BTA_HL_MIN_TIME 1 107 #define BTA_HL_INVALID_APP_HANDLE 0xFF 108 #define BTA_HL_INVALID_MCL_HANDLE 0xFF 109 #define BTA_HL_INVALID_MDL_HANDLE 0xFFFF 110 111 #define BTA_HL_STATUS_OK 0 112 #define BTA_HL_STATUS_FAIL 1 /* Used to pass all other errors */ 113 #define BTA_HL_STATUS_ABORTED 2 114 #define BTA_HL_STATUS_NO_RESOURCE 3 115 #define BTA_HL_STATUS_LAST_ITEM 4 116 #define BTA_HL_STATUS_DUPLICATE_APP_ID 5 117 #define BTA_HL_STATUS_INVALID_APP_HANDLE 6 118 #define BTA_HL_STATUS_INVALID_MCL_HANDLE 7 119 #define BTA_HL_STATUS_MCAP_REG_FAIL 8 120 #define BTA_HL_STATUS_MDEP_CO_FAIL 9 121 #define BTA_HL_STATUS_ECHO_CO_FAIL 10 122 #define BTA_HL_STATUS_MDL_CFG_CO_FAIL 11 123 #define BTA_HL_STATUS_SDP_NO_RESOURCE 12 124 #define BTA_HL_STATUS_SDP_FAIL 13 125 #define BTA_HL_STATUS_NO_CCH 14 126 #define BTA_HL_STATUS_NO_MCL 15 127 128 #define BTA_HL_STATUS_NO_FIRST_RELIABLE 17 129 #define BTA_HL_STATUS_INVALID_DCH_CFG 18 130 #define BTA_HL_STATUS_INVALID_MDL_HANDLE 19 131 #define BTA_HL_STATUS_INVALID_BD_ADDR 20 132 #define BTA_HL_STATUS_INVALID_RECONNECT_CFG 21 133 #define BTA_HL_STATUS_ECHO_TEST_BUSY 22 134 #define BTA_HL_STATUS_INVALID_LOCAL_MDEP_ID 23 135 #define BTA_HL_STATUS_INVALID_MDL_ID 24 136 #define BTA_HL_STATUS_NO_MDL_ID_FOUND 25 137 #define BTA_HL_STATUS_DCH_BUSY 26 /* DCH is congested*/ 138 #define BTA_HL_STATUS_INVALID_CTRL_PSM 27 139 #define BTA_HL_STATUS_DUPLICATE_CCH_OPEN 28 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 UINT8 ori_app_id; 250 } tBTA_HL_MDEP; 251 252 typedef struct 253 { 254 tBTA_HL_MDEP mdep[BTA_HL_NUM_MDEPS]; 255 tBTA_HL_ECHO_CFG echo_cfg; 256 tBTA_HL_MDEP_ROLE_MASK app_role_mask; 257 BOOLEAN advertize_source_sdp; 258 UINT8 num_of_mdeps; 259 } tBTA_HL_SUP_FEATURE; 260 261 typedef struct 262 { 263 BOOLEAN delete_req_pending; 264 tBTA_HL_MDL_ID mdl_id; 265 tBTA_HL_MCL_HANDLE mcl_handle; 266 } tBTA_HL_DELETE_MDL; 267 268 typedef struct 269 { 270 UINT8 time; 271 UINT16 mtu; 272 tBTA_HL_MDL_ID mdl_id; 273 tBTA_HL_MDEP_ID local_mdep_id; 274 tBTA_HL_MDEP_ROLE local_mdep_role; 275 BOOLEAN active; /* true if this item is in use */ 276 tBTA_HL_DCH_MODE dch_mode; 277 UINT8 fcs; 278 BD_ADDR peer_bd_addr; 279 } tBTA_HL_MDL_CFG; 280 281 282 /* Maximum number of supported feature list items (list_elem in tSDP_SUP_FEATURE_ELEM) */ 283 #define BTA_HL_NUM_SUP_FEATURE_ELEMS 13 284 #define BTA_HL_SUP_FEATURE_SDP_BUF_SIZE 512 285 /* This structure is used to add supported feature lists and find supported feature elements */ 286 typedef struct 287 { 288 UINT8 mdep_id; 289 UINT16 data_type; 290 tBTA_HL_MDEP_ROLE mdep_role; 291 char *p_mdep_desp; 292 } tBTA_HL_SUP_FEATURE_ELEM; 293 294 typedef struct 295 { 296 UINT16 num_elems; 297 tBTA_HL_SUP_FEATURE_ELEM list_elem[BTA_HL_NUM_SUP_FEATURE_ELEMS]; 298 } tBTA_HL_SUP_FEATURE_LIST_ELEM; 299 300 301 typedef struct 302 { 303 tBTA_HL_DEVICE_TYPE dev_type; /* sink, source or dual roles */ 304 tBTA_SEC sec_mask; /* security mask for accepting conenction*/ 305 const char *p_srv_name; /* service name to be used in the SDP; null terminated*/ 306 const char *p_srv_desp; /* service description to be used in the SDP; null terminated */ 307 const char *p_provider_name; /* provide name to be used in the SDP; null terminated */ 308 } tBTA_HL_REG_PARAM; 309 310 typedef struct 311 { 312 UINT16 ctrl_psm; 313 BD_ADDR bd_addr; /* Address of peer device */ 314 tBTA_SEC sec_mask; /* security mask for initiating connection*/ 315 } tBTA_HL_CCH_OPEN_PARAM; 316 317 318 typedef struct 319 { 320 UINT16 ctrl_psm; 321 tBTA_HL_MDEP_ID local_mdep_id; /* local MDEP ID */ 322 tBTA_HL_MDEP_ID peer_mdep_id; /* peer mdep id */ 323 tBTA_HL_DCH_CFG local_cfg; 324 tBTA_SEC sec_mask; /* security mask for initiating connection*/ 325 } tBTA_HL_DCH_OPEN_PARAM; 326 327 328 typedef struct 329 { 330 UINT16 ctrl_psm; 331 tBTA_HL_MDL_ID mdl_id; 332 } tBTA_HL_DCH_RECONNECT_PARAM; 333 334 335 typedef struct 336 { 337 UINT16 ctrl_psm; 338 UINT16 pkt_size; 339 tBTA_HL_DCH_CFG local_cfg; 340 } tBTA_HL_DCH_ECHO_TEST_PARAM; 341 342 typedef struct 343 { 344 UINT16 buf_size; 345 UINT8 p_buf; /* buffer pointer */ 346 } tBTA_HL_DCH_BUF_INFO; 347 348 typedef struct 349 { 350 tBTA_HL_MDEP_ID local_mdep_id; /* local MDEP ID */ 351 tBTA_HL_MDL_ID mdl_id; 352 tBTA_HL_DCH_CREATE_RSP rsp_code; 353 tBTA_HL_DCH_CFG cfg_rsp; 354 } tBTA_HL_DCH_CREATE_RSP_PARAM; 355 356 typedef struct 357 { 358 UINT16 data_type; 359 UINT8 mdep_id; 360 tBTA_HL_MDEP_ROLE mdep_role; 361 char mdep_desp[BTA_HL_MDEP_DESP_LEN+1]; 362 }tBTA_HL_SDP_MDEP_CFG; 363 364 typedef struct 365 { 366 UINT16 ctrl_psm; 367 UINT16 data_psm; 368 UINT8 mcap_sup_proc; 369 UINT8 num_mdeps; /* number of mdep elements from SDP*/ 370 char srv_name[BTA_SERVICE_NAME_LEN+1]; 371 char srv_desp[BTA_SERVICE_DESP_LEN+1]; 372 char provider_name[BTA_PROVIDER_NAME_LEN+1]; 373 tBTA_HL_SDP_MDEP_CFG mdep_cfg[BTA_HL_NUM_SDP_MDEPS]; 374 } tBTA_HL_SDP_REC; 375 376 typedef struct 377 { 378 UINT8 num_recs; 379 tBTA_HL_SDP_REC sdp_rec[BTA_HL_NUM_SDP_RECS]; 380 } tBTA_HL_SDP; 381 382 /* HL control callback function events */ 383 enum 384 { 385 BTA_HL_CTRL_ENABLE_CFM_EVT = 0, 386 BTA_HL_CTRL_DISABLE_CFM_EVT 387 }; 388 typedef UINT8 tBTA_HL_CTRL_EVT; 389 /* Structure associated with BTA_HL_ENABLE_EVT 390 BTA_HL_DISABLE_EVT */ 391 392 typedef struct 393 { 394 tBTA_HL_STATUS status; 395 } tBTA_HL_CTRL_ENABLE_DISABLE; 396 397 typedef union 398 { 399 tBTA_HL_CTRL_ENABLE_DISABLE enable_cfm; 400 tBTA_HL_CTRL_ENABLE_DISABLE disable_cfm; 401 } tBTA_HL_CTRL; 402 403 /* HL instance callback function events */ 404 enum 405 { 406 BTA_HL_REGISTER_CFM_EVT =0, 407 BTA_HL_DEREGISTER_CFM_EVT, 408 BTA_HL_CCH_OPEN_IND_EVT, 409 BTA_HL_CCH_OPEN_CFM_EVT, 410 BTA_HL_CCH_CLOSE_IND_EVT, 411 BTA_HL_CCH_CLOSE_CFM_EVT, 412 BTA_HL_DCH_CREATE_IND_EVT, 413 BTA_HL_DCH_OPEN_IND_EVT, 414 BTA_HL_DCH_OPEN_CFM_EVT, 415 BTA_HL_DCH_CLOSE_IND_EVT, 416 BTA_HL_DCH_CLOSE_CFM_EVT, 417 BTA_HL_DCH_RECONNECT_IND_EVT, 418 BTA_HL_DCH_RECONNECT_CFM_EVT, 419 420 BTA_HL_DCH_ABORT_IND_EVT, 421 BTA_HL_DCH_ABORT_CFM_EVT, 422 BTA_HL_DELETE_MDL_IND_EVT, 423 BTA_HL_DELETE_MDL_CFM_EVT, 424 BTA_HL_DCH_SEND_DATA_CFM_EVT, 425 BTA_HL_DCH_RCV_DATA_IND_EVT, 426 BTA_HL_CONG_CHG_IND_EVT, 427 BTA_HL_DCH_ECHO_TEST_CFM_EVT, 428 BTA_HL_SDP_QUERY_CFM_EVT, 429 BTA_HL_SDP_INFO_IND_EVT 430 }; 431 typedef UINT8 tBTA_HL_EVT; 432 433 434 typedef struct 435 { 436 tBTA_HL_STATUS status; /* start status */ 437 UINT8 app_id; 438 tBTA_HL_APP_HANDLE app_handle; 439 } tBTA_HL_REGISTER_CFM; 440 441 442 typedef struct 443 { 444 tBTA_HL_STATUS status; /* start status */ 445 UINT8 app_id; 446 tBTA_HL_APP_HANDLE app_handle; 447 } tBTA_HL_DEREGISTER_CFM; 448 449 450 typedef struct 451 { 452 BOOLEAN intentional; 453 tBTA_HL_MCL_HANDLE mcl_handle; 454 tBTA_HL_APP_HANDLE app_handle; 455 } tBTA_HL_CCH_CLOSE_IND; 456 457 458 typedef struct 459 { 460 tBTA_HL_MCL_HANDLE mcl_handle; 461 tBTA_HL_APP_HANDLE app_handle; 462 } tBTA_HL_MCL_IND; 463 464 typedef struct 465 { 466 tBTA_HL_STATUS status; /* connection status */ 467 tBTA_HL_MCL_HANDLE mcl_handle; 468 tBTA_HL_APP_HANDLE app_handle; 469 } tBTA_HL_MCL_CFM; 470 471 typedef struct 472 { 473 tBTA_HL_MCL_HANDLE mcl_handle; 474 tBTA_HL_APP_HANDLE app_handle; 475 BD_ADDR bd_addr; /* address of peer device */ 476 } tBTA_HL_CCH_OPEN_IND; 477 478 typedef struct 479 { 480 tBTA_HL_STATUS status; /* connection status */ 481 UINT8 app_id; 482 tBTA_HL_MCL_HANDLE mcl_handle; 483 tBTA_HL_APP_HANDLE app_handle; 484 BD_ADDR bd_addr; /* address of peer device */ 485 } tBTA_HL_CCH_OPEN_CFM; 486 487 typedef struct 488 { 489 tBTA_HL_MCL_HANDLE mcl_handle; 490 tBTA_HL_APP_HANDLE app_handle; 491 tBTA_HL_MDEP_ID local_mdep_id; 492 tBTA_HL_MDL_ID mdl_id; /* MCAP data link ID for this 493 data channel conenction */ 494 tBTA_HL_DCH_CFG cfg; /* dch cfg requested by the peer device */ 495 BD_ADDR bd_addr; /* address of peer device */ 496 497 } tBTA_HL_DCH_CREATE_IND; 498 499 typedef struct 500 { 501 tBTA_HL_MDL_HANDLE mdl_handle; 502 tBTA_HL_MCL_HANDLE mcl_handle; 503 tBTA_HL_APP_HANDLE app_handle; 504 tBTA_HL_MDEP_ID local_mdep_id; 505 tBTA_HL_MDL_ID mdl_id; /* MCAP data link ID for this 506 data channel conenction */ 507 tBTA_HL_DCH_MODE dch_mode; /* data channel mode - reliable or streaming*/ 508 509 BOOLEAN first_reliable; /* whether this is the first reliable data channel */ 510 UINT16 mtu; 511 } tBTA_HL_DCH_OPEN_IND; 512 513 typedef struct 514 { 515 tBTA_HL_STATUS status; /* connection status */ 516 tBTA_HL_MDL_HANDLE mdl_handle; 517 tBTA_HL_MCL_HANDLE mcl_handle; 518 tBTA_HL_APP_HANDLE app_handle; 519 tBTA_HL_MDEP_ID local_mdep_id; 520 tBTA_HL_MDL_ID mdl_id; /* MCAP data link ID for this 521 data channel conenction */ 522 tBTA_HL_DCH_MODE dch_mode; /* data channel mode - reliable or streaming*/ 523 BOOLEAN first_reliable; /* whether this is the first reliable data channel */ 524 UINT16 mtu; 525 } tBTA_HL_DCH_OPEN_CFM; 526 527 528 typedef struct 529 { 530 BOOLEAN intentional; 531 tBTA_HL_MDL_HANDLE mdl_handle; 532 tBTA_HL_MCL_HANDLE mcl_handle; 533 tBTA_HL_APP_HANDLE app_handle; 534 } tBTA_HL_DCH_CLOSE_IND; 535 536 537 typedef struct 538 { 539 tBTA_HL_MDL_HANDLE mdl_handle; 540 tBTA_HL_MCL_HANDLE mcl_handle; 541 tBTA_HL_APP_HANDLE app_handle; 542 } tBTA_HL_MDL_IND; 543 544 typedef struct 545 { 546 tBTA_HL_STATUS status; 547 tBTA_HL_MDL_HANDLE mdl_handle; 548 tBTA_HL_MCL_HANDLE mcl_handle; 549 tBTA_HL_APP_HANDLE app_handle; 550 } tBTA_HL_MDL_CFM; 551 552 typedef struct 553 { 554 tBTA_HL_MCL_HANDLE mcl_handle; 555 tBTA_HL_APP_HANDLE app_handle; 556 tBTA_HL_MDL_ID mdl_id; 557 } tBTA_HL_DELETE_MDL_IND; 558 559 typedef struct 560 { 561 tBTA_HL_STATUS status; 562 tBTA_HL_MCL_HANDLE mcl_handle; 563 tBTA_HL_APP_HANDLE app_handle; 564 tBTA_HL_MDL_ID mdl_id; 565 } tBTA_HL_DELETE_MDL_CFM; 566 567 typedef struct 568 { 569 tBTA_HL_MDL_HANDLE mdl_handle; 570 tBTA_HL_MCL_HANDLE mcl_handle; 571 tBTA_HL_APP_HANDLE app_handle; 572 BOOLEAN cong; 573 } tBTA_HL_DCH_CONG_IND; 574 575 typedef struct 576 { 577 tBTA_HL_APP_HANDLE app_handle; 578 UINT16 ctrl_psm; 579 UINT16 data_psm; 580 UINT8 data_x_spec; 581 UINT8 mcap_sup_procs; 582 } tBTA_HL_SDP_INFO_IND; 583 584 typedef struct 585 { 586 tBTA_HL_STATUS status; 587 UINT8 app_id; 588 tBTA_HL_APP_HANDLE app_handle; 589 BD_ADDR bd_addr; 590 tBTA_HL_SDP *p_sdp; 591 } tBTA_HL_SDP_QUERY_CFM; 592 593 typedef union 594 { 595 tBTA_HL_REGISTER_CFM reg_cfm; 596 tBTA_HL_DEREGISTER_CFM dereg_cfm; 597 tBTA_HL_CCH_OPEN_IND cch_open_ind; 598 tBTA_HL_CCH_OPEN_CFM cch_open_cfm; 599 tBTA_HL_CCH_CLOSE_IND cch_close_ind; 600 tBTA_HL_MCL_CFM cch_close_cfm; 601 tBTA_HL_DCH_CREATE_IND dch_create_ind; 602 tBTA_HL_DCH_OPEN_IND dch_open_ind; 603 tBTA_HL_DCH_OPEN_CFM dch_open_cfm; 604 tBTA_HL_DCH_CLOSE_IND dch_close_ind; 605 tBTA_HL_MDL_CFM dch_close_cfm; 606 tBTA_HL_DCH_OPEN_IND dch_reconnect_ind; 607 tBTA_HL_DCH_OPEN_CFM dch_reconnect_cfm; 608 tBTA_HL_MCL_IND dch_abort_ind; 609 tBTA_HL_MCL_CFM dch_abort_cfm; 610 tBTA_HL_DELETE_MDL_IND delete_mdl_ind; 611 tBTA_HL_DELETE_MDL_CFM delete_mdl_cfm; 612 tBTA_HL_MDL_CFM dch_send_data_cfm; 613 tBTA_HL_MDL_IND dch_rcv_data_ind; 614 tBTA_HL_DCH_CONG_IND dch_cong_ind; 615 tBTA_HL_MCL_CFM echo_test_cfm; 616 tBTA_HL_SDP_QUERY_CFM sdp_query_cfm; 617 tBTA_HL_SDP_INFO_IND sdp_info_ind; 618 619 } tBTA_HL; 620 621 /* HL callback functions */ 622 typedef void tBTA_HL_CTRL_CBACK(tBTA_HL_CTRL_EVT event, tBTA_HL_CTRL *p_data); 623 typedef void tBTA_HL_CBACK(tBTA_HL_EVT event, tBTA_HL *p_data); 624 625 626 /***************************************************************************** 627 ** External Function Declarations 628 *****************************************************************************/ 629 #ifdef __cplusplus 630 extern "C" 631 { 632 #endif 633 634 /************************** 635 ** API Functions 636 ***************************/ 637 638 /******************************************************************************* 639 ** 640 ** Function BTA_HlEnable 641 ** 642 ** Description Enable the HL subsystems. This function must be 643 ** called before any other functions in the HL API are called. 644 ** When the enable operation is completed the callback function 645 ** will be called with an BTA_HL_CTRL_ENABLE_CFM_EVT event. 646 ** 647 ** Parameters p_cback - HL event call back function 648 ** 649 ** Returns void 650 ** 651 *******************************************************************************/ 652 extern void BTA_HlEnable(tBTA_HL_CTRL_CBACK *p_ctrl_cback); 653 /******************************************************************************* 654 ** 655 ** Function BTA_HlDisable 656 ** 657 ** Description Disable the HL subsystem. 658 ** 659 ** Returns void 660 ** 661 *******************************************************************************/ 662 extern void BTA_HlDisable(void); 663 664 /******************************************************************************* 665 ** 666 ** Function BTA_HlUpdate 667 ** 668 ** Description Register an HDP application 669 ** 670 ** Parameters app_id - Application ID 671 ** p_reg_param - non-platform related parameters for the 672 ** HDP application 673 ** p_cback - HL event callback fucntion 674 ** 675 ** Returns void 676 ** 677 *******************************************************************************/ 678 extern void BTA_HlUpdate(UINT8 app_id, 679 tBTA_HL_REG_PARAM *p_reg_param, BOOLEAN is_register, 680 tBTA_HL_CBACK *p_cback); 681 682 /******************************************************************************* 683 ** 684 ** Function BTA_HlRegister 685 ** 686 ** Description Register a HDP application 687 ** 688 ** 689 ** Parameters app_id - hdp application ID 690 ** p_reg_param - non-platform related parameters for the 691 ** HDP application 692 ** p_cback - HL event callback fucntion 693 ** 694 ** Returns void 695 ** 696 *******************************************************************************/ 697 extern void BTA_HlRegister(UINT8 app_id, 698 tBTA_HL_REG_PARAM *p_reg_param, 699 tBTA_HL_CBACK *p_cback); 700 701 /******************************************************************************* 702 ** 703 ** Function BTA_HlDeregister 704 ** 705 ** Description Deregister an HDP application 706 ** 707 ** Parameters app_handle - Application handle 708 ** 709 ** Returns void 710 ** 711 *******************************************************************************/ 712 extern void BTA_HlDeregister(UINT8 app_id,tBTA_HL_APP_HANDLE app_handle); 713 714 /******************************************************************************* 715 ** 716 ** Function BTA_HlCchOpen 717 ** 718 ** Description Open a Control channel connection with the specified BD address 719 ** and the control PSM value is used to select which 720 ** HDP insatnce should be used in case the peer device support 721 ** multiple HDP instances. 722 ** 723 ** 724 ** Parameters app_handle - Application Handle 725 ** p_open_param - parameters for opening a control channel 726 ** 727 ** Returns void 728 ** 729 ** Note: If the control PSM value is zero then the first HDP 730 ** instance is used for the control channel setup 731 *******************************************************************************/ 732 extern void BTA_HlCchOpen(UINT8 app_id, tBTA_HL_APP_HANDLE app_handle, 733 tBTA_HL_CCH_OPEN_PARAM *p_open_param); 734 735 /******************************************************************************* 736 ** 737 ** Function BTA_HlCchClose 738 ** 739 ** Description Close a Control channel connection with the specified MCL 740 ** handle 741 ** 742 ** Parameters mcl_handle - MCL handle 743 ** 744 ** Returns void 745 ** 746 *******************************************************************************/ 747 extern void BTA_HlCchClose(tBTA_HL_MCL_HANDLE mcl_handle); 748 749 /******************************************************************************* 750 ** 751 ** Function BTA_HlDchOpen 752 ** 753 ** Description Open a data channel connection with the specified DCH parameters 754 ** 755 ** Parameters mcl_handle - MCL handle 756 ** p_open_param - parameters for opening a data channel 757 ** 758 ** Returns void 759 ** 760 *******************************************************************************/ 761 extern void BTA_HlDchOpen(tBTA_HL_MCL_HANDLE mcl_handle, 762 tBTA_HL_DCH_OPEN_PARAM *p_open_param); 763 /******************************************************************************* 764 ** 765 ** Function BTA_HlDchReconnect 766 ** 767 ** Description Reconnect a data channel with the specified MDL_ID 768 ** 769 ** Parameters mcl_handle - MCL handle 770 *8 p_recon_param - parameters for reconnecting a data channel 771 ** 772 ** Returns void 773 ** 774 *******************************************************************************/ 775 extern void BTA_HlDchReconnect(tBTA_HL_MCL_HANDLE mcl_handle, 776 tBTA_HL_DCH_RECONNECT_PARAM *p_recon_param); 777 /******************************************************************************* 778 ** 779 ** Function BTA_HlDchClose 780 ** 781 ** Description Close a data channel with the specified MDL handle 782 ** 783 ** Parameters mdl_handle - MDL handle 784 ** 785 ** Returns void 786 ** 787 *******************************************************************************/ 788 extern void BTA_HlDchClose(tBTA_HL_MDL_HANDLE mdl_handle); 789 790 /******************************************************************************* 791 ** 792 ** Function BTA_HlDchAbort 793 ** 794 ** Description Abort the current data channel setup with the specified MCL 795 ** handle 796 ** 797 ** Parameters mcl_handle - MCL handle 798 ** 799 ** 800 ** Returns void 801 ** 802 *******************************************************************************/ 803 extern void BTA_HlDchAbort(tBTA_HL_MCL_HANDLE mcl_handle); 804 805 /******************************************************************************* 806 ** 807 ** Function BTA_HlSendData 808 ** 809 ** Description Send an APDU to the peer device 810 ** 811 ** Parameters mdl_handle - MDL handle 812 ** pkt_size - size of the data packet to be sent 813 ** 814 ** Returns void 815 ** 816 *******************************************************************************/ 817 extern void BTA_HlSendData(tBTA_HL_MDL_HANDLE mdl_handle, 818 UINT16 pkt_size); 819 820 /******************************************************************************* 821 ** 822 ** Function BTA_HlDeleteMdl 823 ** 824 ** Description Delete the specified MDL_ID within the specified MCL handle 825 ** 826 ** Parameters mcl_handle - MCL handle 827 ** mdl_id - MDL ID 828 ** 829 ** Returns void 830 ** 831 ** note: If mdl_id = 0xFFFF then this means to delete all MDLs 832 ** and this value can only be used with DeleteMdl request only 833 ** not other requests 834 ** 835 *******************************************************************************/ 836 extern void BTA_HlDeleteMdl(tBTA_HL_MCL_HANDLE mcl_handle, 837 tBTA_HL_MDL_ID mdl_id ); 838 839 /******************************************************************************* 840 ** 841 ** Function BTA_HlDchEchoTest 842 ** 843 ** Description Initiate an echo test with the specified MCL handle 844 ** 845 ** Parameters mcl_handle - MCL handle 846 *8 p_echo_test_param - parameters for echo testing 847 ** 848 ** Returns void 849 ** 850 *******************************************************************************/ 851 extern void BTA_HlDchEchoTest( tBTA_HL_MCL_HANDLE mcl_handle, 852 tBTA_HL_DCH_ECHO_TEST_PARAM *p_echo_test_param); 853 854 /******************************************************************************* 855 ** 856 ** Function BTA_HlSdpQuery 857 ** 858 ** Description SDP query request for the specified BD address 859 ** 860 ** Parameters app_id 861 app_handle - application handle 862 ** bd_addr - BD address 863 ** 864 ** Returns void 865 ** 866 *******************************************************************************/ 867 extern void BTA_HlSdpQuery(UINT8 app_id,tBTA_HL_APP_HANDLE app_handle, 868 BD_ADDR bd_addr); 869 870 /******************************************************************************* 871 ** 872 ** Function BTA_HlDchCreateMdlRsp 873 ** 874 ** Description Set the Response and configuration values for the Create MDL 875 ** request 876 ** 877 ** Parameters mcl_handle - MCL handle 878 ** p_rsp_param - parameters specified whether the request should 879 ** be accepted or not and if it should be accepted 880 ** then it also specified the configuration response 881 ** value 882 ** 883 ** Returns void 884 ** 885 *******************************************************************************/ 886 extern void BTA_HlDchCreateRsp(tBTA_HL_MCL_HANDLE mcl_handle, 887 tBTA_HL_DCH_CREATE_RSP_PARAM *p_rsp_param); 888 889 890 891 #ifdef __cplusplus 892 893 } 894 #endif 895 896 #endif /* BTA_HL_API_H */ 897