文章目录

  • 一、 广播类型
    • 实现动态广播的方法是: 广播->停止广播->修改参数->重启广播
  • 二、什么是蓝牙动态广播?
    • 1.1 前导
    • 1.2 接入地址
    • 1.3 报头
      • 1.3.1 广播报文报头
    • 1.4 长度
      • 广播报文:长度域包含6个比特,有效值的范围是6~37。
      • 数据报文:长度域包含5个比特,有效值的范围是0~31。
    • 1.5 数据(AdvData)

添加广播内容。这种直接把内容广播出去,发现者不必连接就能获取数据。

一、 广播类型

/**@defgroup BLE_GAP_AD_TYPE_DEFINITIONS GAP Advertising and Scan Response Data format* @note Found at https://www.bluetooth.org/Technical/AssignedNumbers/generic_access_profile.htm* @{ */
#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. */
#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE         0x03 /**< Complete list of 16 bit service UUIDs. */
#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_MORE_AVAILABLE   0x04 /**< Partial list of 32 bit service UUIDs. */
#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_COMPLETE         0x05 /**< Complete list of 32 bit service UUIDs. */
#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE  0x06 /**< Partial list of 128 bit service UUIDs. */
#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_COMPLETE        0x07 /**< Complete list of 128 bit service UUIDs. */
#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. */
#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R         0x0F /**< Simple Pairing Randomizer R. */
#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_TK_VALUE           0x10 /**< Security Manager TK Value. */
#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. */
#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_128BIT      0x15 /**< List of 128-bit Service Solicitation UUIDs. */
#define BLE_GAP_AD_TYPE_SERVICE_DATA                        0x16 /**< Service Data - 16-bit 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_LESC_CONFIRMATION_VALUE             0x22 /**< LE Secure Connections Confirmation Value */
#define BLE_GAP_AD_TYPE_LESC_RANDOM_VALUE                   0x23 /**< LE Secure Connections Random Value */
#define BLE_GAP_AD_TYPE_URI                                 0x24 /**< URI */
#define BLE_GAP_AD_TYPE_3D_INFORMATION_DATA                 0x3D /**< 3D Information Data. */
#define BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA          0xFF /**< Manufacturer Specific Data. */
/**@} */
//
//   Adv Packet, Response Packet
//
// 长度 类型 数据(xx xx xx ** xx)u8   tbl_advData[] = {0x02, BLE_GAP_AD_TYPE_FLAGS, 0x05, // BLE limited discoverable mode and BR/EDR not supported0x05, BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE, 0x12, 0x18, 0x0F, 0x18, // incomplete list of service class UUIDs (0x1812, 0x180F)0x03, BLE_GAP_AD_TYPE_APPEARANCE, 0x80, 0x01, // 384, Generic Remote Control, Generic category0x09, BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME, 'x', 'j', 'q', 'l', 'i', 's', 'u', 'n',
};u8    tbl_scanRsp [] = {// 标识符0x28bd  dongle地址0x09, BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA, 0xbd, 0x28, 0x36, 0xEC, 0x49, 0xB8, 0xFF, 0xFF,
};bls_ll_setAdvData( (u8 *)tbl_advData, sizeof(tbl_advData) );
bls_ll_setScanRspData( (u8 *)tbl_scanRsp, sizeof(tbl_scanRsp));

实现动态广播的方法是: 广播->停止广播->修改参数->重启广播

二、什么是蓝牙动态广播?

示例:下面以某一款ibeacon基站为例。

02 01 06 03 03 3C FE 17 FD 00 03 B7 00 05 73 62 C8 8E 00 00 00 C4 E8 A6 E4 F0 01 10 64 1F 0E

固定内容 17 FD 00 03 B7 00 05
考勤信息 73 62 C8 8E 00 00 00 C4
Major E8 A6
Minor E4 F0
电量 64
随机数 1F
版本号 0E

  1. 以上是某型号的固件版本的广播内容,只是相较于蓝牙beacon用来区分各段数据的意义广播包中每个单位考勤信息是不一样的,随着随机数的变化major和minor的数据也会发生相应的改变。
  2. 对此设备研究了很久,其中随机数的变化和major、minor的变化是一样的,但是生产方利用加密的算法导致内容随着时间的变化随机生成,因此在某D上进行考勤时,用第三方模拟器会产生校验不通过的情形。


1.1 前导

前导是一个8比特的交替序列。根据接入地址的第一个比特为0或者1,分01010101和10101010两种。接收机可以根据前导的无线信号强度来配置自动增益控制。

1.2 接入地址

接入地址有两种类型:广播接入地址和数据接入地址。

广播接入地址:固定为0x8E89BED6,在广播、扫描、发起连接时使用。
数据接入地址:随机值,不同的连接有不同的值。在连接建立之后的两个设备间使用。

1.3 报头

1.3.1 广播报文报头




1.4 长度

广播报文:长度域包含6个比特,有效值的范围是6~37。

数据报文:长度域包含5个比特,有效值的范围是0~31。

广播报文和和数据报文的长度域有所不同,主要原因是:广播报文除了最多31个字节的数据之外,还必须要包含6个字节的广播设备地址。6+31=37,所以需要6比特的长度域。

再次强调:广播时必须要包含6个字节的广播设备地址。

1.5 数据(AdvData)

广播和扫面响应的数据格式如下图所示,由有效数据部分和无效数据部分组成。

[Telink][TLSR8251] [泰凌微][SDK3.4] 添加广播内容 和 动态广播 厂商信息相关推荐

  1. [Telink][TLSR8251] [泰凌微] DTM测试教程

    一.固件烧录 1. 硬件连接 使用usb线将PC与烧录器连接,再将烧录器与PCB连接,使用3根线,VDD,CLK,GND.连接图与连接口如下图所示: 2. 烧录软件使用 打开应用程序Telink BD ...

  2. [Telink泰凌微825x]硬件开发环境搭建(一)

    使用安信可TB04模块搭建泰凌微官方SDK开发环境 文章目录 目录 前言 一.模块的选择 二.原理图说明 1.原理图 2.原理图说明 3.GERBER文件下载 总结 前言 最近需要用到蓝牙mesh组网 ...

  3. 泰凌微TLSR825X开发一蓝牙通信实例

    背景 泰凌微蓝牙方案在消费类产品中近两年才火起来,实际网上也没有太多资料,芯片缺货的情况下作为替代方案还是可行的,手上有块TLSR8258的开发板,也就边看文档调试边记录 这里采用8258的方案在调, ...

  4. 泰凌微BDT烧录软件遇到的问题

    项目场景:使用泰凌微BDT烧录固件错误 打开软件,点击activate的时候,弹出该文字提示: 问题描述 提示:这里描述项目中遇到的问题: create process falied! telink ...

  5. 泰凌微ble mesh蓝牙模组天猫精灵学习之旅 ① 小白也痴迷,如何在 Linux环境搭建编译烧录 安信可TB02,点亮一盏LED灯;

    本<泰凌微ble mesh蓝牙模组天猫精灵学习之旅>系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.小 ...

  6. 泰凌微ble mesh蓝牙模组天猫精灵学习之旅③简单入门安信可TB-02开发开发板轻松接入天猫精灵,语音控制冷暖灯so easy!

    本<泰凌微ble mesh蓝牙模组天猫精灵学习之旅>系列博客学习由半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.小白也痴迷,如 ...

  7. 泰凌微8258入门教程——导读

    基于泰凌微TLSR8258 Bluetooth® SIG Mesh 的入门系列教程 本专栏第一阶段的博文撰写在2021年9月份全部完成,主要包括 环境篇,开发套件购买+开发环境搭建+开发内容介绍 Me ...

  8. 泰凌微8258入门教程 环境篇⑤——不同SDK的区别和SDK文件内容的简单介绍

    文章目录 一.前文 二.不同SDK的区别 三.SDK文件内容 四.Android Apk 一.前文 最近挺多博友加我微信,问了我一些比较简单且基本的问题. 虽然比较简单且基本,但是架不住问的人多,我还 ...

  9. 泰凌微8258入门教程 基础篇⑬——群组(订阅)增删流程

    文章目录 一.演示 二.源码分析 三.流程图梳理 3.1 添加群组(订阅) 3.2 删除群组(订阅) 四.增删群组日志 4.1 添加群组(Living Room) 4.2 添加群组(Kitchen) ...

最新文章

  1. IbatisNet开发使用小结
  2. idea lombok安装后还是标红_小辣椒神器Lombok
  3. 第四章 高级数据结构
  4. 数据库课程设计结论_结论
  5. 阿里云天池 Python训练营Task2: Python基础练习:数据结构大汇总 学习笔记
  6. CCNP-第一篇-思科SLA+华为BFD+ODR+浮动路由
  7. SpringBoot2.1.5(39)--- 开发restful 风格Api
  8. 华为今年或发两款5G产品:5G CPE Win和5G随行WiFi
  9. 如何保护网页按钮不被XSS自动点击
  10. AndroidStudio安卓原生开发_activity之间复杂对象类型的数据传递---Android原生开发工作笔记92
  11. 这N张模板,做出了秒杀echarts和python的可视化大屏,老板很满意
  12. android post数据到php服务器,通过post方法将数据上传到服务器Android Studio
  13. OpenCV人工智能图像处理学习笔记2 opencv初识图片保存像素理解
  14. 人工智能 企业变革_我们如何利用(人工)情报变革医院的运营管理
  15. centos 7 sogou input
  16. SAP 标准Status拷贝(SE41 SAPLSLVC_FULLSCREEN -> STANDARD_FULLSCREEN )
  17. windows - 更改用户账户名称(windows10)
  18. jeapedu 76 列表刪除一個元素項
  19. 最全的“四大天王”合影集(绝对经典…
  20. 6.18上午CVPR直播 | 清华三维视觉研究团队:三维人体重建与渲染、高精度人脸生成

热门文章

  1. 【el-upload实现一个修改头像的功能】
  2. Python图像处理的一部分
  3. Windows10 安装 Vue3
  4. 流量主开通以及添加广告步骤
  5. 网关的其中一个重要功能,就是实现请求的鉴权:zuulFilter
  6. AOP面向切面编程的三种实现方式
  7. 软件测试面试必问的5个问题【扫雷】
  8. SLAM_ch12建图
  9. 熊猫卡丁车图片android版,熊猫卡丁车-宝宝巴士
  10. mysql 累加_mysql累加、累减