32#if RFCOMM_INCLUDED == TRUE
38#if (BLE_INCLUDED == TRUE)
39#include "btm_ble_int.h"
40#if (SMP_INCLUDED == TRUE)
45#if BTM_MAX_LOC_BD_NAME_LEN > 0
46typedef char tBTM_LOC_BD_NAME[BTM_MAX_LOC_BD_NAME_LEN + 1];
49#define BTM_ACL_IS_CONNECTED(bda) (btm_bda_to_acl (bda) != NULL)
53#define BTM_MAX_SCN PORT_MAX_RFC_PORTS
57#define BTM_ACL_SUPPORTED_PKTS_MASK (HCI_PKT_TYPES_MASK_DM1 | \
58 HCI_PKT_TYPES_MASK_DH1 | \
59 HCI_PKT_TYPES_MASK_DM3 | \
60 HCI_PKT_TYPES_MASK_DH3 | \
61 HCI_PKT_TYPES_MASK_DM5 | \
62 HCI_PKT_TYPES_MASK_DH5)
64#define BTM_ACL_EXCEPTION_PKTS_MASK (HCI_PKT_TYPES_MASK_NO_2_DH1 | \
65 HCI_PKT_TYPES_MASK_NO_3_DH1 | \
66 HCI_PKT_TYPES_MASK_NO_2_DH3 | \
67 HCI_PKT_TYPES_MASK_NO_3_DH3 | \
68 HCI_PKT_TYPES_MASK_NO_2_DH5 | \
69 HCI_PKT_TYPES_MASK_NO_3_DH5)
71#define BTM_EPR_AVAILABLE(p) ((HCI_ATOMIC_ENCRYPT_SUPPORTED((p)->features) && \
72 HCI_ATOMIC_ENCRYPT_SUPPORTED(btm_cb.devcb.local_features)) \
75#define BTM_IS_BRCM_CONTROLLER() (btm_cb.devcb.local_version.manufacturer == LMP_COMPID_BROADCOM)
83 UINT16 pkt_types_mask;
84 UINT16 restore_pkt_types;
91 UINT16 lmp_subversion;
92 UINT16 link_super_tout;
98 BOOLEAN link_up_issued;
100#define BTM_ACL_SWKEY_STATE_IDLE 0
101#define BTM_ACL_SWKEY_STATE_MODE_CHANGE 1
102#define BTM_ACL_SWKEY_STATE_ENCRYPTION_OFF 2
103#define BTM_ACL_SWKEY_STATE_SWITCHING 3
104#define BTM_ACL_SWKEY_STATE_ENCRYPTION_ON 4
105#define BTM_ACL_SWKEY_STATE_IN_PROGRESS 5
106 UINT8 switch_role_state;
107 UINT8 change_key_state;
109#define BTM_ACL_ENCRYPT_STATE_IDLE 0
110#define BTM_ACL_ENCRYPT_STATE_ENCRYPT_OFF 1
111#define BTM_ACL_ENCRYPT_STATE_TEMP_FUNC 2
112#define BTM_ACL_ENCRYPT_STATE_ENCRYPT_ON 3
115#if BTM_PWR_MGR_INCLUDED == FALSE
118#if BLE_INCLUDED == TRUE
127#define TT_DEV_RESET 1
129#define TT_DEV_RLNKP 4
135 tBTM_DEV_STATUS_CB *p_dev_status_cb;
136 tBTM_VS_EVT_CB *p_vend_spec_cb[BTM_MAX_VSE_CALLBACKS];
138 tBTM_CMPL_CB *p_stored_link_key_cmpl_cb;
140 TIMER_LIST_ENT reset_timer;
141 tBTM_CMPL_CB *p_reset_cmpl_cb;
143 TIMER_LIST_ENT rln_timer;
144 tBTM_CMPL_CB *p_rln_cmpl_cb;
146 TIMER_LIST_ENT rlinkp_timer;
147 tBTM_CMPL_CB *p_rlinkp_cmpl_cb;
149 TIMER_LIST_ENT rssi_timer;
150 tBTM_CMPL_CB *p_rssi_cmpl_cb;
152 TIMER_LIST_ENT lnk_quality_timer;
153 tBTM_CMPL_CB *p_lnk_qual_cmpl_cb;
155 TIMER_LIST_ENT txpwer_timer;
156 tBTM_CMPL_CB *p_txpwer_cmpl_cb;
159 TIMER_LIST_ENT qossu_timer;
160 tBTM_CMPL_CB *p_qossu_cmpl_cb;
164 tBTM_CMPL_CB *p_switch_role_cb;
168 tBTM_CMPL_CB *p_chg_link_key_cb;
171 TIMER_LIST_ENT tx_power_timer;
172 tBTM_CMPL_CB *p_tx_power_cmpl_cb;
176 BD_FEATURES local_features;
178#if BLE_INCLUDED == TRUE
179 BD_ADDR read_tx_pwr_addr;
184#if BTM_BLE_CONFORMANCE_TESTING == TRUE
185 BOOLEAN no_disc_if_pair_fail;
186 BOOLEAN enable_test_mac_val;
188 BOOLEAN enable_test_local_sign_cntr;
189 UINT32 test_local_sign_cntr;
195#define BTM_DEV_STATE_WAIT_RESET_CMPLT 0
196#define BTM_DEV_STATE_WAIT_AFTER_RESET 1
197#define BTM_DEV_STATE_READY 2
200 tBTM_IO_CAP loc_io_caps;
201 BOOLEAN loc_auth_req;
202 BD_FEATURES brcm_features;
210#define BTM_PER_INQ_MIN_MAX_PERIOD HCI_PER_INQ_MIN_MAX_PERIOD
211#define BTM_PER_INQ_MAX_MAX_PERIOD HCI_PER_INQ_MAX_MAX_PERIOD
212#define BTM_PER_INQ_MIN_MIN_PERIOD HCI_PER_INQ_MIN_MIN_PERIOD
213#define BTM_PER_INQ_MAX_MIN_PERIOD HCI_PER_INQ_MAX_MIN_PERIOD
214#define BTM_MAX_INQUIRY_LENGTH HCI_MAX_INQUIRY_LENGTH
215#define BTM_MIN_INQUIRY_LEN 0x01
217#define BTM_MIN_INQ_TX_POWER -70
218#define BTM_MAX_INQ_TX_POWER 20
220#if BTM_USE_INQ_RESULTS_FILTER == TRUE
242#if (BLE_INCLUDED == TRUE)
250 tBTM_CMPL_CB *p_remname_cmpl_cb;
252#define BTM_EXT_RMT_NAME_TIMEOUT 40
255 TIMER_LIST_ENT rmt_name_timer_ent;
257 UINT16 discoverable_mode;
258 UINT16 connectable_mode;
259 UINT16 page_scan_window;
260 UINT16 page_scan_period;
261 UINT16 inq_scan_window;
262 UINT16 inq_scan_period;
263 UINT16 inq_scan_type;
264 UINT16 page_scan_type;
267#define BTM_RMT_NAME_INACTIVE 0
268#define BTM_RMT_NAME_EXT 0x1
269#define BTM_RMT_NAME_SEC 0x2
270#define BTM_RMT_NAME_INQ 0x4
271 BOOLEAN remname_active;
273 tBTM_CMPL_CB *p_inq_cmpl_cb;
274 tBTM_INQ_RESULTS_CB *p_inq_results_cb;
275 tBTM_CMPL_CB *p_inqfilter_cmpl_cb;
276 tBTM_INQ_DB_CHANGE_CB *p_inq_change_cb;
280 TIMER_LIST_ENT inq_timer_ent;
281#if BTM_USE_INQ_RESULTS_FILTER == TRUE
283 UINT16 num_bd_entries;
284 UINT16 max_bd_entries;
290 UINT16 per_min_delay;
291 UINT16 per_max_delay;
292 BOOLEAN inqfilt_active;
293 UINT8 pending_filt_complete_event;
297#define BTM_INQ_INACTIVE_STATE 0
298#define BTM_INQ_CLR_FILT_STATE 1
300#define BTM_INQ_SET_FILT_STATE 2
301#define BTM_INQ_ACTIVE_STATE 3
302#define BTM_INQ_REMNAME_STATE 4
310#define BTM_CLOCK_OFFSET_VALID 0x8000
315#define BTM_SEC_INVALID_HANDLE 0xFFFF
317typedef UINT8 *BTM_BD_NAME_PTR;
324typedef tBTM_SEC_CBACK tBTM_SEC_CALLBACK;
326typedef void (tBTM_SCO_IND_CBACK) (UINT16 sco_inx) ;
329#define BTM_SCO_PKT_TYPE_MASK ( HCI_PKT_TYPES_MASK_HV1 \
330 | HCI_PKT_TYPES_MASK_HV2 \
331 | HCI_PKT_TYPES_MASK_HV3)
334#define BTM_ESCO_PKT_TYPE_MASK ( HCI_ESCO_PKT_TYPES_MASK_HV1 \
335 | HCI_ESCO_PKT_TYPES_MASK_HV2 \
336 | HCI_ESCO_PKT_TYPES_MASK_HV3)
338#define BTM_SCO_2_ESCO(scotype) ((UINT16)(((scotype) & BTM_SCO_PKT_TYPE_MASK) >> 5))
339#define BTM_ESCO_2_SCO(escotype) ((UINT16)(((escotype) & BTM_ESCO_PKT_TYPE_MASK) << 5))
343#define BTM_SCO_SUPPORTED_PKTS_MASK (HCI_ESCO_PKT_TYPES_MASK_HV1 | \
344 HCI_ESCO_PKT_TYPES_MASK_HV2 | \
345 HCI_ESCO_PKT_TYPES_MASK_HV3 | \
346 HCI_ESCO_PKT_TYPES_MASK_EV3 | \
347 HCI_ESCO_PKT_TYPES_MASK_EV4 | \
348 HCI_ESCO_PKT_TYPES_MASK_EV5)
350#define BTM_SCO_EXCEPTION_PKTS_MASK (HCI_ESCO_PKT_TYPES_MASK_NO_2_EV3 | \
351 HCI_ESCO_PKT_TYPES_MASK_NO_3_EV3 | \
352 HCI_ESCO_PKT_TYPES_MASK_NO_2_EV5 | \
353 HCI_ESCO_PKT_TYPES_MASK_NO_3_EV5)
356#define BTM_SCO_ROUTE_UNKNOWN 0xff
361 tBTM_ESCO_CBACK *p_esco_cback;
372#if BTM_SCO_HCI_INCLUDED == TRUE
375 tBTM_SCO_CB *p_conn_cb;
376 tBTM_SCO_CB *p_disc_cb;
380 BOOLEAN rem_bd_known;
387 tBTM_SCO_IND_CBACK *app_sco_ind_cb;
388#if BTM_SCO_HCI_INCLUDED == TRUE
389 tBTM_SCO_DATA_CB *p_data_cb;
390 UINT32 xmit_window_size;
395 UINT16 sco_disc_reason;
396 BOOLEAN esco_supported;
397 tBTM_SCO_TYPE desired_sco_mode;
398 tBTM_SCO_TYPE xfer_sco_type;
400 tBTM_SCO_CODEC_TYPE codec_in_use;
401#if BTM_SCO_HCI_INCLUDED == TRUE
402 tBTM_SCO_ROUTE_TYPE sco_path;
408#if BTM_SCO_INCLUDED == TRUE
409extern void btm_set_sco_ind_cback( tBTM_SCO_IND_CBACK *sco_ind_cb );
411 tBTM_SCO_CB *p_conn_cb, tBTM_SCO_CB *p_disc_cb);
412extern void btm_reject_sco_link(UINT16 sco_inx );
413extern void btm_sco_chk_pend_rolechange (UINT16 hci_handle);
415#define btm_accept_sco_link(sco_inx, p_setup, p_conn_cb, p_disc_cb)
416#define btm_reject_sco_link(sco_inx)
417#define btm_set_sco_ind_cback(sco_ind_cb)
418#define btm_sco_chk_pend_rolechange(hci_handle)
428 UINT32 orig_mx_chan_id;
429 UINT32 term_mx_chan_id;
431 UINT16 security_flags;
433#if (L2CAP_UCD_INCLUDED == TRUE)
434 UINT16 ucd_security_flags;
436#if BTM_SEC_SERVICE_NAME_LEN > 0
437 UINT8 orig_service_name[BTM_SEC_SERVICE_NAME_LEN + 1];
438 UINT8 term_service_name[BTM_SEC_SERVICE_NAME_LEN + 1];
442#if BLE_INCLUDED == TRUE
456 UINT8 local_csrk_sec_level;
459 UINT32 local_counter;
466 tBLE_ADDR_TYPE ble_addr_type;
468 BD_ADDR cur_rand_addr;
471#if SMP_INCLUDED == TRUE
472 tBTM_LE_KEY_TYPE key_type;
484 tBTM_SEC_CALLBACK *p_callback;
487 UINT32 trusted_mask[BTM_SEC_SERVICE_ARRAY_SIZE];
494#define BTM_SEC_AUTHORIZED BTM_SEC_FLAG_AUTHORIZED
495#define BTM_SEC_AUTHENTICATED BTM_SEC_FLAG_AUTHENTICATED
496#define BTM_SEC_ENCRYPTED BTM_SEC_FLAG_ENCRYPTED
497#define BTM_SEC_NAME_KNOWN 0x08
498#define BTM_SEC_LINK_KEY_KNOWN BTM_SEC_FLAG_LKEY_KNOWN
499#define BTM_SEC_LINK_KEY_AUTHED 0x20
500#define BTM_SEC_ROLE_SWITCHED 0x40
501#define BTM_SEC_IN_USE 0x80
503 tBTM_BD_NAME sec_bd_name;
505 BD_FEATURES features;
507#define BTM_SEC_STATE_IDLE 0
508#define BTM_SEC_STATE_AUTHENTICATING 1
509#define BTM_SEC_STATE_ENCRYPTING 2
510#define BTM_SEC_STATE_GETTING_NAME 3
511#define BTM_SEC_STATE_AUTHORIZING 4
512#define BTM_SEC_STATE_SWITCHING_ROLE 5
513#define BTM_SEC_STATE_DISCONNECTING 6
514#define BTM_SEC_STATE_DELAY_FOR_ENC 7
517 BOOLEAN is_originator;
518#if (L2CAP_UCD_INCLUDED == TRUE)
523 UINT16 security_required;
524 BOOLEAN link_key_not_sent;
526 BOOLEAN link_key_changed;
528#define BTM_SM4_UNKNOWN 0x00
529#define BTM_SM4_KNOWN 0x10
530#define BTM_SM4_TRUE 0x11
531#define BTM_SM4_REQ_PEND 0x08
532#define BTM_SM4_UPGRADE 0x04
533#define BTM_SM4_RETRY 0x02
534#define BTM_SM4_DD_ACP 0x20
535#define BTM_SM4_CONN_PEND 0x40
537 tBTM_IO_CAP rmt_io_caps;
538 BOOLEAN rmt_auth_req;
540#if (BLE_INCLUDED == TRUE)
543 tBT_DEVICE_TYPE device_type;
548#if BTM_DISC_DURING_RS == TRUE
549#define BTM_SEC_RS_NOT_PENDING 0
550#define BTM_SEC_RS_PENDING 1
551#define BTM_SEC_DISC_PENDING 2
552 UINT8 rs_disc_pending;
557#define BTM_SEC_IS_SM4(sm) ((BOOLEAN)(BTM_SM4_TRUE == ((sm)&BTM_SM4_TRUE)))
558#define BTM_SEC_IS_SM4_LEGACY(sm) ((BOOLEAN)(BTM_SM4_KNOWN == ((sm)&BTM_SM4_TRUE)))
559#define BTM_SEC_IS_SM4_UNKNOWN(sm) ((BOOLEAN)(BTM_SM4_UNKNOWN == ((sm)&BTM_SM4_TRUE)))
567#if BTM_MAX_LOC_BD_NAME_LEN > 0
568 tBTM_LOC_BD_NAME bd_name;
574 UINT8 def_inq_scan_mode;
577#if BTM_PWR_MGR_INCLUDED == TRUE
580 BTM_PM_ST_ACTIVE = BTM_PM_STS_ACTIVE,
581 BTM_PM_ST_HOLD = BTM_PM_STS_HOLD,
582 BTM_PM_ST_SNIFF = BTM_PM_STS_SNIFF,
583 BTM_PM_ST_PARK = BTM_PM_STS_PARK,
584 BTM_PM_ST_PENDING = BTM_PM_STS_PENDING
586typedef UINT8 tBTM_PM_STATE;
594typedef UINT8 tBTM_PM_EVENT;
627#if (BTM_SSR_INCLUDED == TRUE)
636#define BTM_PM_REC_NOT_USED 0
639 tBTM_PM_STATUS_CBACK *cback;
647 BTM_BLI_ACL_DOWN_EVT,
649 BTM_BLI_PAGE_DONE_EVT,
651 BTM_BLI_INQ_CANCEL_EVT,
654typedef UINT8 tBTM_BLI_EVENT;
660 BTM_PAIR_STATE_GET_REM_NAME,
661 BTM_PAIR_STATE_WAIT_PIN_REQ,
662 BTM_PAIR_STATE_WAIT_LOCAL_PIN,
663 BTM_PAIR_STATE_WAIT_NUMERIC_CONFIRM,
664 BTM_PAIR_STATE_KEY_ENTRY,
665 BTM_PAIR_STATE_WAIT_LOCAL_OOB_RSP,
666 BTM_PAIR_STATE_WAIT_LOCAL_IOCAPS,
667 BTM_PAIR_STATE_INCOMING_SSP,
668 BTM_PAIR_STATE_WAIT_AUTH_COMPLETE,
669 BTM_PAIR_STATE_WAIT_DISCONNECT
671typedef UINT8 tBTM_PAIRING_STATE;
673#define BTM_PAIR_FLAGS_WE_STARTED_DD 0x01
674#define BTM_PAIR_FLAGS_PEER_STARTED_DD 0x02
675#define BTM_PAIR_FLAGS_DISC_WHEN_DONE 0x04
676#define BTM_PAIR_FLAGS_PIN_REQD 0x08
677#define BTM_PAIR_FLAGS_PRE_FETCH_PIN 0x10
678#define BTM_PAIR_FLAGS_REJECTED_CONNECT 0x20
686 tBTM_SEC_CALLBACK *p_callback;
692#if (L2CAP_UCD_INCLUDED == TRUE)
694#define CONN_ORIENT_TERM 0x00
695#define CONN_ORIENT_ORIG 0x01
696#define CONNLESS_TERM 0x02
697#define CONNLESS_ORIG 0x03
698#define CONNECTION_TYPE_ORIG_MASK 0x01
699#define CONNECTION_TYPE_CONNLESS_MASK 0x02
700typedef UINT8 CONNECTION_TYPE;
704#define CONN_ORIENT_TERM FALSE
705#define CONN_ORIENT_ORIG TRUE
706typedef BOOLEAN CONNECTION_TYPE;
713#define BTM_STATE_BUFFER_SIZE 5
715#if (BTM_PCM2_INCLUDED == TRUE)
720 BTM_PCM2_ACT_SENT_ARC,
722 BTM_PCM2_WRITE_PARAM,
724typedef UINT8 tBTM_PCM2_ACTION;
735#if( RFCOMM_INCLUDED==TRUE)
736 UINT8 btm_scn[BTM_MAX_SCN];
738 UINT16 btm_def_link_policy;
739 UINT16 btm_def_link_super_tout;
741#if (defined(BTM_BUSY_LEVEL_CHANGE_INCLUDED) && BTM_BUSY_LEVEL_CHANGE_INCLUDED == TRUE)
742 tBTM_BL_EVENT_MASK bl_evt_mask;
743 tBTM_BL_CHANGE_CB *p_bl_changed_cb;
745 tBTM_ACL_DB_CHANGE_CB *p_acl_changed_cb;
748 tBTM_LSTO_CBACK *p_lsto_cback;
753#if BTM_PWR_MGR_INCLUDED == TRUE
768#if (BLE_INCLUDED == TRUE)
778 UINT16 btm_acl_pkt_types_supported;
779 UINT16 btm_sco_pkt_types_supported;
786 tBTM_FILTER_CB *p_inq_filter_cb;
792#if BTM_SCO_INCLUDED == TRUE
801#define BTM_SEC_MAX_RMT_NAME_CALLBACKS 2
802 tBTM_RMT_NAME_CALLBACK *p_rmt_name_callback[BTM_SEC_MAX_RMT_NAME_CALLBACKS];
804 tBTM_FILTER_CB *p_conn_filter_cb;
808 TIMER_LIST_ENT sec_collision_tle;
809 UINT32 collision_start_time;
810 UINT32 max_collision_delay;
811 UINT32 dev_rec_count;
813 BOOLEAN pairing_disabled;
814 BOOLEAN connect_only_paired;
815 BOOLEAN security_mode_changed;
816 BOOLEAN pin_type_changed;
817 BOOLEAN sec_req_pending;
819#ifdef PORCHE_PAIRING_CONFLICT
820 UINT8 pin_code_len_saved;
826 tBTM_PAIRING_STATE pairing_state;
829 TIMER_LIST_ENT pairing_tle;
835 tBTM_MKEY_CALLBACK *mkey_cback;
837 BD_ADDR connecting_bda;
838 DEV_CLASS connecting_dc;
840 UINT8 first_disabled_channel;
841 UINT8 last_disabled_channel;
843 UINT8 acl_disc_reason;
845#if (defined(BTM_BUSY_LEVEL_CHANGE_INCLUDED) && BTM_BUSY_LEVEL_CHANGE_INCLUDED == TRUE)
856#if (!defined(BT_TRACE_VERBOSE) || (BT_TRACE_VERBOSE == FALSE))
857 char state_temp_buffer[BTM_STATE_BUFFER_SIZE];
860#if (defined(BTM_PCM2_INCLUDED) && BTM_PCM2_INCLUDED == TRUE)
862 UINT8 pcm2_params[BRCM_PCM2_SETUP_WRITE_SIZE];
863 tBTM_PCM2_ACTION pcm2_action;
874#if BTM_DYNAMIC_MEMORY == FALSE
877BTM_API
extern tBTM_CB *btm_cb_ptr;
878#define btm_cb (*btm_cb_ptr)
884extern void btm_init (
void);
889extern tBTM_STATUS btm_initiate_rem_name (BD_ADDR remote_bda,
891 UINT8 origin, UINT32 timeout,
894extern void btm_process_remote_name (BD_ADDR bda, BD_NAME name, UINT16 evt_len,
896extern void btm_inq_rmt_name_failed(
void);
899extern void btm_clr_inq_db (BD_ADDR p_bda);
900extern void btm_inq_db_init (
void);
901extern void btm_process_inq_results (UINT8 *p, UINT8 inq_res_mode);
902extern void btm_process_inq_complete (UINT8 status, UINT8 mode);
903extern void btm_event_filter_complete (UINT8 *p);
904extern void btm_inq_stop_on_ssp(
void);
905extern void btm_inq_clear_ssp(
void);
906extern tINQ_DB_ENT *btm_inq_db_find (BD_ADDR p_bda);
907extern BOOLEAN btm_inq_find_bdaddr (BD_ADDR p_bda);
909#if (BTM_EIR_CLIENT_INCLUDED == TRUE)
910extern BOOLEAN btm_lookup_eir(BD_ADDR_PTR p_rem_addr);
916extern void btm_acl_init (
void);
917extern void btm_acl_timeout (TIMER_LIST_ENT *p_tle);
918extern void btm_acl_created (BD_ADDR bda, DEV_CLASS dc, BD_NAME bdn,
919 UINT16 hci_handle, UINT8 link_role, UINT8 is_le_link);
920extern void btm_acl_removed (BD_ADDR bda);
921extern void btm_acl_device_down (
void);
922extern void btm_acl_update_busy_level (tBTM_BLI_EVENT event);
923extern void btm_acl_link_key_change (UINT16 handle, UINT8 status);
925extern void btm_cont_rswitch_or_chglinkkey (
tACL_CONN *p,
929extern UINT8 btm_handle_to_acl_index (UINT16 hci_handle);
930extern void btm_read_link_policy_complete (UINT8 *p);
931extern void btm_read_rssi_complete (UINT8 *p);
932extern void btm_read_tx_power_complete (UINT8 *p, BOOLEAN is_ble);
933extern void btm_read_link_quality_complete (UINT8 *p);
934extern tBTM_STATUS btm_set_packet_types (
tACL_CONN *p, UINT16 pkt_types);
935extern void btm_process_clk_off_comp_evt (UINT16 hci_handle, UINT16 clock_offset);
936extern void btm_acl_role_changed (UINT8 hci_status, BD_ADDR bd_addr, UINT8 new_role);
937extern void btm_acl_encrypt_change (UINT16 handle, UINT8 status, UINT8 encr_enable);
938BTM_API
extern UINT16 btm_get_acl_disc_reason_code (
void);
939BTM_API
extern tBTM_STATUS btm_remove_acl (BD_ADDR bd_addr);
940extern void btm_read_remote_features_complete (UINT8 *p);
941extern void btm_read_remote_ext_features_complete (UINT8 *p);
942extern void btm_read_remote_ext_features_failed (UINT8 status);
943extern void btm_read_remote_version_complete (UINT8 *p);
945extern void btm_acl_chk_peer_pkt_type_support (
tACL_CONN *p, UINT16 *p_pkt_type);
948extern UINT16 btm_get_max_packet_size (BD_ADDR addr);
949extern tACL_CONN *btm_bda_to_acl (BD_ADDR bda);
950extern BOOLEAN btm_acl_notif_conn_collision (BD_ADDR bda);
952#if BTM_PWR_MGR_INCLUDED == FALSE
953extern void btm_process_mode_change (UINT8 hci_status, UINT16 hci_handle, UINT8 mode,
960extern void btm_pm_reset(
void);
961extern void btm_pm_sm_alloc(UINT8 ind);
962extern void btm_pm_proc_cmd_status(UINT8 status);
963extern void btm_pm_proc_mode_change (UINT8 hci_status, UINT16 hci_handle, UINT8 mode,
965extern void btm_pm_proc_ssr_evt (UINT8 *p, UINT16 evt_len);
966#if BTM_SCO_INCLUDED == TRUE
967extern void btm_sco_chk_pend_unpark (UINT8 hci_status, UINT16 hci_handle);
969#define btm_sco_chk_pend_unpark(hci_status, hci_handle)
972extern void btm_qos_setup_complete (UINT8 status, UINT16 handle,
FLOW_SPEC *p_flow);
978extern void btm_sco_init (
void);
979extern void btm_sco_connected (UINT8 hci_status, BD_ADDR bda, UINT16 hci_handle,
981extern void btm_esco_proc_conn_chg (UINT8 status, UINT16 handle, UINT8 tx_interval,
982 UINT8 retrans_window, UINT16 rx_pkt_len,
984extern void btm_sco_conn_req (BD_ADDR bda, DEV_CLASS dev_class, UINT8 link_type);
985extern void btm_sco_removed (UINT16 hci_handle, UINT8 reason);
986extern void btm_sco_acl_removed (BD_ADDR bda);
987extern void btm_route_sco_data (
BT_HDR *p_msg);
988extern BOOLEAN btm_is_sco_active (UINT16 handle);
989extern void btm_remove_sco_links (BD_ADDR bda);
990extern BOOLEAN btm_is_sco_active_by_bdaddr (BD_ADDR remote_bda);
993extern UINT16 btm_find_scb_by_handle (UINT16 handle);
994extern void btm_sco_flush_sco_data(UINT16 sco_inx);
999extern void btm_dev_init (
void);
1000extern void btm_dev_absent (
void);
1001extern void btm_dev_timeout (TIMER_LIST_ENT *p_tle);
1002extern void btm_reset_complete (
void);
1003extern void btm_read_local_version_complete (UINT8 *p, UINT16 evt_len);
1004extern void btm_read_hci_buf_size_complete (UINT8 *p, UINT16 evt_len);
1005extern void btm_read_local_features_complete (UINT8 *p, UINT16 evt_len);
1006extern void btm_read_local_name_complete (UINT8 *p, UINT16 evt_len);
1007extern void btm_read_local_addr_complete (UINT8 *p, UINT16 evt_len);
1008extern void btm_get_local_features (
void);
1010#if (BLE_INCLUDED == TRUE)
1011extern void btm_read_ble_buf_size_complete (UINT8 *p, UINT16 evt_len);
1012extern void btm_read_white_list_size_complete(UINT8 *p, UINT16 evt_len);
1013extern void btm_ble_add_2_white_list_complete(UINT8 *p, UINT16 evt_len);
1014extern void btm_ble_remove_from_white_list_complete(UINT8 *p, UINT16 evt_len);
1015extern void btm_ble_clear_white_list_complete(UINT8 *p, UINT16 evt_len);
1019extern void btm_vsc_complete (UINT8 *p, UINT16 cc_opcode, UINT16 evt_len,
1020 tBTM_CMPL_CB *p_vsc_cplt_cback);
1021extern void btm_inq_db_reset (
void);
1022extern void btm_vendor_specific_evt (UINT8 *p, UINT8 evt_len);
1023extern UINT8 btm_get_hci_version (
void);
1024extern void btm_read_stored_link_key_complete (UINT8 *p);
1025extern void btm_write_stored_link_key_complete (UINT8 *p);
1026extern void btm_delete_stored_link_key_complete (UINT8 *p);
1028extern void btm_report_device_status (tBTM_DEV_STATUS status);
1034extern BOOLEAN btm_dev_support_switch (BD_ADDR bd_addr);
1035extern UINT8 btm_get_voice_coding_support (
void);
1046extern BOOLEAN btm_dev_support_switch (BD_ADDR bd_addr);
1047extern tBTM_STATUS btm_sec_l2cap_access_req (BD_ADDR bd_addr, UINT16 psm,
1048 UINT16 handle, CONNECTION_TYPE conn_type,
1049 tBTM_SEC_CALLBACK *p_callback,
void *p_ref_data);
1050extern tBTM_STATUS btm_sec_mx_access_request (BD_ADDR bd_addr, UINT16 psm, BOOLEAN is_originator,
1051 UINT32 mx_proto_id, UINT32 mx_chan_id,
1052 tBTM_SEC_CALLBACK *p_callback,
void *p_ref_data);
1053extern void btm_sec_conn_req (UINT8 *bda, UINT8 *dc);
1054extern void btm_create_conn_cancel_complete (UINT8 *p);
1055extern void btm_proc_lsto_evt(UINT16 handle, UINT16 timeout);
1056extern void btm_read_linq_tx_power_complete (UINT8 *p);
1058extern void btm_sec_init (UINT8 sec_mode);
1059extern void btm_sec_dev_reset (
void);
1060extern void btm_sec_abort_access_req (BD_ADDR bd_addr);
1061extern void btm_sec_auth_complete (UINT16 handle, UINT8 status);
1062extern void btm_sec_mkey_comp_event (UINT16 handle, UINT8 status, UINT8 key_flg);
1063extern void btm_sec_encrypt_change (UINT16 handle, UINT8 status, UINT8 encr_enable);
1064extern void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode);
1065extern tBTM_STATUS btm_sec_disconnect (UINT16 handle, UINT8 reason);
1066extern void btm_sec_disconnected (UINT16 handle, UINT8 reason);
1067extern void btm_sec_rmt_name_request_complete (UINT8 *bd_addr, UINT8 *bd_name, UINT8 status);
1068extern void btm_sec_rmt_host_support_feat_evt (UINT8 *p);
1069extern void btm_io_capabilities_req (UINT8 *p);
1070extern void btm_io_capabilities_rsp (UINT8 *p);
1071extern void btm_proc_sp_req_evt (tBTM_SP_EVT event, UINT8 *p);
1072extern void btm_keypress_notif_evt (UINT8 *p);
1073extern void btm_simple_pair_complete (UINT8 *p);
1074extern void btm_sec_link_key_notification (UINT8 *p_bda, UINT8 *p_link_key, UINT8 key_type);
1075extern void btm_sec_link_key_request (UINT8 *p_bda);
1076extern void btm_sec_pin_code_request (UINT8 *p_bda);
1077extern void btm_sec_update_clock_offset (UINT16 handle, UINT16 clock_offset);
1078extern void btm_sec_dev_rec_cback_event (
tBTM_SEC_DEV_REC *p_dev_rec, UINT8 res);
1080#if BLE_INCLUDED == TRUE
1082extern BOOLEAN btm_sec_find_bonded_dev (UINT8 start_idx, UINT8 *p_found_idx,
tBTM_SEC_DEV_REC *p_rec);
1083extern BOOLEAN btm_sec_is_a_bonded_dev (BD_ADDR bda);
1086extern tINQ_DB_ENT *btm_inq_db_new (BD_ADDR p_bda);
1088#if BTM_OOB_INCLUDED == TRUE
1089extern void btm_rem_oob_req (UINT8 *p);
1090extern void btm_read_local_oob_complete (UINT8 *p);
1092#define btm_rem_oob_req(p)
1093#define btm_read_local_oob_complete(p)
1096extern void btm_acl_resubmit_page (
void);
1097extern void btm_acl_reset_paging (
void);
1098extern void btm_acl_paging (
BT_HDR *p, BD_ADDR dest);
1099extern void btm_acl_set_discing (BOOLEAN discing);
1100extern UINT8 btm_sec_clr_service_by_psm (UINT16 psm);
1103extern void btm_brcm_feat_init(
void);
1104extern void btm_vs_reset_complete (
void);
1105extern void btm_brcm_arc_init (
void);