自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 蓝牙4.2:GATT、SPP、属性表、服务、特征

GATT流程总结:GATTC向GATTS发送GATT请求,GATTC发送目标UUID,GATTS根据该UUID去寻找对应的服务,并将该服务的UUID和句柄范围返回到GATTC,随后GATTC可以发起特征发现请求,GATTS会在该句柄范围内去进行遍历,寻找目标特征,然后将目标特征的UUID和句柄返回到GATTC,GATTC拿到特定句柄后,便可直接通过句柄对特征值进行读写操作了。GATT数据交互过程可以这样理解,GATT可以提供一个数据交换的通道,ATT是设备的属性,那如何去获取这个状态的数据呢?

2025-02-15 22:27:07 1646

原创 蓝牙4.2:ESP32的收发流程代码

把拿过来的结构体复制到main函数上方进行定义,这里注意.p_service_uuid = adv_service_uuid128,这个adv_service_uuid128是没有定义的,也应该去刚才的文件里拿过来进行粘贴定义,uuid给16位就够用了,没必要用源代码里的32位,所以将结构体中.service_uuid_len=32改成16。用于分组,像一个大的“文件夹”,比如在一个大型商场里,可能会有多个不同区域的蓝牙信标,像服装区、餐饮区、超市区等,就可以给每个区域的信标设置不同的命名空间。

2025-02-13 22:02:03 1321

原创 蓝牙4.2:基于ESP32的Eddystone广播收发

分析完这一套逻辑,再留意一下main函数里的最后一行,esp_ble_gap_set_scan_params(&ble_scan_params),如果说刚才提到的代码都是官方的demo不需要去改,那这个地方就需要我们自己去根据实际情况去修改了,跳转到ble_scan_params的定义。若进入该分支,则先判断该包是否是一个Eddystone广播包,如不是则返回,如果是,则调用 esp_eddystone_show_inform(&eddystone_res),这个函数的实现如下。分支来处理扫描结果。

2025-02-12 20:57:50 1859

原创 蓝牙4.2:Beacon广播信标(以Google Eddystone为例)

数据(PDU,在上一篇文章L2CAP介绍中出现):最少是六个字节,因为自身地址就是6位,真正有效的数据在有效载荷内,而这个有效载荷中包含的广播数据由多个AD结构体组成,AD结构体也在图中表示了出来,由一个字节表示长度和一个字节表示类型和x个字节的数据构成,这里的x=长度-类型。以第一个AD结构为例:一共是三个字节,其中Len代表类型+数据的长度总和为两个字节,而长度占一个字节,故类型占据一个字节,其中类型赋值为0x01,查表后才能知道代表的具体含义。长度,这里的长度表示后面6-37字节数据的长度。

2025-02-12 16:03:44 292

原创 蓝牙4.2:协议栈结构——主机和控制器

一个设备可同时作为服务器和客户端。交换配置,发现对方设备上的服务和特性、读写特征值的通知和指示可以理解为ATT是一个盒子,里面存放着LED灯的信息,如果是1就开灯,0就关灯。但是如何把这个信息拿出来或者说传出去?可以将这个ATT盒子当成一个GATTS服务器,另外一个蓝牙设备当成GATTC,通过GATT接口进行数据传输。控制器和主机的通讯流程如图。

2025-02-11 21:48:15 761 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除