CC2540主机事件回调函数

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函数执行后调用。









你可能感兴趣的:(回调,BLE)