BLE的广播包由2个包组成,adv包(自定义广播包)和rsp包(广播扫描响应包),每个包31Byte,所以广播数据最多62Byte,都可以回复数据。 一、广播和扫描回应包的数据格式
- 有效数据部分,由若干个AD Structure单元组成
- Length:表示DATA(AD Type和AD Data)的长度,不包含Length。
- AD Type:表示广播内容的类型。
- AD Data:表示广播的内容。
- 无效数据部分,广播包必须有31字节,如果有效数据部分达不到31字节,剩下所有补0
二. 杰理透传模式的两个广播包修改 static int trans_make_set_adv_data(void)–对应“自定义广播包”的数据组包 static int trans_make_set_rsp_data(void)–对应“广播扫描响应包”的数据组包 具体修改这两个函数,定义广播包数据既可。 注意点: //广播设备类型标志,必须放在adv包
offset += make_eir_packet_val(&buf[offset], offset, HCI_EIR_DATATYPE_FLAGS, 0x06, 1);
//广播BLE蓝牙名,可放adv包,也可放rsp包,这种情况一般用在蓝牙名称比较长的情况
offset += make_eir_packet_data(&buf[offset], offset, HCI_EIR_DATATYPE_COMPLETE_LOCAL_NAME, (void *)gap_device_name, name_len);
//其他广播类型,按照产品需求,可添加,可裁剪
下面的枚举类型定义了常用的AD flags
typedef enum {
HCI_EIR_DATATYPE_FLAGS = 0x01,
HCI_EIR_DATATYPE_MORE_16BIT_SERVICE_UUIDS = 0x02,
HCI_EIR_DATATYPE_COMPLETE_16BIT_SERVICE_UUIDS = 0x03,
HCI_EIR_DATATYPE_MORE_32BIT_SERVICE_UUIDS = 0x04,
HCI_EIR_DATATYPE_COMPLETE_32BIT_SERVICE_UUIDS = 0x05,
HCI_EIR_DATATYPE_MORE_128BIT_SERVICE_UUIDS = 0x06,
HCI_EIR_DATATYPE_COMPLETE_128BIT_SERVICE_UUIDS = 0x07,
HCI_EIR_DATATYPE_SHORTENED_LOCAL_NAME = 0x08,
HCI_EIR_DATATYPE_COMPLETE_LOCAL_NAME = 0x09,
HCI_EIR_DATATYPE_TX_POWER_LEVEL = 0x0A,
HCI_EIR_DATATYPE_CLASS_OF_DEVICE = 0x0D,
HCI_EIR_DATATYPE_SIMPLE_PAIRING_HASH_C = 0x0E,
HCI_EIR_DATATYPE_SIMPLE_PAIRING_RANDOMIZER_R = 0x0F,
HCI_EIR_DATATYPE_SECURITY_MANAGER_TK_VALUE = 0x10,
HCI_EIR_DATATYPE_SECURITY_MANAGER_OOB_FLAGS = 0x11,
HCI_EIR_DATATYPE_SLAVE_CONNECTION_INTERVAL_RANGE = 0x12,
HCI_EIR_DATATYPE_16BIT_SERVICE_SOLICITATION_UUIDS = 0x14,
HCI_EIR_DATATYPE_128BIT_SERVICE_SOLICITATION_UUIDS = 0x15,
HCI_EIR_DATATYPE_SERVICE_DATA = 0x16,
HCI_EIR_DATATYPE_APPEARANCE_DATA = 0x19,
HCI_EIR_DATATYPE_MANUFACTURER_SPECIFIC_DATA = 0xFF
} HCI_EIR_datatype_t;
更全面的 AD Type定义-参考Generic Access Profile: 参考网址:https://www.bluetooth.com/specifications/assigned-numbers/generic-access-profile的Generic Access Profile
|