1 /******************************************************************************
3 * Copyright (C) 2009-2012 Broadcom Corporation
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:
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 ******************************************************************************/
19 /******************************************************************************
21 * This is the public interface file for the HeaLth device profile (HL)
22 * subsystem of BTA, Broadcom's Bluetooth application layer for mobile
25 ******************************************************************************/
33 /*****************************************************************************
34 ** Constants and data types
35 *****************************************************************************/
36 /* Extra Debug Code */
38 #define BTA_HL_DEBUG TRUE
41 #ifndef BTA_HL_NUM_APPS
42 #define BTA_HL_NUM_APPS 12
45 #ifndef BTA_HL_NUM_MDEPS
46 #define BTA_HL_NUM_MDEPS 13
49 #ifndef BTA_HL_NUM_MCLS
50 #define BTA_HL_NUM_MCLS 7
53 #ifndef BTA_HL_NUM_MDLS_PER_MDEP
54 #define BTA_HL_NUM_MDLS_PER_MDEP 4
57 #ifndef BTA_HL_NUM_MDLS_PER_MCL
58 #define BTA_HL_NUM_MDLS_PER_MCL 10
61 #ifndef BTA_HL_NUM_DATA_TYPES
62 #define BTA_HL_NUM_DATA_TYPES 5 /* maximum number of data types can be supported
66 #define BTA_HL_MCAP_RSP_TOUT 2 /* 2 seconds */
68 #ifndef BTA_HL_CCH_NUM_FILTER_ELEMS
69 #define BTA_HL_CCH_NUM_FILTER_ELEMS 3
72 #ifndef BTA_HL_NUM_SDP_CBACKS
73 #define BTA_HL_NUM_SDP_CBACKS 7
76 #ifndef BTA_HL_NUM_SDP_RECS
77 #define BTA_HL_NUM_SDP_RECS 5
80 #ifndef BTA_HL_NUM_SDP_MDEPS
81 #define BTA_HL_NUM_SDP_MDEPS 12
84 #ifndef BTA_HL_NUM_SVC_ELEMS
85 #define BTA_HL_NUM_SVC_ELEMS 2
88 #ifndef BTA_HL_NUM_PROTO_ELEMS
89 #define BTA_HL_NUM_PROTO_ELEMS 2
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
98 #ifndef BTA_HL_NUM_MDL_CFGS
99 #define BTA_HL_NUM_MDL_CFGS 16 /* numer of MDL cfg saved in the persistent memory*/
102 #define BTA_HL_NUM_TIMERS 7
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
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
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
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;
147 BTA_HL_DEVICE_TYPE_SINK,
148 BTA_HL_DEVICE_TYPE_SOURCE,
149 BTA_HL_DEVICE_TYPE_DUAL
152 typedef UINT8 tBTA_HL_DEVICE_TYPE;
156 #define BTA_HL_SDP_IEEE_11073_20601 0x01
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 */
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
170 typedef UINT8 tBTA_HL_MDEP_ROLE;
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;
177 #define BTA_HL_ECHO_TEST_MDEP_ID 0
178 #define BTA_HL_ECHO_TEST_MDEP_CFG_IDX 0
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,
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*/
193 #define BTA_HL_MDEP_DESP_LEN 35
195 #define BTA_HL_DCH_MODE_RELIABLE 0
196 #define BTA_HL_DCH_MODE_STREAMING 1
198 typedef UINT8 tBTA_HL_DCH_MODE;
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
205 typedef UINT8 tBTA_HL_DCH_CFG;
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
210 #define BTA_HL_DCH_CREATE_RSP_SUCCESS 0
211 #define BTA_HL_DCH_CREATE_RSP_CFG_REJ 1
213 typedef UINT8 tBTA_HL_DCH_CREATE_RSP;
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
220 typedef UINT8 tBTA_HL_SUP_PROC_MASK;
224 UINT16 max_rx_apdu_size; /* local rcv MTU */
225 UINT16 max_tx_apdu_size; /* maximum TX APDU size*/
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;
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];
247 tBTA_HL_MDEP_ID mdep_id; /* MDEP ID 0x01-0x7F */
248 tBTA_HL_MDEP_CFG mdep_cfg;
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;
259 } tBTA_HL_SUP_FEATURE;
263 BOOLEAN delete_req_pending;
264 tBTA_HL_MDL_ID mdl_id;
265 tBTA_HL_MCL_HANDLE mcl_handle;
266 } tBTA_HL_DELETE_MDL;
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;
278 BD_ADDR peer_bd_addr;
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 */
290 tBTA_HL_MDEP_ROLE mdep_role;
292 } tBTA_HL_SUP_FEATURE_ELEM;
297 tBTA_HL_SUP_FEATURE_ELEM list_elem[BTA_HL_NUM_SUP_FEATURE_ELEMS];
298 } tBTA_HL_SUP_FEATURE_LIST_ELEM;
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 */
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;
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;
331 tBTA_HL_MDL_ID mdl_id;
332 } tBTA_HL_DCH_RECONNECT_PARAM;
339 tBTA_HL_DCH_CFG local_cfg;
340 } tBTA_HL_DCH_ECHO_TEST_PARAM;
345 UINT8 p_buf; /* buffer pointer */
346 } tBTA_HL_DCH_BUF_INFO;
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;
360 tBTA_HL_MDEP_ROLE mdep_role;
361 char mdep_desp[BTA_HL_MDEP_DESP_LEN+1];
362 }tBTA_HL_SDP_MDEP_CFG;
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];
379 tBTA_HL_SDP_REC sdp_rec[BTA_HL_NUM_SDP_RECS];
382 /* HL control callback function events */
385 BTA_HL_CTRL_ENABLE_CFM_EVT = 0,
386 BTA_HL_CTRL_DISABLE_CFM_EVT
388 typedef UINT8 tBTA_HL_CTRL_EVT;
389 /* Structure associated with BTA_HL_ENABLE_EVT
390 BTA_HL_DISABLE_EVT */
394 tBTA_HL_STATUS status;
395 } tBTA_HL_CTRL_ENABLE_DISABLE;
399 tBTA_HL_CTRL_ENABLE_DISABLE enable_cfm;
400 tBTA_HL_CTRL_ENABLE_DISABLE disable_cfm;
403 /* HL instance callback function events */
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,
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
431 typedef UINT8 tBTA_HL_EVT;
436 tBTA_HL_STATUS status; /* start status */
438 tBTA_HL_APP_HANDLE app_handle;
439 } tBTA_HL_REGISTER_CFM;
444 tBTA_HL_STATUS status; /* start status */
446 tBTA_HL_APP_HANDLE app_handle;
447 } tBTA_HL_DEREGISTER_CFM;
453 tBTA_HL_MCL_HANDLE mcl_handle;
454 tBTA_HL_APP_HANDLE app_handle;
455 } tBTA_HL_CCH_CLOSE_IND;
460 tBTA_HL_MCL_HANDLE mcl_handle;
461 tBTA_HL_APP_HANDLE app_handle;
466 tBTA_HL_STATUS status; /* connection status */
467 tBTA_HL_MCL_HANDLE mcl_handle;
468 tBTA_HL_APP_HANDLE app_handle;
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;
480 tBTA_HL_STATUS status; /* connection status */
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;
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 */
497 } tBTA_HL_DCH_CREATE_IND;
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*/
509 BOOLEAN first_reliable; /* whether this is the first reliable data channel */
511 } tBTA_HL_DCH_OPEN_IND;
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 */
525 } tBTA_HL_DCH_OPEN_CFM;
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;
539 tBTA_HL_MDL_HANDLE mdl_handle;
540 tBTA_HL_MCL_HANDLE mcl_handle;
541 tBTA_HL_APP_HANDLE app_handle;
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;
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;
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;
569 tBTA_HL_MDL_HANDLE mdl_handle;
570 tBTA_HL_MCL_HANDLE mcl_handle;
571 tBTA_HL_APP_HANDLE app_handle;
573 } tBTA_HL_DCH_CONG_IND;
577 tBTA_HL_APP_HANDLE app_handle;
581 UINT8 mcap_sup_procs;
582 } tBTA_HL_SDP_INFO_IND;
586 tBTA_HL_STATUS status;
588 tBTA_HL_APP_HANDLE app_handle;
591 } tBTA_HL_SDP_QUERY_CFM;
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;
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);
626 /*****************************************************************************
627 ** External Function Declarations
628 *****************************************************************************/
634 /**************************
636 ***************************/
638 /*******************************************************************************
640 ** Function BTA_HlEnable
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.
647 ** Parameters p_cback - HL event call back function
651 *******************************************************************************/
652 extern void BTA_HlEnable(tBTA_HL_CTRL_CBACK *p_ctrl_cback);
653 /*******************************************************************************
655 ** Function BTA_HlDisable
657 ** Description Disable the HL subsystem.
661 *******************************************************************************/
662 extern void BTA_HlDisable(void);
664 /*******************************************************************************
666 ** Function BTA_HlUpdate
668 ** Description Register an HDP application
670 ** Parameters app_id - Application ID
671 ** p_reg_param - non-platform related parameters for the
673 ** p_cback - HL event callback fucntion
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);
682 /*******************************************************************************
684 ** Function BTA_HlRegister
686 ** Description Register a HDP application
689 ** Parameters app_id - hdp application ID
690 ** p_reg_param - non-platform related parameters for the
692 ** p_cback - HL event callback fucntion
696 *******************************************************************************/
697 extern void BTA_HlRegister(UINT8 app_id,
698 tBTA_HL_REG_PARAM *p_reg_param,
699 tBTA_HL_CBACK *p_cback);
701 /*******************************************************************************
703 ** Function BTA_HlDeregister
705 ** Description Deregister an HDP application
707 ** Parameters app_handle - Application handle
711 *******************************************************************************/
712 extern void BTA_HlDeregister(UINT8 app_id,tBTA_HL_APP_HANDLE app_handle);
714 /*******************************************************************************
716 ** Function BTA_HlCchOpen
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.
724 ** Parameters app_handle - Application Handle
725 ** p_open_param - parameters for opening a control channel
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);
735 /*******************************************************************************
737 ** Function BTA_HlCchClose
739 ** Description Close a Control channel connection with the specified MCL
742 ** Parameters mcl_handle - MCL handle
746 *******************************************************************************/
747 extern void BTA_HlCchClose(tBTA_HL_MCL_HANDLE mcl_handle);
749 /*******************************************************************************
751 ** Function BTA_HlDchOpen
753 ** Description Open a data channel connection with the specified DCH parameters
755 ** Parameters mcl_handle - MCL handle
756 ** p_open_param - parameters for opening a data channel
760 *******************************************************************************/
761 extern void BTA_HlDchOpen(tBTA_HL_MCL_HANDLE mcl_handle,
762 tBTA_HL_DCH_OPEN_PARAM *p_open_param);
763 /*******************************************************************************
765 ** Function BTA_HlDchReconnect
767 ** Description Reconnect a data channel with the specified MDL_ID
769 ** Parameters mcl_handle - MCL handle
770 *8 p_recon_param - parameters for reconnecting a data channel
774 *******************************************************************************/
775 extern void BTA_HlDchReconnect(tBTA_HL_MCL_HANDLE mcl_handle,
776 tBTA_HL_DCH_RECONNECT_PARAM *p_recon_param);
777 /*******************************************************************************
779 ** Function BTA_HlDchClose
781 ** Description Close a data channel with the specified MDL handle
783 ** Parameters mdl_handle - MDL handle
787 *******************************************************************************/
788 extern void BTA_HlDchClose(tBTA_HL_MDL_HANDLE mdl_handle);
790 /*******************************************************************************
792 ** Function BTA_HlDchAbort
794 ** Description Abort the current data channel setup with the specified MCL
797 ** Parameters mcl_handle - MCL handle
802 *******************************************************************************/
803 extern void BTA_HlDchAbort(tBTA_HL_MCL_HANDLE mcl_handle);
805 /*******************************************************************************
807 ** Function BTA_HlSendData
809 ** Description Send an APDU to the peer device
811 ** Parameters mdl_handle - MDL handle
812 ** pkt_size - size of the data packet to be sent
816 *******************************************************************************/
817 extern void BTA_HlSendData(tBTA_HL_MDL_HANDLE mdl_handle,
820 /*******************************************************************************
822 ** Function BTA_HlDeleteMdl
824 ** Description Delete the specified MDL_ID within the specified MCL handle
826 ** Parameters mcl_handle - MCL handle
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
835 *******************************************************************************/
836 extern void BTA_HlDeleteMdl(tBTA_HL_MCL_HANDLE mcl_handle,
837 tBTA_HL_MDL_ID mdl_id );
839 /*******************************************************************************
841 ** Function BTA_HlDchEchoTest
843 ** Description Initiate an echo test with the specified MCL handle
845 ** Parameters mcl_handle - MCL handle
846 *8 p_echo_test_param - parameters for echo testing
850 *******************************************************************************/
851 extern void BTA_HlDchEchoTest( tBTA_HL_MCL_HANDLE mcl_handle,
852 tBTA_HL_DCH_ECHO_TEST_PARAM *p_echo_test_param);
854 /*******************************************************************************
856 ** Function BTA_HlSdpQuery
858 ** Description SDP query request for the specified BD address
861 app_handle - application handle
862 ** bd_addr - BD address
866 *******************************************************************************/
867 extern void BTA_HlSdpQuery(UINT8 app_id,tBTA_HL_APP_HANDLE app_handle,
870 /*******************************************************************************
872 ** Function BTA_HlDchCreateMdlRsp
874 ** Description Set the Response and configuration values for the Create MDL
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
885 *******************************************************************************/
886 extern void BTA_HlDchCreateRsp(tBTA_HL_MCL_HANDLE mcl_handle,
887 tBTA_HL_DCH_CREATE_RSP_PARAM *p_rsp_param);
896 #endif /* BTA_HL_API_H */