#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,...)