1 /* 2 * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef __BTC_DM_H__ 8 #define __BTC_DM_H__ 9 10 #include "btc/btc_task.h" 11 #include "esp_bt_defs.h" 12 #include "bta/bta_api.h" 13 14 typedef enum { 15 BTC_DM_SEC_ACT 16 } btc_dm_sec_act_t; 17 18 /* btc_dm_args_t */ 19 typedef union { 20 //BTC_DM_SEC_ACT 21 tBTA_DM_SEC sec; 22 } btc_dm_sec_args_t; 23 24 typedef struct 25 { 26 bool is_penc_key_rcvd; 27 tBTM_LE_PENC_KEYS penc_key; /* received peer encryption key */ 28 bool is_pcsrk_key_rcvd; 29 tBTM_LE_PCSRK_KEYS pcsrk_key; /* received peer device SRK */ 30 bool is_pid_key_rcvd; 31 tBTM_LE_PID_KEYS pid_key; /* peer device ID key */ 32 bool is_lenc_key_rcvd; 33 tBTM_LE_LENC_KEYS lenc_key; /* local encryption reproduction keys LTK = = d1(ER,DIV,0)*/ 34 bool is_lcsrk_key_rcvd; 35 tBTM_LE_LCSRK_KEYS lcsrk_key; /* local device CSRK = d1(ER,DIV,1)*/ 36 bool is_lidk_key_rcvd; /* local identity key received */ 37 } btc_dm_ble_cb_t; 38 39 typedef struct 40 { 41 bt_bdaddr_t static_bdaddr; 42 BD_ADDR bd_addr; 43 btc_dm_ble_cb_t ble; 44 } btc_dm_pairing_cb_t; 45 46 typedef struct 47 { 48 uint8_t ir[BT_OCTET16_LEN]; 49 uint8_t irk[BT_OCTET16_LEN]; 50 uint8_t dhk[BT_OCTET16_LEN]; 51 } btc_dm_local_key_id_t; 52 53 typedef struct 54 { 55 bool is_er_rcvd; 56 uint8_t er[BT_OCTET16_LEN]; 57 bool is_id_keys_rcvd; 58 btc_dm_local_key_id_t id_keys; /* ID kyes */ 59 } btc_dm_local_key_cb_t; 60 61 typedef struct 62 { 63 tBTA_SERVICE_MASK btc_enabled_services; 64 #if (SMP_INCLUDED == TRUE) 65 btc_dm_pairing_cb_t pairing_cb; 66 btc_dm_local_key_cb_t ble_local_key_cb; 67 #endif 68 } btc_dm_cb_t; 69 70 #if BTC_DYNAMIC_MEMORY == FALSE 71 extern btc_dm_cb_t btc_dm_cb; 72 #else 73 extern btc_dm_cb_t *btc_dm_cb_ptr; 74 #define btc_dm_cb (*btc_dm_cb_ptr) 75 #endif 76 77 // void btc_dm_call_handler(btc_msg_t *msg); 78 void btc_dm_sec_evt(tBTA_DM_SEC_EVT event, tBTA_DM_SEC *data); 79 void btc_dm_sec_cb_handler(btc_msg_t *msg); 80 void btc_dm_sec_arg_deep_copy(btc_msg_t *msg, void *dst, void *src); 81 82 bt_status_t btc_dm_enable_service(tBTA_SERVICE_ID service_id); 83 bt_status_t btc_dm_disable_service(tBTA_SERVICE_ID service_id); 84 85 #if (SMP_INCLUDED == TRUE) 86 void btc_dm_load_ble_local_keys(void); 87 88 void btc_dm_get_ble_local_keys(tBTA_DM_BLE_LOCAL_KEY_MASK *p_key_mask, BT_OCTET16 er, 89 tBTA_BLE_LOCAL_ID_KEYS *p_id_keys); 90 #endif 91 92 #endif /* __BTC_DM_H__ */ 93