文章目录
广播PDU结构(仅描述MG127适用的无连接广播)
可操作的空间为:
1. PDU type:
1)0000 - connected undirected advertising event 可连接非定向广播事件
2)0001 - connected directed advertising event 可连接定向广播事件
3)0010 - non-connected undirected advertising event 不可连接非定向广播事件
4)0011 - response to scan request form scanner扫描请求响应
5)0101 - connect request by initiator连接请求
6)0110 -connected directed advertising event 可发现非定向广播事件
2. TxAdd & RxAdd:
1) 发送地址类型和接收地址类型指示了设备使用公共地址(Public Address)还是随机地址(Random Address)。公共地址和随机地址的长度一样,都包含6个字节共48位。BLE设备至少要拥有这两种地址类型中的一种,当然也可以同时拥有这两种地址类型。
2) 公共地址由两部分组成,如下图。公共地址由制造商从IEEE申请,由IEEE注册机构为该制造商分配的机构唯一标识符OUI(Organizationally Unique Identifier)。这个地址是独一无二,不能修改的。
3) 随机地址有包含两种:静态地址(Static Device Address)和私有地址(PrivateDevice Address)。
4) 静态地址有如下要求:
a) 静态地址的最高2位有效位必须是1。
b) 静态地址最高2位有效位之外的其余部分不能全为0。
c) 静态地址最高2位有效位之外的其余部分不能全为1。
在私有地址的定义当中,又包含了两个子类:不可解析私有地址(Non-resolvable Private Address)和可解析私有地址(Resolvable Private Address,RPA)。
MG127中不用考虑,只需设置为随机地址即可
3. length:
广播的数据长度,实际等于数据长度加6(MAC地址长度)
广播报文除了最多31个字节的数据之外,还必须要包含6个字节的广播设备地址。6+31=37,所以需要6比特的长度域。
再次强调:广播时必须要包含6个字节的广播设备地址。
4. AdvA:
发射端MAC地址,部分芯片内部自己添加
5. 0-31 bytes AdvData:
广播和扫描响应的数据格式由有效数据部分和无效数据部分组成。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fC5C0zT6-1622382136930)(MG127学习测试.assets/image-20200729165637136.png)]
- 有效数据部分:包含N个AD Structure,每个AD Structure由Length,AD Type和AD Data组成。其中:
- Length:AD Type和AD Data的长度。
- AD Type:指示AD Data数据的含义。
- Data:需要发送的数据
AD Type(Nordic SDK 中的声明):暂未理解其用途,暂时仅做记录
//Nordic SDK GAP AD_TYPE
#define BLE_GAP_AD_TYPE_FLAGS 0x01
/**< Flags for discoverability. */
/** 可发现性标志*/
#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE 0x02
/**< Partial list of 16 bit service UUIDs. */
/** 16位服务uuid的部分列表*/
#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE 0x03
/**< Complete list of 16 bit service UUIDs. */
/** 16位服务uuid的完整列表*/
#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_MORE_AVAILABLE 0x04
/**< Partial list of 32 bit service UUIDs. */
/** 32位服务uuid的部分列表*/
#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_COMPLETE 0x05
/**< Complete list of 32 bit service UUIDs. */
/** 32位服务uuid的完整列表*/
#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE 0x06
/**< Partial list of 128 bit service UUIDs. */
/** 128位服务uuid的部分列表*/
#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_COMPLETE 0x07
/**< Complete list of 128 bit service UUIDs. */
/** 128位服务uuid的部分列表*/
#define BLE_GAP_AD_TYPE_SHORT_LOCAL_NAME 0x08
/**< Short local device name. */
/** 短本地设备名*/
#define BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME 0x09
/**< Complete local device name. */
/** 完整的本地设备名*/
#define BLE_GAP_AD_TYPE_TX_POWER_LEVEL 0x0A
/**< Transmit power level. */
/** 传输功率*/
#define BLE_GAP_AD_TYPE_CLASS_OF_DEVICE 0x0D
/**< Class of device. */
/** 设备类别*/
#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C 0x0E
/**< Simple Pairing Hash C. */
/** 简单配对哈希C*/
#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R 0x0F
/**< Simple Pairing Randomizer R. */
/** 简单配对随机发生器R*/
#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_TK_VALUE 0x10
/**< Security Manager TK Value. */
/** 安全管理器TK值*/
#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_OOB_FLAGS 0x11
/**< Security Manager Out Of Band Flags. */
/** 带外安全管理标志*/
#define BLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE 0x12
/**< Slave Connection Interval Range. */
/** 从属连接间隔范围*/
#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_16BIT 0x14
/**< List of 16-bit Service Solicitation UUIDs. */
/** 16位UUID请求列表*/
#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_128BIT 0x15
/**< List of 128-bit Service Solicitation UUIDs. */
/** 128位UUID请求列表*/
#define BLE_GAP_AD_TYPE_SERVICE_DATA 0x16
/**< Service Data - 16-bit UUID. */
/** 服务数据 - 16位UUID*/
#define BLE_GAP_AD_TYPE_PUBLIC_TARGET_ADDRESS 0x17
/**< Public Target Address. */
/** 公共目标地址*/
#define BLE_GAP_AD_TYPE_RANDOM_TARGET_ADDRESS 0x18
/**< Random Target Address. */
/** 随机目标地址*/
#define BLE_GAP_AD_TYPE_APPEARANCE 0x19
/**< Appearance. */
#define BLE_GAP_AD_TYPE_ADVERTISING_INTERVAL 0x1A
/**< Advertising Interval. */
/** 广播时间间隔*/
#define BLE_GAP_AD_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS 0x1B
/**< LE Bluetooth Device Address. */
#define BLE_GAP_AD_TYPE_LE_ROLE 0x1C
/**< LE Role. */
#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C256 0x1D
/**< Simple Pairing Hash C-256. */
#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R256 0x1E
/**< Simple Pairing Randomizer R-256. */
#define BLE_GAP_AD_TYPE_SERVICE_DATA_32BIT_UUID 0x20
/**< Service Data - 32-bit UUID. */
#define BLE_GAP_AD_TYPE_SERVICE_DATA_128BIT_UUID 0x21
/**< Service Data - 128-bit UUID. */
#define BLE_GAP_AD_TYPE_3D_INFORMATION_DATA 0x3D
/**< 3D Information Data. */
#define BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA 0xFF
/**< Manufacturer Specific Data. */
/** 制造商特定数据*/
2)无效数据部分:暂未知其作用,BLE5.0中Extern Adv中提出的扩展数据包