<蓝牙BLE>cc2541发现服务与特征值

声明,本文转载自“甜甜的大香瓜”的博客,原文地址如下:

http://blog.csdn.net/feilusia/article/details/46909847

一、简介

本篇以SimpleBLECentral工程为例,解析CC2541作为主机时是如何发现从机的服务和特征值的。


二、实验平台

协议栈版本:BLE-CC254x-1.3.2

编译软件:IAR 8.20.2

硬件平台:smart RF开发板


三、服务和特征值

一个工程可以有多个服务,比如按键服务、心率计服务、温度计服务。

一个服务可以有多个特征值,特征值是主从机传输数据的媒介,像运人渡河的小船。


如果主机要想获得按键服务的特征值,必须先发现按键服务、再获得按键服务的特征值句柄、再根据特征值句柄获取特征值。


四、代码解析

1、启动发现服务事件

<蓝牙BLE>cc2541发现服务与特征值_第1张图片

在连接完成时,主机会判断是否之前获取过特征值句柄,如果没有获取到,则调用定时器进“START_DISCOVERY_EVT事件”开始发现服务。


2、发现服务事件

<蓝牙BLE>cc2541发现服务与特征值_第2张图片


3、发现服务的函数

<蓝牙BLE>cc2541发现服务与特征值_第3张图片

默认发现的是UUID为FFF0的服务。


4、发现服务的回调函数

<蓝牙BLE>cc2541发现服务与特征值_第4张图片

发现服务后,就会进入该函数。

此时可以通过特征值的UUID来读取对应的特征值句柄。默认的是读取CHAR1的特征值句柄。


5、获得特征值句柄

<蓝牙BLE>cc2541发现服务与特征值_第5张图片

读到特征值句柄后会再次进入该回调函数,此时将特征值句柄保存下来,随口可用来操作特征值。



你可能感兴趣的:(蓝牙,特征值,BLE)