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

句柄值指示(Indication)类似于Notification,它有着相同的属性句柄字段和数值,不同的是Client收到Indication以后需要回复。在CH58x的peripheral例程中,发送indication或者notification是通过TMOS任务管理,1s调用1次performPeriodicTask函数进行发送,然后在函数中进行peripheralChar4Notify或者peripheralChar4Indcation的发送,最终就实现了Indication数据1s发送1次。
摘要由CSDN通过智能技术生成

原文链接:

蓝牙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
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值