蓝牙BLE句柄指示\确认(Handle Value Indication\Confirmation)(CH582)

本文详细介绍了蓝牙BLE中的Handle Value Indication及Confirmation,重点解析了CH58x芯片如何实现Indication功能。从修改特征值属性、配置文件、发送与确认流程,到手机连接验证和Central接收Indication的步骤,展示了Indication相对于Notification的特性和应用场景。通过示例代码,帮助开发者理解和应用Indication功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接:

蓝牙BLE句柄指示\确认(Handle Value Indication\Confirmation)(CH582) - SweetTea_lllpc - 博客园 (cnblogs.com)

前言:

CH583 是集成 BLE 无线通讯的 RISC-V MCU 微控制器。一般在使用BLE协议进行数据传输,会优先考虑Peripheral(外设从机角色例程)。在CH582的SDK中,自定义包含五种不同属性的服务,包含可读、可写、通知、可读可写、安全可读,唯独没有indication属性的特征值。本篇博客针对Indication使用进行讲解。

一、indication属性原理

当Server想要Client发送快速的属性状态更新时,它可以发送一条句柄值通知(Notification)。这是Server能够发给Client的两种消息中的一种,并且是不要求响应的。Server可以在任何时刻发送该Notification,同时该Notification也是不可靠的。

句柄值指示(Indication)类似于Notification,它有着相同的属性句柄字段和数值,不同的是Client收到Indication以后需要回复。Server一次只能发送一条Indication,并且只有在收到确认响应(Confirmation)后才能发起下一条Indication。这些行为都是在GATT层完成。由于有自动确认机制,Indication在很多应用层级的协议制定中有比较广泛应用。

二、CH58x芯片Indication的实现

由于Peripheral例程中已包含了Notification的功能,通道4进行Noti数据传输。本篇博客基于该功能进行修改,对以前只接触过Notification的小白来说更加通俗易懂。

1、特征值4属性修改,给Characteristic 的属性添加indication 属性

static uint8_t simpleProfileChar4Props = GATT_PROP_INDICATE;

按照如上修改配置文件属性后,对应的属性表也配置成功了,不需要再进行修改,默认的Noti已经配置好属性表

// Characteristic Value 4
{
    {ATT_BT_UUID_SIZE, simpleProfilechar4UUID},
    0,
    0,
    simpleProfileChar4},

2、配置文件修改,在peripheral.c文件夹中基于Notification进行修改

static void peripheralChar4Notify(uint8_t *pValue, uint16_t len)
{
#if 0                                  //原始程序是Noti
    attHandleValueNoti_t noti;
    if(len > (peripheralMTU - 3))
    {
        PRINT("Too large noti\n");
        return;
    }
    noti.le
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值