#ifndef __ESP_SDP_API_H__ #define __ESP_SDP_API_H__ #include #include "esp_err.h" #include "esp_bt_defs.h" #include "bta_sdp_api.h" #include "bt_sdp.h" #define BT_SDP_STAT_SUCCESS BTA_SDP_SUCCESS #define BT_SDP_STAT_FAILURE BTA_SDP_FAILURE #define BT_SDP_STAT_BUSY BTA_SDP_BUSY #define BT_SDP_ENABLE_EVT BTA_SDP_ENABLE_EVT #define BT_SDP_SEARCH_EVT BTA_SDP_SEARCH_EVT #define BT_SDP_SEARCH_COMP_EVT BTA_SDP_SEARCH_COMP_EVT #define BT_SDP_CREATE_RECORD_USER_EVT BTA_SDP_CREATE_RECORD_USER_EVT #define BT_SDP_REMOVE_RECORD_USER_EVT BTA_SDP_REMOVE_RECORD_USER_EVT #define BT_SDP_MAX_EVT BTA_SDP_MAX_EVT #define BT_SDP_MAX_RECORDS BTA_SDP_MAX_RECORDS typedef tBTA_SDP_STATUS bt_sdp_status_t; typedef tBTA_SDP_EVT bt_sdp_evt_t; typedef bluetooth_sdp_record bt_sdp_record_t; /* tBTA_SEARCH_COMP, bta_sdp_api.h */ typedef struct { bt_sdp_status_t status; esp_bd_addr_t remote_addr; esp_bt_uuid_t uuid; int record_count; bt_sdp_record_t records[BT_SDP_MAX_RECORDS]; } bt_sdp_search_comp_t; /* tBTA_SDP, bta_sdp_api.h */ typedef union { bt_sdp_status_t status; bt_sdp_search_comp_t sdp_search_comp; } bt_sdp_t; typedef void (bt_sdp_cb_t)(bt_sdp_evt_t event, bt_sdp_t *p_data, void * user_data); esp_err_t esp_bt_sdp_enable(bt_sdp_cb_t *cback); esp_err_t esp_bt_sdp_search(esp_bd_addr_t bd_addr, esp_bt_uuid_t* uuid); esp_err_t esp_bt_sdp_create_record_by_user(void *user_data); esp_err_t esp_bt_sdp_remove_record_by_user(void *user_data); /**********************************************************************************************/ /**********************************************************************************************/ /* API into SDP for local service database updates * these APIs are indended to be called in callback function in the context of stack task, * to handle BT_SDP_CREATE_RECORD_USER_EVT and BT_SDP_REMOVE_RECORD_USER_EVT */ /* This structure is used to add protocol lists and find protocol elements */ #define ESP_BT_SDP_MAX_PROTOCOL_PARAMS SDP_MAX_PROTOCOL_PARAMS // bt_target.h typedef struct { uint16_t protocol_uuid; uint16_t num_params; uint16_t params[ESP_BT_SDP_MAX_PROTOCOL_PARAMS]; } sdp_proto_elem_t; // tSDP_PROTOCOL_ELEM, sdp_api.h #define ESP_BT_SDP_MAX_LIST_ELEMS SDP_MAX_LIST_ELEMS // sdp_api.h typedef struct { uint16_t num_elems; sdp_proto_elem_t list_elem[ESP_BT_SDP_MAX_LIST_ELEMS]; } sdp_proto_list_elem_t; // tSDP_PROTO_LIST_ELEM, sdp_api.h uint32_t esp_bt_sdp_create_record(void); bool esp_bt_sdp_delete_record(uint32_t handle); int32_t esp_bt_sdp_read_record(uint32_t handle, uint8_t *data, int32_t *data_len); bool esp_bt_sdp_add_attribute (uint32_t handle, uint16_t attr_id, uint8_t attr_type, uint32_t attr_len, uint8_t *p_val); bool esp_bt_sdp_add_sequence (uint32_t handle, uint16_t attr_id, uint16_t num_elem, uint8_t type[], uint8_t len[], uint8_t *p_val[]); bool esp_bt_sdp_add_uuid_sequence (uint32_t handle, uint16_t attr_id, uint16_t num_uuids, uint16_t *p_uuids); bool esp_bt_sdp_add_protocol_list (uint32_t handle, uint16_t num_elem, sdp_proto_elem_t *p_elem_list); bool esp_bt_sdp_add_addition_protocol_lists(uint32_t handle, uint16_t num_elem, sdp_proto_list_elem_t *p_proto_list); bool esp_bt_sdp_add_profile_dscp_list (uint32_t handle, uint16_t profile_uuid, uint16_t version); bool esp_bt_sdp_add_lang_base_attr_id_list(uint32_t handle, uint16_t lang, uint16_t char_enc, uint16_t base_id); bool esp_bt_sdp_add_service_class_id_list(uint32_t handle, uint16_t num_services, uint16_t *p_service_uuids); bool esp_bt_sdp_delete_attribute(uint32_t handle, uint16_t attr_id); #endif /* __ESP_SDP_API_H__ */