一、简介
本文以SimpleBLECentral工程为例,解析CC2541作为主机时是如何发现从机的服务和特征值的。
二、实验平台
协议栈版本:BLE-CC254x-1.4.0
编译软件:IAR 8.20.2
硬件平台:Smart RF(主芯片CC2541)
三、版权声明
博主:甜甜的大香瓜
声明:喝水不忘挖井人,转载请注明出处。
原文地址:http://blog.csdn.NET/feilusia
联系方式:897503845@qq.com
香瓜BLE之CC2541群:127442605
香瓜BLE之CC2640群:557278427
香瓜BLE之Android群:541462902
香瓜单片机之STM8/STM32群:164311667
甜甜的大香瓜的小店(淘宝店):https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i
四、实验前提
1、在进行本文步骤前,请先阅读以下博文:
暂无
2、在进行本文步骤前,请先实现以下博文:
暂无
五、基础知识
1、服务和特征值是什么?
答:
一个工程可以有多个服务,比如按键服务、心率计服务、温度计服务。
一个服务可以有多个特征值,特征值是主从机传输数据的媒介,像运人渡河的小船。
如果主机要想获得按键服务的特征值,必须先发现按键服务、再获得按键服务的特征值句柄、再根据特征值句柄获取特征值。
六、代码解析
1、启动发现服务事件
在连接完成时,主机会判断是否之前获取过特征值句柄,如果没有获取到,则调用定时器进“START_DISCOVERY_EVT事件”开始发现服务。
2、发现服务事件
3、发现服务的函数
默认发现的是UUID为FFF0的服务。
4、发现服务的回调函数
发现服务后,就会进入该函数。
此时可以通过特征值的UUID来读取对应的特征值句柄。默认的是读取CHAR1的特征值句柄。
5、获得特征值句柄
读到特征值句柄后会再次进入该回调函数,此时将特征值句柄保存下来,随口可用来操作特征值。