BLE的Advertising包

2024-06-06 02:48
文章标签 ble advertising

本文主要是介绍BLE的Advertising包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Physical Channel:40个RF频道,3个是advertising 的,37个是data的。
advertising channel index的37对应的频率是:2402Mhz,38是2426Mhz,39是2480Mhz。data channe l index 0是2404,步进2Mhz。

空中包结构:Link Layer packet format:
|1byte Preamble| 4byte Access address | 2-39byte PDU | 3by te CRC |
Preambel byte是用来同步通讯的,advertising 包用 10101010b作为Preamble.(都是固定的,抓包里省去这个)
Access Address针对Advertising 包的是:0x8e89bed6. (固定的,数字信道。通过地址就知道这是adv包,同一频道区分不同通讯设备的)
advertising的PDU格式是:|16bit Header|payload|
16bit header:LSB|PDU Type 4bit |2bit RFU|1bit TxAdd|1bit Rx Add|6bit Length|2bit RFU|MSB
Length有效是6到37之间。
advertising的PDU type:
0000 ADV_IND     0001 ADV_DIRECT_IND   0010 ADV_NONCONN_IND   0011 SCAN_REQ
0100 SCAN_RSP   0101 CONNECT_REQ   0110 ADV_SCAN_IND   0111-1111 Reserved
使用的是2,ADV_NONCONN_IND)

ADV_IND: connectable undirected advertising event.这个用来广播可以连接的设备。说明自己是可以被连接的。广播中带有自己的地址。
• ADV_DIRECT_IND: connectable directed advertising event。包的payload:|AdvA 6byte| InitA 6byte| 这个包用来向特定的设备建立连接。
• ADV_NONCONN_IND: non-connectable undirected advertising event。包的payload:|AdvA 6byte| 0-31byte AdvData| 这个包用来广播信息。
• ADV_SCAN_IND: scannable undirected advertising event。包格式同上。
SCAN_REQ包:payload:|ScanA 6byte| AdvA 6byte|
SCAN_RSP包:payload:|AdvA 6byte| 0-31byte ScanRspData|
CONNECT_REQ包:payload:|6byte InitA|6byte AdvA|22byte LLData|

AdvData 结构:
|AD 结构1|AD结构2|。。。
每个结构都是:
|length|AD type|AD data|
简单的说就是 |数据长度|AD数据种类|数据| 这种一块一块拼起来的数据包。
AD type定义:
Service UUIDs: 需要外部查表,不用这个字段。
Local Name:0x09
Flags:
Manufacturer Specific Data:0xff . The first 2 octets contain the Company Identifier Code followed by additional manufacturer specific data
TX power Level : (难道算距离的??)0x0A。
Security Manager Out of Band (OOB):仅仅在out-of-band 机制中使用???什么破机制??0x0d,0x0e,0x0f
Security Manager TK Value:仅在out-of-band机制中使用。0x10
Slave Connection interval range : 连接的交换信息的间隔。(不用连接这个参数就没用了)
Service Solicitation: 给别的设备说自己要的服务。(这个似乎用不到)
Service Data:service UUID和相关的数据。0x16

这篇关于BLE的Advertising包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1034887

相关文章

蓝牙ble数传芯片推荐,TD5327A芯片蓝牙5.1—拓达半导体

蓝牙数传芯片TD5327A芯片是一款支持蓝牙BLE的纯数传芯片,蓝牙5.1版本。芯片的亮点在于性能强,除了支持APP端直接对芯片做设置与查询操作,包括直接操作蓝牙芯片自身的IO与PWM口以外,还支持RTC日历功能,可以做各类定时类操作,极大丰富了蓝牙在IOT产品中的应用。此外,在数传应用方面,此芯片支持串口流控功能,提大提高了数据传输的稳定与可靠性。 拓达蓝牙芯片特点: 支持RTC日历功能,超

uniapp 低功耗蓝牙BLE分包

ble.js // 分包写入蓝牙async sendWriteBLECharacteristicValue(deviceId,serviceId,writeCharacteristicId,readCharacteristicId,buffer,success, // 成功回调failure, // 失败回调) {const offset = 500; // 偏移量let pos = 0;

【深海王国】小学生都能做的APP?AppInventor、BLE蓝牙、Arduino联合开发你的第一个手机远程控制程序(7)

Hi~ (o^^o)♪, 各位深海王国的同志们,早上下午晚上凌晨好呀~ 辛勤工作的你今天也辛苦啦(/≧ω) 今天大都督依旧为大家带来小学生都能学会的APP制作教程,帮你一周内快速开发一款可以和单片机无线通讯的手机蓝牙APP,let’s go! (7)完结篇:APP最终美化、配色、logo一应俱全 不知不觉,本系列已经来到了最后一节,大都督看好你!继续加油!最后一节,我们将完成整个手机远程控制

BLE 低功耗蓝牙开发

开发步骤: 1.权限: <uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /><uses-permission android:name="android.permission.

WiFi/BLE芯片(1):英飞凌

前言: 大部分客户很少直接接触到WiFi/Bluetooth的芯片,一般是直接封装到了模块中,隔了一层。具体到芯片而言,WiFi/BLE芯片,芯片厂家有:Qualcomm高通、broadcom博通、Infineon英飞凌、Nordic诺迪科、Espressof乐鑫等。而英飞凌这块产品也是很丰富的,低功耗、距离等性能指标方面做的不错。 英飞凌AIROC蓝牙芯片RoadMap:

ESP32 BLE学习(1) — GAP和GATT回调函数作用

前言 (1)学习本文之前,需要先了解的基础知识:ESP32 BLE学习(0) — 基础架构 (2)该部分只是对GAP和GATT回调函数进行简单的介绍,因为这两个回调函数中参数太多,个人认为没必要全部进行讲解。因此只有当我认为需要使用的时候,才会讲解对应的内容。 回调函数作用介绍 (1)在学习蓝牙基础架构的时候,我们知道GAP主要用来进行广播,扫描和发起连接等。而GATT用来规范属性(

ESP32 BLE学习(0) — 基础架构

前言 (1)学习本文之前,需要先了解一下蓝牙的基本概念:BLE学习笔记(0.0) —— 基础概念(0) (2) 学习一款芯片的蓝牙肯定需要先简单了解一下该芯片的体系结构,因此本文将会简单的介绍ESP32的蓝牙结构。 (3)因为乐鑫目前主推的是BLE低功耗蓝牙技术,因此我本人也主要侧重讲解BLE部分。 ESP32蓝牙系统介绍 蓝牙堆栈 (1)ESP-IDF 目前支持两个主机堆栈,Bl

低功耗蓝牙ble开发(一)——bluez介绍及源码分析

bluez-5.56源码 https://mirrors.edge.kernel.org/pub/linux/bluetooth/bluez-5.64.tar.xz 0、bluez5开发 ​ bluez5主要提供基于HCI和基于DBUS的接口,基于HCI的接口主要用于更细致控制蓝牙硬件模块,而基于DBUS的接口提供大量的蓝牙上层协议,能更好的管理蓝牙。 不使用glib、dbus开发的话,想

Jetson AGX Orin基于BlueZl蓝牙协议栈AOJ红外蓝牙体温计开发(低功耗蓝牙ble)

一、准备工作 安装blueZ以及相关的蓝牙测试工具: sudo apt updatesudo apt install bluezsudo apt install bluez-hcidump 然后看下蓝牙设备是否识别到,已经是否处于开启状态: root@test-desktop:~# hciconfig -ahci0: Type: Primary Bus: USBBD Addr

Android Ble低功耗蓝牙开发

一、新建项目 在Android Studio中新建一个项目,如下图所示: 选择No Activity,然后点击Next 点击Finish,完成项目创建。 1、配置build.gradle 在android{}闭包中添加viewBinding,用于获取控件 buildFeatures {viewBinding true} 添加完成后,点击同步Sync 2、配置清单文件