CC2541之notify通知方式的介绍和使用 一、简介 本篇介绍CC2541从机端的notify通知的两种方式。 二、实验平台 协议栈版本:BLE-CC254x-1.4.0 编译软件:IAR 8.20.2 硬件平台:Smart RF开发板 三、基础知识 1、简介notify通知的两种方式 答: 1)GATT_Notification 在从机代码中使用,由从机主动通知,且不需要主机发出请求和回应。 2)GATTServApp_ProcessCharCfg 在从机代码中使用,需要主机发送一次“通知请求”给从机,从机收到“通知请求”才发送通知。 实际上这个函数里依然会调用GATT_Notification这个函数。 2、什么是CCC? 答: Client Characteristic Configuration,俗称CCC。 notify属性的特征值,会多读、写属性的特征值多一个CCC。 从机要想使用notify函数时能正常发送出数据,就必须保证CCC是被打开的。 3、CCC如何打开? 答:notify开关可由主机端或者从机端打开,但应尽量保证由主机来打开比较合适,毕竟它是“主机”,“主机“就该有主动权。 1)主机端打开(推荐) 先获取到CCC的特征值句柄,然后利用CCC的特征值句柄往CCC的特征值中写入0x0001。 参考本博客博文《CC2541之主机端获取notify数据》。 2)从机端打开(不推荐)
注,如果上面的0x0001改为0x0000,则为关闭notify开关。 4、如何获取CCC的句柄? 答:先获取到这个CCC所属的特征值的特征值句柄,然后将该特征值句柄+1。 例如,想要获取到char6的CCC的句柄,我就必须先获取到char6的特征值句柄(参考本博客博文《CC2541之发现服务与特征值》),比如获取到的值是0x0035,则CCC的特征值句柄就是0x0036。之所以加1,是因为char6的CCC所在属性表的位置,正好在char6的特征值后面。 5、是否可以直接在主机代码中使用0x0036当做char6的CCC句柄? 答:可以,但是不推荐。 由于句柄是osal自动分配的,代码编译好之后,特征值句柄是固定的。但是一旦你在char6之前添加了一个特征值,那么char6的CCC句柄也会往后推算,这时候你的0x0036显然就没用了。 因此强烈推荐下文中使用的方法,自动获取句柄,详情自己看代码。 四、GATT_Notification范例 本范例是我自己写的,通过按下按键S1,通知出一串从0~19的20字节的数据。 此范例的前提1:已经添加好了特征值char6,并且长度为20。(参考博文《CC2541之添加特征值》) 此范例的前提2:按键可以使用。(参考博文《CC2541之按键》) 1、添加一个“char6在属性表中的偏移值”的宏(simpleGATTprofile.c中)
可以在属性表simpleProfileAttrTbl中一个一个地数,“Characteristic Value 6”所在的正好是属性表中第18个。 2、定义一个notify函数(simpleGATTprofile.c中)
3、声明函数(simpleGATTprofile.h中)//******************************************************************************
4、按键中调用notify通知的函数(SimpleBLEPeripheral.c中)
5、实验结果 五、GATTServApp_ProcessCharCfg使用范例 注:TI提供的SimpleBLEPeripheral项目中,在周期事件里每隔5S即读取char3值一次,并把char3的值通知出去,此时用的就是GATTServApp_ProcessCharCfg方式。 1、周期事件中不停地设置char4的值
2、SimpleProfile_SetParameter中通知char4的值
3、实验结果 char4不停地通知着char3的值0x03。 |
notifyItemRangeRemoved 从下到上 notify consignee
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
从源码到上线:直播带货系统与短视频商城APP开发全流程
从源码开发到最终上线,直播带货系统和短视频商城APP的开发需要经过需求分析、技术选型、前后端开发、测试优化、部署上线等多个环节。每个环节都需要精心规划和细致实施,才能确保项目的成功上线和良好运营。希望本文能为您提供一个清晰的开发流程参考,助力您的项目顺利进行。
直播带货系统源码 直播商城APP 短视频带货小程序 直播带货平台搭建 带货软件开发 -
mysqld服务进程工作原理介绍
最近在看《高性能的 Mysql》一书,下面是关于如何学习统计 Mysql 服务器状态的学习总结,主要是学习使用 SHOW STATUS,SHOW ENGINE INNODB STATUS,SHOW PROCESSLIST,SHOW PROFILE 四个命令。 命令一:SHOW STATUSshow status 命令用于查询 Mysql 状态变量相关统计信息通过 show status
mysqld服务进程工作原理介绍 mysql max 获取另外值 mysql 最大连接数 修改 MySQL