81 lines
3.6 KiB
C
81 lines
3.6 KiB
C
|
#pragma once
|
||
|
|
||
|
#include "components/bluetooth/bk_dm_gatts.h"
|
||
|
#include "components/bluetooth/bk_dm_gatt_common.h"
|
||
|
#include "dm_gatt.h"
|
||
|
|
||
|
#define BK_GATT_ATTR_TYPE(iuuid) {.len = BK_UUID_LEN_16, .uuid = {.uuid16 = iuuid}}
|
||
|
#define BK_GATT_ATTR_CONTENT(iuuid) {.len = BK_UUID_LEN_16, .uuid = {.uuid16 = iuuid}}
|
||
|
#define BK_GATT_ATTR_VALUE(ilen, ivalue) {.attr_max_len = ilen, .attr_len = ilen, .attr_value = ivalue}
|
||
|
|
||
|
#define BK_GATT_ATTR_TYPE_128(iuuid) {.len = BK_UUID_LEN_128, .uuid = {.uuid128 = {iuuid[0], iuuid[1], iuuid[2], iuuid[3], iuuid[4], \
|
||
|
iuuid[5], iuuid[6], iuuid[7], iuuid[8], iuuid[9], iuuid[10], iuuid[11], iuuid[12], iuuid[13], iuuid[14], iuuid[15]}}}
|
||
|
|
||
|
#define BK_GATT_ATTR_CONTENT_128(iuuid) {.len = BK_UUID_LEN_128, .uuid = {.uuid128 = {iuuid[0], iuuid[1], iuuid[2], iuuid[3], iuuid[4], \
|
||
|
iuuid[5], iuuid[6], iuuid[7], iuuid[8], iuuid[9], iuuid[10], iuuid[11], iuuid[12], iuuid[13], iuuid[14], iuuid[15]}}}
|
||
|
|
||
|
#define BK_GATT_PRIMARY_SERVICE_DECL(iuuid) \
|
||
|
.att_desc =\
|
||
|
{\
|
||
|
.attr_type = BK_GATT_ATTR_TYPE(BK_GATT_UUID_PRI_SERVICE),\
|
||
|
.attr_content = BK_GATT_ATTR_CONTENT(iuuid),\
|
||
|
}
|
||
|
|
||
|
#define BK_GATT_PRIMARY_SERVICE_DECL_128(iuuid) \
|
||
|
.att_desc =\
|
||
|
{\
|
||
|
.attr_type = BK_GATT_ATTR_TYPE(BK_GATT_UUID_PRI_SERVICE),\
|
||
|
.attr_content = BK_GATT_ATTR_CONTENT_128(iuuid)\
|
||
|
}
|
||
|
|
||
|
#define BK_GATT_CHAR_DECL(iuuid, ilen, ivalue, iprop, iperm, irsp) \
|
||
|
.att_desc = \
|
||
|
{\
|
||
|
.attr_type = BK_GATT_ATTR_TYPE(BK_GATT_UUID_CHAR_DECLARE),\
|
||
|
.attr_content = BK_GATT_ATTR_CONTENT(iuuid),\
|
||
|
.value = BK_GATT_ATTR_VALUE(ilen, ivalue),\
|
||
|
.prop = iprop,\
|
||
|
.perm = iperm,\
|
||
|
},\
|
||
|
.attr_control = {.auto_rsp = irsp}
|
||
|
|
||
|
#define BK_GATT_CHAR_DECL_128(iuuid, ilen, ivalue, iprop, iperm, irsp) \
|
||
|
.att_desc = \
|
||
|
{\
|
||
|
.attr_type = BK_GATT_ATTR_TYPE(BK_GATT_UUID_CHAR_DECLARE),\
|
||
|
.attr_content = BK_GATT_ATTR_CONTENT_128(iuuid),\
|
||
|
.value = BK_GATT_ATTR_VALUE(ilen, ivalue),\
|
||
|
.prop = iprop,\
|
||
|
.perm = iperm,\
|
||
|
},\
|
||
|
.attr_control = {.auto_rsp = irsp}
|
||
|
|
||
|
#define BK_GATT_CHAR_DESC_DECL(iuuid, ilen, ivalue, iperm, irsp) \
|
||
|
.att_desc = \
|
||
|
{\
|
||
|
.attr_type = BK_GATT_ATTR_TYPE(iuuid),\
|
||
|
.value = BK_GATT_ATTR_VALUE(ilen, ivalue),\
|
||
|
.perm = iperm,\
|
||
|
},\
|
||
|
.attr_control = {.auto_rsp = irsp}
|
||
|
|
||
|
#define BK_GATT_CHAR_DESC_DECL_128(iuuid, ilen, ivalue, iperm, irsp) \
|
||
|
.att_desc = \
|
||
|
{\
|
||
|
.attr_type = BK_GATT_ATTR_TYPE_128(iuuid),\
|
||
|
.value = BK_GATT_ATTR_VALUE(ilen, ivalue),\
|
||
|
.perm = iperm,\
|
||
|
},\
|
||
|
.attr_control = {.auto_rsp = irsp}
|
||
|
|
||
|
|
||
|
typedef int32_t (* dm_ble_gatts_db_cb)(bk_gatts_cb_event_t event, bk_gatt_if_t gatts_if, bk_ble_gatts_cb_param_t *param);
|
||
|
|
||
|
int32_t dm_gatts_is_init(void);
|
||
|
int dm_gatts_main(cli_gatt_param_t *param);
|
||
|
int32_t dm_gatts_disconnect(uint8_t *addr);
|
||
|
int32_t dm_gatts_enable_adv(uint8_t enable);
|
||
|
int32_t dm_gatts_enable_service(uint32_t index, uint8_t enable);
|
||
|
int32_t dm_gatts_reg_db(bk_gatts_attr_db_t *list, uint32_t count, uint16_t *attr_handle_list, dm_ble_gatts_db_cb cb);
|
||
|
int32_t dm_gatts_get_buff_from_attr_handle(bk_gatts_attr_db_t *attr_list, uint16_t *attr_handle_list, uint32_t size, uint16_t attr_handle, uint32_t *output_index, uint8_t **output_buff, uint32_t *output_size);
|