iOS 与 BLE “HCI_EIR_datatype_t” 的关系

对于iOS来说,蓝牙设备不能像 Android 那样,直接通过扫描adv就能拿到设备的mac地址,所以蓝牙设备就需要将自己的mac地址等信息放在adv广播中,以便让iOS去区分不同的设备;

有些开发者不知道怎么将这些信息存于adv广播包中,现在就将常用的贴出来,以便大家学习,有啥不对的,也请斧正

下面的枚举类型定义了常用的AD flags

/*eir packet_type*/
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;

1、如果在广播中需要给设备添加一个过滤设备的UUID可以使用

HCI_EIR_DATATYPE_COMPLETE_128BIT_SERVICE_UUIDS = 0x07

2、给设备添加设备名

HCI_EIR_DATATYPE_COMPLETE_LOCAL_NAME = 0x09,

3、添加设备mac地址

HCI_EIR_DATATYPE_MANUFACTURER_SPECIFIC_DATA = 0xFF,

一般广播中添加这3个特征值就可以了,不要添加太多,因为广播有字节数限制,BLE的广播包由2个包组成,adv包(自定义广播包)和rsp包(广播扫描响应包),每个包31Byte,所以广播数据最多62Byte,都可以回复数据。

学习资料

你可能感兴趣的:(iOS 与 BLE “HCI_EIR_datatype_t” 的关系)