[Telink][TLSR8251] [泰凌微][SDK3.4] 添加广播内容 和 动态广播 厂商信息
文章目录
- 一、 广播类型
- 实现动态广播的方法是: 广播->停止广播->修改参数->重启广播
- 二、什么是蓝牙动态广播?
- 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
- 以上是某型号的固件版本的广播内容,只是相较于蓝牙beacon用来区分各段数据的意义广播包中每个单位考勤信息是不一样的,随着随机数的变化major和minor的数据也会发生相应的改变。
- 对此设备研究了很久,其中随机数的变化和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] 添加广播内容 和 动态广播 厂商信息相关推荐
- [Telink][TLSR8251] [泰凌微] DTM测试教程
一.固件烧录 1. 硬件连接 使用usb线将PC与烧录器连接,再将烧录器与PCB连接,使用3根线,VDD,CLK,GND.连接图与连接口如下图所示: 2. 烧录软件使用 打开应用程序Telink BD ...
- [Telink泰凌微825x]硬件开发环境搭建(一)
使用安信可TB04模块搭建泰凌微官方SDK开发环境 文章目录 目录 前言 一.模块的选择 二.原理图说明 1.原理图 2.原理图说明 3.GERBER文件下载 总结 前言 最近需要用到蓝牙mesh组网 ...
- 泰凌微TLSR825X开发一蓝牙通信实例
背景 泰凌微蓝牙方案在消费类产品中近两年才火起来,实际网上也没有太多资料,芯片缺货的情况下作为替代方案还是可行的,手上有块TLSR8258的开发板,也就边看文档调试边记录 这里采用8258的方案在调, ...
- 泰凌微BDT烧录软件遇到的问题
项目场景:使用泰凌微BDT烧录固件错误 打开软件,点击activate的时候,弹出该文字提示: 问题描述 提示:这里描述项目中遇到的问题: create process falied! telink ...
- 泰凌微ble mesh蓝牙模组天猫精灵学习之旅 ① 小白也痴迷,如何在 Linux环境搭建编译烧录 安信可TB02,点亮一盏LED灯;
本<泰凌微ble mesh蓝牙模组天猫精灵学习之旅>系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.小 ...
- 泰凌微ble mesh蓝牙模组天猫精灵学习之旅③简单入门安信可TB-02开发开发板轻松接入天猫精灵,语音控制冷暖灯so easy!
本<泰凌微ble mesh蓝牙模组天猫精灵学习之旅>系列博客学习由半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.小白也痴迷,如 ...
- 泰凌微8258入门教程——导读
基于泰凌微TLSR8258 Bluetooth® SIG Mesh 的入门系列教程 本专栏第一阶段的博文撰写在2021年9月份全部完成,主要包括 环境篇,开发套件购买+开发环境搭建+开发内容介绍 Me ...
- 泰凌微8258入门教程 环境篇⑤——不同SDK的区别和SDK文件内容的简单介绍
文章目录 一.前文 二.不同SDK的区别 三.SDK文件内容 四.Android Apk 一.前文 最近挺多博友加我微信,问了我一些比较简单且基本的问题. 虽然比较简单且基本,但是架不住问的人多,我还 ...
- 泰凌微8258入门教程 基础篇⑬——群组(订阅)增删流程
文章目录 一.演示 二.源码分析 三.流程图梳理 3.1 添加群组(订阅) 3.2 删除群组(订阅) 四.增删群组日志 4.1 添加群组(Living Room) 4.2 添加群组(Kitchen) ...
最新文章
- IbatisNet开发使用小结
- idea lombok安装后还是标红_小辣椒神器Lombok
- 第四章 高级数据结构
- 数据库课程设计结论_结论
- 阿里云天池 Python训练营Task2: Python基础练习:数据结构大汇总 学习笔记
- CCNP-第一篇-思科SLA+华为BFD+ODR+浮动路由
- SpringBoot2.1.5(39)--- 开发restful 风格Api
- 华为今年或发两款5G产品:5G CPE Win和5G随行WiFi
- 如何保护网页按钮不被XSS自动点击
- AndroidStudio安卓原生开发_activity之间复杂对象类型的数据传递---Android原生开发工作笔记92
- 这N张模板,做出了秒杀echarts和python的可视化大屏,老板很满意
- android post数据到php服务器,通过post方法将数据上传到服务器Android Studio
- OpenCV人工智能图像处理学习笔记2 opencv初识图片保存像素理解
- 人工智能 企业变革_我们如何利用(人工)情报变革医院的运营管理
- centos 7 sogou input
- SAP 标准Status拷贝(SE41 SAPLSLVC_FULLSCREEN -> STANDARD_FULLSCREEN )
- windows - 更改用户账户名称(windows10)
- jeapedu 76 列表刪除一個元素項
- 最全的“四大天王”合影集(绝对经典…
- 6.18上午CVPR直播 | 清华三维视觉研究团队:三维人体重建与渲染、高精度人脸生成