17#define TAG "sample_ssapc"
19#define SAMPLE_SLE_SEEK_INTERVAL 100
20#define SAMPLE_SLE_SEEK_WINDOW 100
22#define TASK_PRIORITY 5
23#define TASK_DELAY_MS 500
73 "xf_sle_enable error!:%#X", ret);
80 "xf_sle_ssapc_app_register error:%#X", ret);
89 "xf_sle_start_seek error:%#X", ret);
105 XF_LOGE(
TAG,
">> FIND service error: %d", ret);
116 XF_LOGI(
TAG,
">> request write data,app_id:%d,conn_id:%d,hdl:%u",
118 uint8_t data_write[] =
"I M SSAPC WRITE REQ!";
121 data_write,
sizeof(data_write));
123 XF_LOGE(
TAG,
">> request write cmd error: %#X", ret);
128 XF_LOGI(
TAG,
">> request read,app_id:%d,conn_id:%d,hdl:%u",
133 XF_LOGE(
TAG,
">> request write cmd error: %#X", ret);
157 "xf_sle_set_seek_param error:%#X", ret);
175 XF_LOGI(
TAG,
"EV:WRITE confirm:conn_id:%d,hdl:%d",
180 XF_LOGI(
TAG,
"EV:READ confirm:conn_id:%d,hdl:%d",
185 XF_LOGI(
TAG,
"EV:RECV NTF or IND:conn_id:%d,hdl:%d",
201 uint8_t *adv_data_all = result->
data;
202 uint16_t adv_size_all = result->
data_len;
204 uint8_t *adv_pos = adv_data_all;
205 uint8_t *adv_end = adv_data_all + adv_size_all;
206 while (adv_pos <= adv_end) {
207 uint8_t struct_data_len = adv_pos[1];
209 XF_LOGD(
TAG,
"EV:scan_result:struct_data_len:%d ad_type:%#2X",
210 struct_data_len, ad_type);
213 uint8_t *local_name = &adv_pos[2];
217 XF_LOGD(
TAG,
"EV:seek result:evt_type:%d,rssi:%d"
230 XF_LOGD(
TAG,
"EV:scan_result:uncaring ad_type:%#2X", ad_type);
static xf_task_t xf_ttask_create_loop(xf_task_func_t func, void *func_arg, uint16_t priority, uint32_t delay_ms)
在默认的任务管理下,创建 ttask 循环任务。
#define XF_CHECK(condition, retval, tag, format,...)
xfusion 检查宏(条件 成立 时则输出日志后返回)。
int32_t xf_err_t
整形错误类型。 错误码具体值见 xf_err_code_t.
#define XF_LOG_BUFFER_HEXDUMP_ESCAPE(buffer, buffer_len)
以十六进制输出 buffer 的内容,同时输出可见的 ascii 码,以及转义字符。
xf_err_t xf_sle_ssapc_request_write_data(uint8_t app_id, uint16_t conn_id, uint16_t handle, uint8_t type, uint8_t *data, uint16_t data_len)
SLE SSAPC 发起写请求
xf_err_t xf_sle_ssapc_app_register(xf_sle_uuid_info_t *app_uuid, uint8_t *app_id)
SLE SSAPC 客户端注册
xf_err_t xf_sle_ssapc_request_read_by_handle(uint8_t app_id, uint16_t conn_id, uint8_t type, uint16_t handle)
SLE SSAPC 通过句柄发起读请求
xf_err_t xf_sle_ssapc_discover_service(uint8_t app_id, uint16_t conn_id, xf_sle_ssapc_find_struct_param_t *param)
SLE SSAPC 搜寻服务
xf_sle_ssapc_event_t
SLE SSAPC 事件
xf_err_t xf_sle_ssapc_event_cb_register(xf_sle_ssapc_event_cb_t evt_cb, xf_sle_ssapc_event_t events)
SLE SSAPC 事件回调注册
@ XF_SLE_SSAP_FIND_TYPE_PROPERTY
@ XF_SLE_SSAP_FIND_TYPE_PRIMARY_SERVICE
@ XF_SLE_SSAP_PROPERTY_TYPE_VALUE
@ XF_SLE_CONN_EVT_CONNECT
@ XF_SLE_SSAPC_EVT_RECV_READ_CFM
@ XF_SLE_SSAPC_EVT_NOTIFICATION
@ XF_SLE_SSAPC_EVT_RECV_WRITE_CFM
#define XF_SLE_ADDR_EXPAND_TO_ARG(addr)
SLE 地址展开为参数
xf_sle_adv_struct_type_t
SLE 广播单元类型
struct __packed _xf_sle_uuid_info_t xf_sle_uuid_info_t
SLE UUID 信息 (多种长度类型通用)
#define XF_SLE_ADV_STRUCT_LEN_FILED_SIZE
SLE 广播数据单元数据长度字段的大小
xf_err_t xf_sle_start_seek(void)
SLE 扫描开启
#define XF_SLE_ADDR_PRINT_FMT
SLE 地址打印格式
xf_err_t xf_sle_connect(const xf_sle_addr_t *addr)
SLE 发起连接
#define XF_SLE_ADV_STRUCT_TYPE_FILED_SIZE
SLE 广播数据单元类型字段的大小
xf_err_t xf_sle_enable(void)
SLE 功能开启
xf_err_t xf_sle_set_seek_param(xf_sle_seek_param_t *param)
SLE 设置扫描参数
xf_err_t xf_sle_stop_seek(void)
SLE 扫描停止
@ XF_SLE_ADV_STRUCT_TYPE_COMPLETE_LOCAL_NAME
@ XF_SLE_ADDRESS_TYPE_PUBLIC
@ XF_SLE_SEEK_TYPE_PASSIVE
@ XF_SLE_SEEK_FILTER_ALLOW_ALL
uint8_t addr[XF_SLE_ADDR_LEN]
xf_sle_ssap_find_type_t type
static void task(xf_task_t task)
xf_sle_evt_param_write_cfm_t req_write
xf_sle_evt_param_connect_t connect
xf_sle_evt_param_seek_result_t seek_result
xf_sle_evt_param_read_cfm_t req_read
static bool is_need_discovery
static bool is_discovery_cmpl
static void sample_sle_set_seek_param(void)
#define SAMPLE_SLE_SEEK_WINDOW
static xf_err_t ssapc_event_seek_result_cb(xf_sle_evt_param_seek_result_t *result)
#define SAMPLE_SLE_SEEK_INTERVAL
static xf_err_t sample_ssapc_event_cb(xf_sle_ssapc_event_t event, xf_sle_ssapc_evt_cb_param_t *param)
static void sle_client_task(xf_task_t task)
static xf_sle_ssapc_find_struct_param_t prop_struct
static uint8_t target_device_name[]
static xf_sle_ssapc_find_struct_param_t service_struct
static bool is_write_cmpl
static xf_sle_uuid_info_t s_app_uuid
#define XF_LOGI(tag, format,...)
#define XF_LOGE(tag, format,...)
#define XF_LOGD(tag, format,...)