#include "xf_hal.h"
#include "string.h"
#define TAG "sample_gatts"
#define DEFAULT_BLE_GAP_ADV_MIN_INTERVAL 0x30
#define DEFAULT_BLE_GAP_ADV_MAX_INTERVAL 0x60
#define DEFAULT_BLE_GAP_ADV_HANDLE_DEFAULT 0x01
#define DEFAULT_BLE_GAP_ADV_FOREVER_DURATION 0
#define DEFAULT_SERVER_HANDLE (1)
#define DEFAULT_SERVER_ID (1)
#define DEFAULT_SERVICE_UUID (0x1234)
#define DEFAULT_CHARA_UUID (0xCDEF)
#define DEFAULT_CHARA_CFG_UUID (0x2902)
{0x12, 0x34},
{0xAA, 0xBB}
};
{
{
{
.chara_value = {
.permission =
(
),
},
.properties =
(
),
},
}
},
};
.uuid16 = 0x0000
};
{
"REGISTER event cb failed:%#X", ret);
"REGISTER app profile failed:%#X app_id:%d", ret,
app_id);
"ADD service failed:%#X", ret);
"START service failed:%#X", ret);
"STAR ADV failed:%#X", ret);
}
{
XF_LOGI(
TAG,
"EV:RECV READ_REQ:app_id:%d,conn_id:%d,need_rsp:%d,attr_handle:%d",
};
"send_notify_indicate failed:%#X", ret);
} break;
XF_LOGI(
TAG,
"EV:RECV WRITE_REQ:app_id:%d,conn_id:%d,need_rsp:%d,attr_handle:%d",
};
"send_notify_indicate failed:%#X app_id:%d", ret);
}
} break;
XF_LOGI(
TAG,
"EV:mtu changed:app_id:%d,conn_id:%d,mtu_size:%d",
} break;
XF_LOGI(
TAG,
"EV:peer connect:app_id:%d,conn_id:%d,"
"set_security_param failed:%#X", ret);
"set_security_param failed:%#X", ret);
} break;
} break;
XF_LOGI(
TAG,
"EV:peer disconnect:app_id:%d,conn_id:%d,reason:%u,"
} break;
default:
break;
}
}
{
{
{
}, {
},
{0}
},
.scan_rsp_length = 0,
.scan_rsp_data = NULL,
};
}
{
.own_addr =
{
.addr = {0x0},
},
.peer_addr =
{
.addr = { 0x0 },
},
.tx_power = 1,
};
}
#define XF_CHECK(condition, retval, tag, format,...)
xfusion 检查宏(条件 成立 时则输出日志后返回)。
int32_t xf_err_t
整形错误类型。 错误码具体值见 xf_err_code_t.
#define XF_LOG_BUFFER_HEXDUMP(buffer, buffer_len)
以十六进制输出 buffer 的内容,同时输出可见的 ascii 码。
uint16_t xf_ble_appearance_t
BLE 外观值,完全遵循蓝牙标准进行定义
xf_err_t xf_ble_gap_set_adv_data(const xf_ble_gap_adv_data_t *data)
BLE GAP 设置广播数据
xf_err_t xf_ble_gap_set_local_appearance(xf_ble_appearance_t appearance)
BLE GAP 设置本端设备的外观
xf_err_t xf_ble_gap_start_adv(void)
BLE GAP 广播开启
#define XF_BLE_APPEARANCE_HID_DIGITIZER_TABLET
xf_err_t xf_ble_gap_set_adv_param(const xf_ble_gap_adv_param_t *param)
BLE GAP 设置广播参数
xf_err_t xf_ble_gap_set_security_param(xf_ble_sm_param_type_t param_type, void *value, uint8_t len)
BLE GAP 设置安全参数
xf_err_t xf_ble_gap_set_local_name(const uint8_t *name, const uint8_t len)
BLE GAP 设置本端设备名称
xf_err_t xf_ble_enable(void)
BLE 功能开启
@ XF_BLE_GAP_ADV_TYPE_CONN_SCAN_UNDIR
@ XF_BLE_ADV_STRUCT_TYPE_APPEARANCE
@ XF_BLE_ADV_STRUCT_TYPE_LOCAL_NAME_ALL
@ XF_BLE_GAP_ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY
xf_err_t xf_ble_gatts_event_cb_register(xf_ble_gatts_event_cb_t evt_cb, xf_ble_gatts_event_t events)
BLE GATTS 事件回调注册
#define XF_BLE_ATTR_SET_END_FLAG
属性集合的结束标记值
xf_err_t xf_ble_gatts_add_service_to_app_profile(uint8_t app_id, xf_ble_gatts_service_t *service)
BLE GATTS 向服务端 (应用) 添加服务
xf_err_t xf_ble_gatts_app_register(xf_ble_uuid_info_t *app_uuid, uint8_t *app_id)
BLE GATTS 服务端注册
xf_err_t xf_ble_gatts_start_service(uint8_t app_id, uint16_t service_handle)
BLE GATTS 服务开启
xf_err_t xf_ble_gatts_send_notification(uint8_t app_id, uint16_t conn_id, xf_ble_gatts_ntf_ind_t *param)
BLE GATTS 发送通知
@ XF_BLE_GATT_CHARA_PROPERTY_NOTIFY
@ XF_BLE_GATT_CHARA_PROPERTY_READ
@ XF_BLE_GATT_ATTR_PERMISSION_WRITE
@ XF_BLE_GATT_ATTR_PERMISSION_READ
@ XF_BLE_GATT_SERVICE_TYPE_PRIMARY
#define XF_BLE_ADDR_PRINT_FMT
BLE 地址打印格式
uint8_t xf_ble_sm_authen_req_t
BLE SM 认证请求 (绑定能力选择与安全模式)
#define XF_BLE_ADDR_EXPAND_TO_ARG(addr)
BLE 地址展开为参数
#define XF_BLE_SM_AUTHEN_OPTION_DISABLE
#define XF_BLE_DECLARE_UUID16(uuid16)
BLE 声明一个 16-bit UUID
uint8_t xf_ble_sm_authen_option_t
BLE SM 认证选项 (配对能力)
uint8_t xf_ble_sm_io_cap_t
BLE SM IO 能力
#define XF_BLE_SM_IO_CAP_NONE
xf_ble_gatts_event_t
BLE GATTS 事件
#define XF_BLE_SM_AUTHEN_REQ_SC_MITM_BOND
struct __packed _xf_ble_uuid_info_t xf_ble_uuid_info_t
BLE UUID 信息 (多种长度类型通用)
@ XF_BT_ADDR_TYPE_PUBLIC_DEV
@ XF_BLE_SM_PARAM_AUTHEN_REQ_MODE
@ XF_BLE_SM_PARAM_IO_CAP_MODE
@ XF_BLE_GATTS_EVT_REQ_READ
@ XF_BLE_GATTS_EVT_REQ_WRITE
@ XF_BLE_GATTS_EVT_MTU_CHANGED
@ XF_BLE_GAP_EVT_PAIR_END
@ XF_BLE_GAP_EVT_DISCONNECT
xf_ble_uuid_info_t * service_uuid
uint8_t addr[XF_BLE_ADDR_LEN]
xf_ble_gap_disconnect_reason_t reason
xf_ble_gap_adv_struct_t * adv_struct_set
BLE GAP 广播数据单元 ( AD structure )
xf_ble_gap_adv_struct_type_t ad_type
xf_ble_evt_param_gatts_mtu_t mtu
xf_ble_evt_param_gatts_read_req_t read_req
xf_ble_evt_param_gatts_write_req_t write_req
xf_ble_evt_param_connect_t connect
xf_ble_evt_param_disconnect_t disconnect
static xf_ble_uuid_info_t app_uuid
static void sample_ble_set_adv_data(void)
uint8_t sample_adv_rsp_data[]
#define DEFAULT_CHARA_UUID
uint8_t sample_adv_data[]
static uint8_t chara_value_array[][10]
static xf_ble_gatts_service_t service_set[]
#define DEFAULT_SERVICE_UUID
static void sample_ble_set_adv_param(void)
uint8_t sample_gatts_device_name[]
#define DEFAULT_BLE_GAP_ADV_MIN_INTERVAL
#define DEFAULT_BLE_GAP_ADV_FOREVER_DURATION
static uint8_t read_req_indication[]
#define DEFAULT_BLE_GAP_ADV_MAX_INTERVAL
static xf_err_t sample_ble_gatts_event_cb(xf_ble_gatts_event_t event, xf_ble_gatts_evt_cb_param_t param)
static uint8_t write_req_indication[]
#define XF_LOGI(tag, format,...)