[蓝牙协议栈]蓝牙广播

简介

本文简单介绍蓝牙广播。

蓝牙广播数据格式

(1)广播数据结构格式

广告数据(Advertising Data, AD)和扫描回应数据(Scan Response Data, SRD)是两种主要的数据包类型,它们在格式上都相同。

| Length (1 byte) | AD Type (1 byte) | AD Data (0-31 bytes) |
  • Length:
    • 1 字节,表示 AD Type 和 AD Data 的总长度。范围从 1 到 31 字节。
  • AD Type:
    • 1 字节,表示数据类型。各个类型由 Bluetooth SIG 定义,每种类型都有特定的含义(例如设备名称、服务 UUID 等)。
  • AD Data:
    • 0 到 31 字节,表示实际的数据内容。数据的解释依赖于 AD Type。

(2)广播数据包例子

一个典型的广播数据包可能包含多个 AD 结构。举个例子:

static const struct bt_data ad[] = {
    BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)),
    BT_DATA(BT_DATA_NAME_COMPLETE, CONFIG_BT_DEVICE_NAME, sizeof(CONFIG_BT_DEVICE_NAME) - 1),
};

这个例子中包含两个 AD 结构:

  1. Flags

    • Length: 2 字节(1 字节类型 + 1 字节数据)
    • AD Type: 0x01(Flags)
    • AD Data: 0x06(General Discoverable Mode 和 BR/EDR 不支持)
  2. Complete Local Name

    • Length: 1 + strlen(CONFIG_BT_DEVICE_NAME)
    • AD Type: 0x09(Complete Local Name)
    • AD Data: 设备名称的字节数组

(3)具体例子解析

假设设备名称是 "MyDevice",那么广播数据的二进制表示如下:

Flags

Length: 0x02
AD Type: 0x01
AD Data: 0x06

Complete Local Name

Length: 0x09 (1 byte AD Type + 8 bytes "MyDevice")
AD Type: 0x09
AD Data: 0x4D 0x79 0x44 0x65 0x76 0x69 0x63 0x65 ("MyDevice")

合并后的广播数据包可能如下所示(假设配置了两个 AD 结构):

0x02 0x01 0x06 0x09 0x09 0x4D 0x79 0x44 0x65 0x76 0x69 0x63 0x65

蓝牙广播数据类型

在蓝牙低功耗(BLE)协议中,广播数据(Advertising Data, AD)可以包含多种不同类型的信息,每种信息类型都有特定的含义和用途。以下是常见的蓝牙广播数据类型表:

数据类型 (Type)值 (Value)描述 (Description)
Flags0x01指示设备的功能,例如通用发现模式或 BR/EDR 支持情况。
Incomplete List of 16-bit Service Class UUIDs0x02未完整列出的 16 位服务类 UUID。
Complete List of 16-bit Service Class UUIDs0x03完整列出的 16 位服务类 UUID。
Incomplete List of 32-bit Service Class UUIDs0x04未完整列出的 32 位服务类 UUID。
Complete List of 32-bit Service Class UUIDs0x05完整列出的 32 位服务类 UUID。
Incomplete List of 128-bit Service Class UUIDs0x06未完整列出的 128 位服务类 UUID。
Complete List of 128-bit Service Class UUIDs0x07完整列出的 128 位服务类 UUID。
Shortened Local Name0x08缩短的本地设备名称。
Complete Local Name0x09完整的本地设备名称。
Tx Power Level0x0A发射功率级别。
Class of Device0x0D设备类别。
Simple Pairing Hash C-1920x0E简单配对的 Hash C-192。
Simple Pairing Randomizer R-1920x0F简单配对的随机数 R-192。
Device ID0x10设备 ID。
Security Manager Out of Band (OOB) Flags0x11安全管理器 OOB 标志。
Slave Connection Interval Range0x12从设备连接间隔范围。
Service Solicitation: 16-bit UUIDs0x14服务请求: 16 位 UUID。
Service Solicitation: 32-bit UUIDs0x1F服务请求: 32 位 UUID。
Service Solicitation: 128-bit UUIDs0x15服务请求: 128 位 UUID。
Service Data: 16-bit UUID0x16服务数据: 16 位 UUID。
Service Data: 32-bit UUID0x20服务数据: 32 位 UUID。
Service Data: 128-bit UUID0x21服务数据: 128 位 UUID。
Public Target Address0x17公共目标地址。
Random Target Address0x18随机目标地址。
Appearance0x19外观。
Advertising Interval0x1A广播间隔。
LE Bluetooth Device Address0x1B低功耗蓝牙设备地址。
LE Role0x1C低功耗角色。
Simple Pairing Hash C-2560x1D简单配对的 Hash C-256。
Simple Pairing Randomizer R-2560x1E简单配对的随机数 R-256。
URI0x24统一资源标识符(URI)。
Indoor Positioning0x25室内定位。
Transport Discovery Data0x26传输发现数据。
LE Supported Features0x27低功耗支持的功能。
Channel Map Update Indication0x28

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值