42#if (BLE_INCLUDED == TRUE && (defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE))
43 #include "bta_gatt_api.h"
53#define BTA_COPY_DEVICE_CLASS(coddst, codsrc) {((UINT8 *)(coddst))[0] = ((UINT8 *)(codsrc))[0]; \
54 ((UINT8 *)(coddst))[1] = ((UINT8 *)(codsrc))[1]; \
55 ((UINT8 *)(coddst))[2] = ((UINT8 *)(codsrc))[2];}
58#define BTA_DM_MSG_LEN 50
60#define BTA_SERVICE_ID_TO_SERVICE_MASK(id) (1 << (id))
66 BTA_DM_API_ENABLE_EVT = BTA_SYS_EVT_START(BTA_ID_DM),
67 BTA_DM_API_DISABLE_EVT,
68 BTA_DM_API_SET_NAME_EVT,
69 BTA_DM_API_SET_VISIBILITY_EVT,
70 BTA_DM_API_SET_AFH_CHANNELS_EVT,
71 BTA_API_DM_SIG_STRENGTH_EVT,
72 BTA_DM_API_VENDOR_SPECIFIC_COMMAND_EVT,
73 BTA_DM_API_TX_INQPWR_EVT,
74 BTA_DM_ACL_CHANGE_EVT,
75 BTA_DM_API_ADD_DEVICE_EVT,
79 BTA_DM_API_BOND_CANCEL_EVT,
80 BTA_DM_API_PIN_REPLY_EVT,
81 BTA_DM_API_LINK_POLICY_EVT,
82 BTA_DM_API_AUTH_REPLY_EVT,
85 BTA_DM_PM_BTM_STATUS_EVT,
89 BTA_DM_API_CONFIRM_EVT,
91 BTA_DM_API_SET_ENCRYPTION_EVT,
93#if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE)
94 BTA_DM_API_PASKY_CANCEL_EVT,
96#if (BTM_OOB_INCLUDED == TRUE)
97 BTA_DM_API_LOC_OOB_EVT,
99 BTA_DM_CI_RMT_OOB_EVT,
102 BTA_DM_API_REMOVE_DEVICE_EVT,
104#if BLE_INCLUDED == TRUE
105 BTA_DM_API_ADD_BLEKEY_EVT,
106 BTA_DM_API_ADD_BLEDEVICE_EVT,
107 BTA_DM_API_BLE_PASSKEY_REPLY_EVT,
108 BTA_DM_API_BLE_SEC_GRANT_EVT,
109 BTA_DM_API_BLE_SET_BG_CONN_TYPE,
110 BTA_DM_API_BLE_CONN_PARAM_EVT,
111 BTA_DM_API_BLE_SCAN_PARAM_EVT,
114#if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0)
115 BTA_DM_API_UPDATE_EIR_UUID_EVT,
117#if (BTM_EIR_SERVER_INCLUDED == TRUE)
118 BTA_DM_API_SET_EIR_CONFIG_EVT,
121 BTA_DM_API_ENABLE_TEST_MODE_EVT,
122 BTA_DM_API_DISABLE_TEST_MODE_EVT,
123 BTA_DM_API_EXECUTE_CBACK_EVT,
124 BTA_DM_API_SET_AFH_CHANNEL_ASSESMENT_EVT,
133 BTA_DM_API_SEARCH_EVT = BTA_SYS_EVT_START(BTA_ID_DM_SEARCH),
134 BTA_DM_API_SEARCH_CANCEL_EVT,
135 BTA_DM_API_DISCOVER_EVT,
136 BTA_DM_INQUIRY_CMPL_EVT,
137 BTA_DM_REMT_NAME_EVT,
138 BTA_DM_SDP_RESULT_EVT,
139 BTA_DM_SEARCH_CMPL_EVT,
140 BTA_DM_DISCOVERY_RESULT_EVT,
141 BTA_DM_API_DI_DISCOVER_EVT
149 tBTA_DM_SEC_CBACK *p_sec_cback;
156 char name[BD_NAME_LEN];
163 tBTA_DM_DISC disc_mode;
164 tBTA_DM_CONN conn_mode;
166 UINT8 conn_paired_only;
184 tBTA_VENDOR_CMPL_CBACK *p_cback;
194typedef UINT8 tBTA_DM_RS_RES;
201 tBTA_SERVICE_MASK services;
202 tBTA_DM_SEARCH_CBACK * p_cback;
203 tBTA_DM_RS_RES rs_res;
204#if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE
215 tBTA_SERVICE_MASK services;
216 tBTA_DM_SEARCH_CBACK * p_cback;
218#if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE
230 tBTA_DISCOVERY_DB *p_sdp_db;
232 tBTA_DM_SEARCH_CBACK * p_cback;
256 UINT8 p_pin[PIN_CODE_LEN];
273 tBTA_SERVICE_ID service;
274 tBTA_AUTH_RESP response;
304 tBTA_OOB_DATA oob_data;
305 tBTA_AUTH_REQ auth_req;
351 tBTA_SIG_STRENGTH_MASK mask;
381 tBTM_PM_STATUS status;
403 tBTA_SERVICE_MASK tm;
407 BOOLEAN link_key_known;
410 BD_FEATURES features;
425 tBTA_DM_EXEC_CBACK *p_exec_cback;
432 tBTA_DM_ENCRYPT_CBACK *p_callback;
433 tBTA_DM_BLE_SEC_ACT sec_act;
437#if BLE_INCLUDED == TRUE
443 tBTA_LE_KEY_TYPE key_type;
451 tBT_DEVICE_TYPE dev_type ;
452 tBLE_ADDR_TYPE addr_type;
468 tBTA_DM_BLE_SEC_GRANT res;
475 tBTA_DM_BLE_CONN_TYPE bg_conn_type;
476 tBTA_DM_BLE_SEL_CBACK *p_select_cback;
486 UINT16 supervision_tout;
487 UINT16 slave_latency;
504 BOOLEAN enable_or_disable;
507#if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0)
514}tBTA_DM_API_UPDATE_EIR_UUID;
517#if (BTM_EIR_SERVER_INCLUDED == TRUE)
588#if BLE_INCLUDED == TRUE
600#if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0)
601 tBTA_DM_API_UPDATE_EIR_UUID update_eir_uuid;
603#if (BTM_EIR_SERVER_INCLUDED == TRUE)
610#define BTA_DM_NUM_PEER_DEVICE 7
612#define BTA_DM_NOT_CONNECTED 0
613#define BTA_DM_CONNECTED 1
614#define BTA_DM_UNPAIRING 2
615typedef UINT8 tBTA_DM_CONN_STATE;
618#define BTA_DM_DI_NONE 0x00
619#define BTA_DM_DI_USE_SSR 0x10
620#define BTA_DM_DI_AV_ACTIVE 0x20
621#define BTA_DM_DI_SET_SNIFF 0x01
622#define BTA_DM_DI_INT_SNIFF 0x02
623#define BTA_DM_DI_ACP_SNIFF 0x04
624typedef UINT8 tBTA_DM_DEV_INFO;
630 tBTA_DM_CONN_STATE conn_state;
631 tBTA_PREF_ROLES pref_role;
633 tBTA_DM_DEV_INFO info;
634#if (BTM_SSR_INCLUDED == TRUE)
635 tBTM_PM_STATUS prev_low;
637 tBTA_DM_PM_ACTTION pm_mode_attempted;
638 tBTA_DM_PM_ACTTION pm_mode_failed;
659 tBTA_SYS_CONN_STATUS state;
664#define BTA_DM_NUM_CONN_SRVS 5
676 TIMER_LIST_ENT timer;
684#define BTA_DM_NUM_PM_TIMER 3
689 BOOLEAN is_bta_dm_active;
691 tBTA_DM_SEC_CBACK *p_sec_cback;
692 TIMER_LIST_ENT signal_strength_timer;
693 tBTA_SIG_STRENGTH_MASK signal_strength_mask;
695 UINT16 signal_strength_period;
697 TIMER_LIST_ENT disable_timer;
698 UINT32 wbt_sdp_handle;
700 UINT8 num_master_only;
703 UINT32 role_policy_mask;
707 BOOLEAN disable_pair_mode;
708 BOOLEAN conn_paired_only;
710 UINT16 page_scan_interval;
711 UINT16 page_scan_window;
712 UINT16 inquiry_scan_interval;
713 UINT16 inquiry_scan_window;
717 DEV_CLASS pin_dev_class;
718 tBTA_DM_SEC_EVT pin_evt;
721#if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )
723 TIMER_LIST_ENT app_ready_timer;
724 UINT32 eir_uuid[BTM_EIR_SERVICE_ARRAY_SIZE];
725#if (BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0)
726 tBT_UUID custom_uuid[BTA_EIR_SERVER_NUM_CUSTOM_UUID];
731 tBTA_DM_ENCRYPT_CBACK *p_encrypt_cback;
732 tBTA_DM_BLE_SEC_ACT sec_act;
733 TIMER_LIST_ENT switch_delay_timer;
737#ifndef BTA_DM_SDP_DB_SIZE
738#define BTA_DM_SDP_DB_SIZE 250
745 tBTA_DM_SEARCH_CBACK * p_search_cback;
747 tBTA_SERVICE_MASK services;
748 tBTA_SERVICE_MASK services_to_search;
749 tBTA_SERVICE_MASK services_found;
753 BOOLEAN name_discover_done;
754 char peer_name[BD_NAME_LEN];
755 TIMER_LIST_ENT search_timer;
764#if ((defined BLE_INCLUDED) && (BLE_INCLUDED == TRUE))
765#if ((defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE))
766 tBTA_GATTC_IF client_if;
769 UINT8 uuid_to_search;
770 BOOLEAN gatt_disc_active;
772 UINT8 * p_ble_rawdata;
786 UINT32 di_handle[BTA_DI_NUM_MAX];
794 BTA_DM_SEARCH_ACTIVE,
795 BTA_DM_SEARCH_CANCELLING,
796 BTA_DM_DISCOVER_ACTIVE
805 UINT16 policy_settings;
808 BOOLEAN avoid_scatter;
812extern const UINT32 bta_service_id_to_btm_srv_id_lkup_tbl[];
818#define BTA_ALL_APP_ID 0xff
847} tBTA_DM_COMPRESS_CFG;
849extern tBTA_DM_COMPRESS_CFG* p_bta_dm_compress_cfg;
855 tBTA_DM_PM_ACTTION power_mode;
864#if (BTM_SSR_INCLUDED == TRUE)
881 UINT16 lmp_sub_version;
888#if (BTM_SSR_INCLUDED == TRUE)
892#if ( BTM_EIR_SERVER_INCLUDED == TRUE )
899#if BTA_DYNAMIC_MEMORY == FALSE
903#define bta_dm_cb (*bta_dm_cb_ptr)
907#if BTA_DYNAMIC_MEMORY == FALSE
911#define bta_dm_search_cb (*bta_dm_search_cb_ptr)
915#if BTA_DYNAMIC_MEMORY == FALSE
919#define bta_dm_di_cb (*bta_dm_di_cb_ptr)
922extern BOOLEAN bta_dm_sm_execute(
BT_HDR *p_msg);
923extern void bta_dm_sm_disable(
void );
924extern BOOLEAN bta_dm_search_sm_execute(
BT_HDR *p_msg);
925extern void bta_dm_search_sm_disable(
void );
930extern void bta_dm_set_dev_name (
tBTA_DM_MSG *p_data);
931extern void bta_dm_set_visibility (
tBTA_DM_MSG *p_data);
932extern void bta_dm_set_afhchannels (
tBTA_DM_MSG *p_data);
933extern void bta_dm_vendor_spec_command(
tBTA_DM_MSG *p_data);
935extern void bta_dm_bond_cancel (
tBTA_DM_MSG *p_data);
937extern void bta_dm_link_policy (
tBTA_DM_MSG *p_data);
938extern void bta_dm_auth_reply (
tBTA_DM_MSG *p_data);
939extern void bta_dm_signal_strength(
tBTA_DM_MSG *p_data);
940extern void bta_dm_tx_inqpower(
tBTA_DM_MSG *p_data);
942extern void bta_dm_add_device (
tBTA_DM_MSG *p_data);
943extern void bta_dm_remove_device (
tBTA_DM_MSG *p_data);
946extern void bta_dm_pm_btm_status(
tBTA_DM_MSG *p_data);
948extern void bta_dm_add_ampkey (
tBTA_DM_MSG *p_data);
950#if BLE_INCLUDED == TRUE
951extern void bta_dm_add_blekey (
tBTA_DM_MSG *p_data);
952extern void bta_dm_add_ble_device (
tBTA_DM_MSG *p_data);
953extern void bta_dm_ble_passkey_reply (
tBTA_DM_MSG *p_data);
954extern void bta_dm_security_grant (
tBTA_DM_MSG *p_data);
955extern void bta_dm_ble_set_bg_conn_type (
tBTA_DM_MSG *p_data);
956extern void bta_dm_ble_set_conn_params (
tBTA_DM_MSG *p_data);
957extern void bta_dm_ble_set_scan_params (
tBTA_DM_MSG *p_data);
959extern void bta_dm_set_encryption(
tBTA_DM_MSG *p_data);
961extern void bta_dm_passkey_cancel(
tBTA_DM_MSG *p_data);
962#if (BTM_OOB_INCLUDED == TRUE)
964extern void bta_dm_ci_io_req_act(
tBTA_DM_MSG *p_data);
965extern void bta_dm_ci_rmt_oob_act(
tBTA_DM_MSG *p_data);
968extern void bta_dm_init_pm(
void);
969extern void bta_dm_disable_pm(
void);
971extern void bta_dm_search_start (
tBTA_DM_MSG *p_data);
972extern void bta_dm_search_cancel (
tBTA_DM_MSG *p_data);
977extern void bta_dm_sdp_result (
tBTA_DM_MSG *p_data);
978extern void bta_dm_search_cmpl (
tBTA_DM_MSG *p_data);
979extern void bta_dm_free_sdp_db (
tBTA_DM_MSG *p_data);
980extern void bta_dm_disc_result (
tBTA_DM_MSG *p_data);
981extern void bta_dm_search_result (
tBTA_DM_MSG *p_data);
982extern void bta_dm_discovery_cmpl (
tBTA_DM_MSG *p_data);
983extern void bta_dm_queue_search (
tBTA_DM_MSG *p_data);
984extern void bta_dm_queue_disc (
tBTA_DM_MSG *p_data);
985extern void bta_dm_search_clear_queue (
tBTA_DM_MSG *p_data);
986extern void bta_dm_search_cancel_cmpl (
tBTA_DM_MSG *p_data);
987extern void bta_dm_search_cancel_notify (
tBTA_DM_MSG *p_data);
988extern void bta_dm_search_cancel_transac_cmpl(
tBTA_DM_MSG *p_data);
989extern void bta_dm_disc_rmt_name (
tBTA_DM_MSG *p_data);
991extern void bta_dm_immediate_disable(
void);
993extern void bta_dm_pm_active(BD_ADDR peer_addr);
995#if ( BTM_EIR_SERVER_INCLUDED == TRUE )
996void bta_dm_eir_update_uuid(UINT16 uuid16, BOOLEAN adding);
998#define bta_dm_eir_update_uuid(x, y)
1001#if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0)
1002extern void bta_dm_update_eir_uuid (
tBTA_DM_MSG *p_data);
1004#if (BTM_EIR_SERVER_INCLUDED == TRUE)
1005extern void bta_dm_set_eir_config (
tBTA_DM_MSG *p_data);
1007extern void bta_dm_enable_test_mode(
tBTA_DM_MSG *p_data);
1008extern void bta_dm_disable_test_mode(
tBTA_DM_MSG *p_data);
1009extern void bta_dm_execute_callback(
tBTA_DM_MSG *p_data);
1011extern void bta_dm_set_afh_channel_assesment(
tBTA_DM_MSG *p_data);