<BLE>CC2540主机事件回调函数

本文详细解析了CC2540蓝牙模块的主机程序中事件回调函数的使用方法及其在不同事件下的处理流程,包括初始化、设备发现、连接及断开等关键步骤。

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

CC2540的主机程序为我们提供了事件回调函数,即static void simpleBLECentralEventCB( gapCentralRoleEvent_t *pEvent ),所谓的回调函数是在GAP状态发生改变时调用,用来对GAP初始化、设备发现、设备连接、断开连接等事件进行处理。该函数是在设备初始化阶段注册的。

我们跟踪simpleBLERoleCB进行查看:



也就是在这个事件处理的过程中一共注册了两个回调函数,分别是RSSI回调和事件回调。我们主要看事件回调函数。



回调函数采用switch语句实现,现在我们对他的各个情况进行分析。

1、GAP_DEVICE_INIT_DONE_EVENT



初始化完成事件,它是在GAPCentralRole_StartDevice初始化完成后执行的:


2、GAP_DEVICE_INFO_EVENT:



第一个if语句开启UUID过滤器。第二个if语句在接收到的pEvtData中查找SIMPLEPROFILE_SERV_UUID,如果查找到就保留地址和类型。需要提醒的一点是在这个函数后面我们也可以提取pEvtData中的其他数据。比如可以把一些数据放到广播中发出来,然后再这个地方进行接收。这就免去了连接的麻烦。

3、GAP_DEVICE_DISCOVERY_EVENT:



在第一个if语句中,如果没有开启UUID的过滤器,就把底层接收到到的消息传到列表中。消息中包含着从机的地址、类型、数据信息等。下面的代码是在LCD中显示。

4、GAP_LINK_ESTABLISHED_EVENT:



如果设备连接成功,那么就把参数改成设备连接成功的参数并且如果句柄值没有读到过,则进行发现服务事件。如果连接失败,就把连接参数改为空闲的状态。

5、GAP_LINK_TERMINATED_EVENT



连接参数全部设为空闲时的值。

6、GAP_LINK_PARAM_UPDATE_EVENT



进行参数更新,在GAPCentralRole_UpdateLink函数执行后调用。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值