XFusion API v1.3.0
载入中...
搜索中...
未找到
xf_ble

xf_ble 是对 ble 的封装。 更多...

xf_ble 的协作图:

模块

 gap
 Generic Attribute Profile
 
 gatt
 Generic Attribute Profile
 

结构体

union  _xf_ble_sm_param_val_t
 BLE SM 参数值 更多...
 
struct  xf_ble_addr_t
 BLE 地址信息 更多...
 
struct  _xf_ble_uuid_info_t
 BLE UUID 信息 (多种长度类型通用) 更多...
 
struct  _xf_ble_uuid16_info_t
 BLE 16-bit UUID 信息 更多...
 
struct  _xf_ble_uuid32_info_t
 BLE 32-bit UUID 信息 更多...
 
struct  _xf_ble_uuid128_info_t
 BLE 128-bit UUID 信息 更多...
 
union  _xf_ble_var_uintptr_t
 BLE 中类型可变的数据 更多...
 

宏定义

#define XF_BLE_SM_AUTHEN_REQ_NO_BOND   0x00
 
#define XF_BLE_SM_AUTHEN_REQ_BOND   0x01
 
#define XF_BLE_SM_AUTHEN_REQ_MITM   (1 << 2)
 
#define XF_BLE_SM_AUTHEN_REQ_BOND_MITM   (XF_BLE_SM_AUTHEN_REQ_BOND | XF_BLE_SM_AUTHEN_REQ_MITM)
 
#define XF_BLE_SM_AUTHEN_REQ_SC_ONLY   (1 << 3)
 
#define XF_BLE_SM_AUTHEN_REQ_SC_BOND   (XF_BLE_SM_AUTHEN_REQ_BOND | XF_BLE_SM_AUTHEN_REQ_SC_ONLY)
 
#define XF_BLE_SM_AUTHEN_REQ_SC_MITM   (XF_BLE_SM_AUTHEN_REQ_MITM | XF_BLE_SM_AUTHEN_REQ_SC_ONLY)
 
#define XF_BLE_SM_AUTHEN_REQ_SC_MITM_BOND   (XF_BLE_SM_AUTHEN_REQ_MITM | XF_BLE_SM_AUTHEN_REQ_SC_ONLY | XF_BLE_SM_AUTHEN_REQ_BOND)
 
#define XF_BLE_SM_IO_CAP_OUT   0
 
#define XF_BLE_SM_IO_CAP_IO   1
 
#define XF_BLE_SM_IO_CAP_IN   2
 
#define XF_BLE_SM_IO_CAP_NONE   3
 
#define XF_BLE_SM_IO_CAP_KBDISP   4
 
#define XF_BLE_SM_AUTHEN_OPTION_DISABLE   0
 
#define XF_BLE_SM_AUTHEN_OPTION_ENABLE   1
 
#define XF_BLE_SM_OOB_DISABLE   0
 
#define XF_BLE_SM_OOB_ENABLE   1
 
#define XF_BLE_IS_ENABLE   1
 
#define XF_BLE_ADDR_LEN   6
 BLE 地址长度
 
#define XF_BLE_ADDR_PRINT_FMT   "%02X:%02X:%02X:%02X:%02X:%02X"
 BLE 地址打印格式
 
#define XF_BLE_ADDR_EXPAND_TO_ARG(addr)   (addr)[0],(addr)[1],(addr)[2],(addr)[3],(addr)[4],(addr)[5]
 BLE 地址展开为参数
 
#define _XF_BLE_UUID16_INIT(uuid16)
 
#define _XF_BLE_UUID32_INIT(uuid32)
 
#define _XF_BLE_UUID128_INIT(uuid128 ...)
 
#define XF_BLE_DECLARE_UUID16(uuid16)    ((xf_ble_uuid_info_t *) (&(xf_ble_uuid16_info_t) _XF_BLE_UUID16_INIT(uuid16)))
 BLE 声明一个 16-bit UUID
 
#define XF_BLE_DECLARE_UUID32(uuid32)    ((xf_ble_uuid_info_t *) (&(xf_ble_uuid32_info_t) _XF_BLE_UUID32_INIT(uuid32)))
 BLE 声明一个 32-bit UUID
 
#define XF_BLE_DECLARE_UUID128(uuid128...)    ((xf_ble_uuid_info_t *) (&(xf_ble_uuid128_info_t) _XF_BLE_UUID128_INIT(uuid128)))
 BLE 声明一个 128-bit UUID
 
#define XF_BLE_INVALID_ATTR_HANDLE   (0x0000)
 BLE 无效属性句柄
 

类型定义

typedef uint8_t xf_ble_sm_authen_req_t
 BLE SM 认证请求 (绑定能力选择与安全模式)
 
typedef uint8_t xf_ble_sm_io_cap_t
 BLE SM IO 能力
 
typedef uint8_t xf_ble_sm_authen_option_t
 BLE SM 认证选项 (配对能力)
 
typedef uint8_t xf_ble_sm_oob_enable_t
 BLE SM OOB (out of bond) 使能
 
typedef union _xf_ble_sm_param_val_t xf_ble_sm_param_val_t
 BLE SM 参数值
 
typedef struct __packed _xf_ble_uuid_info_t xf_ble_uuid_info_t
 BLE UUID 信息 (多种长度类型通用)
 
typedef struct __packed _xf_ble_uuid16_info_t xf_ble_uuid16_info_t
 BLE 16-bit UUID 信息
 
typedef struct __packed _xf_ble_uuid32_info_t xf_ble_uuid32_info_t
 BLE 32-bit UUID 信息
 
typedef struct __packed _xf_ble_uuid128_info_t xf_ble_uuid128_info_t
 BLE 128-bit UUID 信息
 
typedef uint16_t xf_ble_attr_handle_t
 BLE 属性句柄
 
typedef union _xf_ble_var_uintptr_t xf_ble_var_uintptr_t
 BLE 中类型可变的数据
 

枚举

enum  xf_ble_sm_param_type_t { XF_BLE_SM_PARAM_AUTHEN_REQ_MODE , XF_BLE_SM_PARAM_IO_CAP_MODE , XF_BLE_SM_PARAM_AUTHEN_OPTION , XF_BLE_SM_PARAM_MAX_PARAM }
 
enum  xf_ble_addr_type_t { XF_BT_ADDR_TYPE_PUBLIC_DEV = 0x00 , XF_BT_ADDR_TYPE_RANDOM_DEV = 0x01 , XF_BT_ADDR_TYPE_RPA_PUBLIC = 0x02 , XF_BT_ADDR_TYPE_RPA_RANDOM = 0x03 }
 蓝牙地址类型,完全遵循蓝牙标准进行定义 更多...
 
enum  xf_ble_uuid_type_t { XF_BLE_UUID_TYPE_16 = 2 , XF_BLE_UUID_TYPE_32 = 4 , XF_BLE_UUID_TYPE_128 = 16 }
 BLE UUID 类型 (长度类型) 更多...
 
enum  xf_ble_gap_event_t {
  XF_BLE_GAP_EVT_CONNECT , XF_BLE_GAP_EVT_DISCONNECT , XF_BLE_GAP_EVT_PAIR_END , XF_BLE_GAP_EVT_CONN_PARAMS_UPDATE ,
  XF_BLE_GAP_EVT_SCAN_PARAM_SET , XF_BLE_GAP_EVT_SCAN_RESULT , XF_BLE_GAP_ADV_STARTED , XF_BLE_GAP_ADV_STOPPED ,
  _XF_BLE_GAP_EVT_ENUM_END
}
 BLE GAP 事件 更多...
 
enum  xf_ble_gatts_event_t {
  XF_BLE_GATTS_EVT_ADD_SERVICE = _XF_BLE_GAP_EVT_ENUM_END , XF_BLE_GATTS_EVT_DEL_SERVICE , XF_BLE_GATTS_EVT_ADD_CHARA , XF_BLE_GATTS_EVT_ADD_DESC ,
  XF_BLE_GATTS_EVT_SERVICE_START , XF_BLE_GATTS_EVT_SERVICE_STOP , XF_BLE_GATTS_EVT_REQ_READ , XF_BLE_GATTS_EVT_REQ_WRITE ,
  XF_BLE_GATTS_EVT_MTU_CHANGED
}
 BLE GATTS 事件 更多...
 
enum  xf_ble_gattc_event_t {
  XF_BLE_GATTC_EVT_DISCOVER_SERVICE_COMPLETE = _XF_BLE_GAP_EVT_ENUM_END , XF_BLE_GATTC_EVT_MTU_CHANGED , XF_BLE_GATTC_EVT_WRITE_COMPLETE , XF_BLE_GATTC_EVT_READ_COMPLETE ,
  XF_BLE_GATTC_EVT_RECV_NOTIFICATION_OR_INDICATION
}
 BLE GATTC 事件 更多...
 

详细描述

xf_ble 是对 ble 的封装。

宏定义说明

◆ XF_BLE_SM_AUTHEN_REQ_NO_BOND

#define XF_BLE_SM_AUTHEN_REQ_NO_BOND   0x00

0 no bonding

在文件 xf_ble_sm_types.h52 行定义.

◆ XF_BLE_SM_AUTHEN_REQ_BOND

#define XF_BLE_SM_AUTHEN_REQ_BOND   0x01

1 << 0 device in the bonding with peer

在文件 xf_ble_sm_types.h53 行定义.

◆ XF_BLE_SM_AUTHEN_REQ_MITM

#define XF_BLE_SM_AUTHEN_REQ_MITM   (1 << 2)

1 << 2 man in the middle attack

在文件 xf_ble_sm_types.h54 行定义.

◆ XF_BLE_SM_AUTHEN_REQ_BOND_MITM

#define XF_BLE_SM_AUTHEN_REQ_BOND_MITM   (XF_BLE_SM_AUTHEN_REQ_BOND | XF_BLE_SM_AUTHEN_REQ_MITM)

0101 banding with man in the middle attack

在文件 xf_ble_sm_types.h55 行定义.

◆ XF_BLE_SM_AUTHEN_REQ_SC_ONLY

#define XF_BLE_SM_AUTHEN_REQ_SC_ONLY   (1 << 3)

1 << 3 secure connection

在文件 xf_ble_sm_types.h56 行定义.

◆ XF_BLE_SM_AUTHEN_REQ_SC_BOND

#define XF_BLE_SM_AUTHEN_REQ_SC_BOND   (XF_BLE_SM_AUTHEN_REQ_BOND | XF_BLE_SM_AUTHEN_REQ_SC_ONLY)

1001 secure connection with band

在文件 xf_ble_sm_types.h57 行定义.

◆ XF_BLE_SM_AUTHEN_REQ_SC_MITM

#define XF_BLE_SM_AUTHEN_REQ_SC_MITM   (XF_BLE_SM_AUTHEN_REQ_MITM | XF_BLE_SM_AUTHEN_REQ_SC_ONLY)

1100 secure conn with MITM

在文件 xf_ble_sm_types.h58 行定义.

◆ XF_BLE_SM_AUTHEN_REQ_SC_MITM_BOND

#define XF_BLE_SM_AUTHEN_REQ_SC_MITM_BOND   (XF_BLE_SM_AUTHEN_REQ_MITM | XF_BLE_SM_AUTHEN_REQ_SC_ONLY | XF_BLE_SM_AUTHEN_REQ_BOND)

1101 SC with MITM and Bonding

示例
examples/wireless/ble/sample_gatt_server/main/xf_main.c.

在文件 xf_ble_sm_types.h59 行定义.

◆ XF_BLE_SM_IO_CAP_OUT

#define XF_BLE_SM_IO_CAP_OUT   0

DisplayOnly

在文件 xf_ble_sm_types.h66 行定义.

◆ XF_BLE_SM_IO_CAP_IO

#define XF_BLE_SM_IO_CAP_IO   1

DisplayYesNo

在文件 xf_ble_sm_types.h67 行定义.

◆ XF_BLE_SM_IO_CAP_IN

#define XF_BLE_SM_IO_CAP_IN   2

KeyboardOnly

在文件 xf_ble_sm_types.h68 行定义.

◆ XF_BLE_SM_IO_CAP_NONE

#define XF_BLE_SM_IO_CAP_NONE   3

NoInputNoOutput

示例
examples/wireless/ble/sample_gatt_server/main/xf_main.c.

在文件 xf_ble_sm_types.h69 行定义.

◆ XF_BLE_SM_IO_CAP_KBDISP

#define XF_BLE_SM_IO_CAP_KBDISP   4

Keyboard display

在文件 xf_ble_sm_types.h70 行定义.

◆ XF_BLE_SM_AUTHEN_OPTION_DISABLE

#define XF_BLE_SM_AUTHEN_OPTION_DISABLE   0

◆ XF_BLE_SM_AUTHEN_OPTION_ENABLE

#define XF_BLE_SM_AUTHEN_OPTION_ENABLE   1

认证关闭

在文件 xf_ble_sm_types.h78 行定义.

◆ XF_BLE_SM_OOB_DISABLE

#define XF_BLE_SM_OOB_DISABLE   0

disbale the out of bond

在文件 xf_ble_sm_types.h85 行定义.

◆ XF_BLE_SM_OOB_ENABLE

#define XF_BLE_SM_OOB_ENABLE   1

enable the out of bond

在文件 xf_ble_sm_types.h86 行定义.

◆ XF_BLE_IS_ENABLE

#define XF_BLE_IS_ENABLE   1

在文件 xf_ble_types.h40 行定义.

◆ XF_BLE_ADDR_LEN

#define XF_BLE_ADDR_LEN   6

BLE 地址长度

在文件 xf_ble_types.h47 行定义.

◆ XF_BLE_ADDR_PRINT_FMT

#define XF_BLE_ADDR_PRINT_FMT   "%02X:%02X:%02X:%02X:%02X:%02X"

◆ XF_BLE_ADDR_EXPAND_TO_ARG

#define XF_BLE_ADDR_EXPAND_TO_ARG (   addr)    (addr)[0],(addr)[1],(addr)[2],(addr)[3],(addr)[4],(addr)[5]

BLE 地址展开为参数

注解
一般用于配合 'XF_BLE_ADDR_PRINT_FMT' 进行地址打印输出
示例
examples/wireless/ble/sample_gatt_client/main/xf_main.c , 以及 examples/wireless/ble/sample_gatt_server/main/xf_main.c.

在文件 xf_ble_types.h59 行定义.

◆ _XF_BLE_UUID16_INIT

#define _XF_BLE_UUID16_INIT (   uuid16)
值:
{ \
.value = (uuid16), \
}
@ XF_BLE_UUID_TYPE_16

在文件 xf_ble_types.h149 行定义.

◆ _XF_BLE_UUID32_INIT

#define _XF_BLE_UUID32_INIT (   uuid32)
值:
{ \
.value = (uuid32), \
}
@ XF_BLE_UUID_TYPE_32

在文件 xf_ble_types.h155 行定义.

◆ _XF_BLE_UUID128_INIT

#define _XF_BLE_UUID128_INIT (   uuid128 ...)
值:
{ \
.value = { uuid128 }, \
}
@ XF_BLE_UUID_TYPE_128

在文件 xf_ble_types.h161 行定义.

◆ XF_BLE_DECLARE_UUID16

#define XF_BLE_DECLARE_UUID16 (   uuid16)     ((xf_ble_uuid_info_t *) (&(xf_ble_uuid16_info_t) _XF_BLE_UUID16_INIT(uuid16)))

BLE 声明一个 16-bit UUID

注解
通常用于填充服务结构时填入常量 UUID
示例
examples/wireless/ble/sample_gatt_server/main/xf_main.c.

在文件 xf_ble_types.h171 行定义.

◆ XF_BLE_DECLARE_UUID32

#define XF_BLE_DECLARE_UUID32 (   uuid32)     ((xf_ble_uuid_info_t *) (&(xf_ble_uuid32_info_t) _XF_BLE_UUID32_INIT(uuid32)))

BLE 声明一个 32-bit UUID

注解
通常用于填充服务结构时填入常量 UUID

在文件 xf_ble_types.h178 行定义.

◆ XF_BLE_DECLARE_UUID128

#define XF_BLE_DECLARE_UUID128 (   uuid128...)     ((xf_ble_uuid_info_t *) (&(xf_ble_uuid128_info_t) _XF_BLE_UUID128_INIT(uuid128)))

BLE 声明一个 128-bit UUID

注解
通常用于填充服务结构时填入常量 UUID

在文件 xf_ble_types.h185 行定义.

◆ XF_BLE_INVALID_ATTR_HANDLE

#define XF_BLE_INVALID_ATTR_HANDLE   (0x0000)

BLE 无效属性句柄

注解
通常用于对接服务结构添加时,判断服务、特征、特征描述符等属性的句柄是否有效

在文件 xf_ble_types.h192 行定义.

类型定义说明

◆ xf_ble_sm_authen_req_t

typedef uint8_t xf_ble_sm_authen_req_t

BLE SM 认证请求 (绑定能力选择与安全模式)

在文件 xf_ble_sm_types.h50 行定义.

◆ xf_ble_sm_io_cap_t

typedef uint8_t xf_ble_sm_io_cap_t

BLE SM IO 能力

在文件 xf_ble_sm_types.h64 行定义.

◆ xf_ble_sm_authen_option_t

typedef uint8_t xf_ble_sm_authen_option_t

BLE SM 认证选项 (配对能力)

在文件 xf_ble_sm_types.h75 行定义.

◆ xf_ble_sm_oob_enable_t

typedef uint8_t xf_ble_sm_oob_enable_t

BLE SM OOB (out of bond) 使能

在文件 xf_ble_sm_types.h83 行定义.

◆ xf_ble_sm_param_val_t

BLE SM 参数值

◆ xf_ble_uuid_info_t

BLE UUID 信息 (多种长度类型通用)

◆ xf_ble_uuid16_info_t

BLE 16-bit UUID 信息

◆ xf_ble_uuid32_info_t

BLE 32-bit UUID 信息

◆ xf_ble_uuid128_info_t

BLE 128-bit UUID 信息

◆ xf_ble_attr_handle_t

typedef uint16_t xf_ble_attr_handle_t

BLE 属性句柄

在文件 xf_ble_types.h197 行定义.

◆ xf_ble_var_uintptr_t

BLE 中类型可变的数据

注解
基于 uintptr 类型,可变数据的最大大小等于 uintptr 类型的大小

枚举类型说明

◆ xf_ble_sm_param_type_t

枚举值
XF_BLE_SM_PARAM_AUTHEN_REQ_MODE 

Authentication requirements of local device

XF_BLE_SM_PARAM_IO_CAP_MODE 

The IO capability of local device

XF_BLE_SM_PARAM_AUTHEN_OPTION 

Accept only specified SMP Authentication requirement

XF_BLE_SM_PARAM_MAX_PARAM 

authentication max param

在文件 xf_ble_sm_types.h105 行定义.

◆ xf_ble_addr_type_t

蓝牙地址类型,完全遵循蓝牙标准进行定义

地址类型如下:

1、公共设备地址(类似USB VID,需申请)
2、随机设备地址:设备启动后随机生成
2.A、静态设备地址:在启动后地址不变,下次复位后地址可能会变(非强制要求)
2.B、私有设备地址:地址会更新
2.B.1、不可解析私有地址:地址定时更新
2.B.2、可解析私有地址:地址加密生成
参见
详参蓝牙核心文档 《Core_v5.4》>| Vol 6, Part B >| 1.3 DEVICE ADDRESS 在线文档: https://www.bluetooth.com/specifications/specs/core54-html/ 离线文档: https://www.bluetooth.com/specifications/specs/core-specification-amended-5-4/
枚举值
XF_BT_ADDR_TYPE_PUBLIC_DEV 

公有地址

XF_BT_ADDR_TYPE_RANDOM_DEV 

随机地址

XF_BT_ADDR_TYPE_RPA_PUBLIC 

不可解析私有地址:地址定时更新

XF_BT_ADDR_TYPE_RPA_RANDOM 

可解析私有地址:地址加密生成

在文件 xf_ble_types.h77 行定义.

◆ xf_ble_uuid_type_t

BLE UUID 类型 (长度类型)

枚举值
XF_BLE_UUID_TYPE_16 

长度 16-bit

XF_BLE_UUID_TYPE_32 

长度 32-bit

XF_BLE_UUID_TYPE_128 

长度 128-bit

在文件 xf_ble_types.h95 行定义.

◆ xf_ble_gap_event_t

BLE GAP 事件

枚举值
XF_BLE_GAP_EVT_CONNECT 

连接事件

XF_BLE_GAP_EVT_DISCONNECT 

断连事件

XF_BLE_GAP_EVT_PAIR_END 

配对结束事件

XF_BLE_GAP_EVT_CONN_PARAMS_UPDATE 

连接参数更新事件

XF_BLE_GAP_EVT_SCAN_PARAM_SET 

扫描参数设置事件

XF_BLE_GAP_EVT_SCAN_RESULT 

收到扫描结果事件

XF_BLE_GAP_ADV_STARTED 

广播开启事件

XF_BLE_GAP_ADV_STOPPED 

广播停止事件

_XF_BLE_GAP_EVT_ENUM_END 

GAP 事件枚举结束值

在文件 xf_ble_types.h223 行定义.

◆ xf_ble_gatts_event_t

BLE GATTS 事件

枚举值
XF_BLE_GATTS_EVT_ADD_SERVICE 

服务添加事件

XF_BLE_GATTS_EVT_DEL_SERVICE 

服务移除事件

XF_BLE_GATTS_EVT_ADD_CHARA 

特征添加事件

XF_BLE_GATTS_EVT_ADD_DESC 

特征描述符事件

XF_BLE_GATTS_EVT_SERVICE_START 

服务开启事件

XF_BLE_GATTS_EVT_SERVICE_STOP 

服务停止事件

XF_BLE_GATTS_EVT_REQ_READ 

接收到读请求事件

XF_BLE_GATTS_EVT_REQ_WRITE 

接收到写请求事件

XF_BLE_GATTS_EVT_MTU_CHANGED 

MTU 变更事件

在文件 xf_ble_types.h240 行定义.

◆ xf_ble_gattc_event_t

BLE GATTC 事件

枚举值
XF_BLE_GATTC_EVT_DISCOVER_SERVICE_COMPLETE 

服务结构搜寻完毕事件

XF_BLE_GATTC_EVT_MTU_CHANGED 

MTU 变更事件

XF_BLE_GATTC_EVT_WRITE_COMPLETE 

写完成事件

XF_BLE_GATTC_EVT_READ_COMPLETE 

读完成事件

XF_BLE_GATTC_EVT_RECV_NOTIFICATION_OR_INDICATION 

收到通知或指示事件

在文件 xf_ble_types.h255 行定义.