本帖最后由 懒猫爱飞 于 2018-8-7 10:01 编辑
1) ble_central_task.c
该源文件涉及到整个central角色的处理逻辑,所以需要好好理一下。下面结合相关函数,逐一总结。
函数列表源文件中涉及到函数如下所示:
? static const char*format_bd_address(const bd_address_t *addr) – 将MAC地址转换在字符串 ? static const char*format_uuid(const att_uuid_t *uuid) – 将UUID转换成字符串 ? static const char*format_properties(uint8_t properties) – 将属性值转换成字符串 ? static voidformat_value(uint16_t length, const uint8_t *value) – 将数值转换成字符串 ? static void scan_dev_evt(boolsw) – 启动/停止扫描 ? static voidhandle_evt_gap_adv_report(ble_evt_gap_adv_report_t *evt) – 处理广播数据包及应答数据包 ? static voidhandle_evt_gap_connected(ble_evt_gap_connected_t *evt) – 连接回调函数 ? static voidhandle_evt_gap_disconnected(ble_evt_gap_disconnected_t *evt) – 断开连接回调函数 ? static voidhandle_evt_gap_security_request(ble_evt_gap_security_request_t *evt) – 配对请求回调函数 ? static voidhandle_evt_gap_pair_completed(ble_evt_gap_pair_completed_t *evt) – 配对完成回调函数 ? static voidhandle_evt_gattc_browse_svc(ble_evt_gattc_browse_svc_t *evt) – 通过句柄扫描指定服务 ? static voidhandle_evt_gattc_browse_completed(ble_evt_gattc_browse_completed_t *evt) – 服务扫描完成回调函数 ? static voidhandle_evt_gattc_discover_desc(ble_evt_gattc_discover_desc_t *evt) – 发现描述回调 ? static void handle_evt_gattc_discover_completed(ble_evt_gattc_discover_completed_t*evt) – 发现完成回调函数 ? static voidhandle_evt_gattc_read_completed(ble_evt_gattc_read_completed_t *evt) – 读取参数完成回调 ? static voidhandle_evt_gattc_write_completed(ble_evt_gattc_write_completed_t *evt) – 写参数完成回调 ? static voidhandle_evt_gattc_notification(ble_evt_gattc_notification_t *evt) – 接收到notify回调 ? static voidhandle_evt_gattc_indication(ble_evt_gattc_indication_t *evt) – 接收到inidication回调 ? void ble_central_task(void*params) – cnetral的逻辑执行任务 以上19个函数就是central的所有逻辑应用函数,用它们可以完成基本的Central程序。为了构建自己的特有的逻辑应用,可以在此基础上添加其它逻辑应用程序,比如过滤广播包,比如加 函数简介下面对函数做一下简单的注释,以方便理解:
函数名称 : format_bd_address
函数描述 : 把MAC地址转换成字符串,主要是方便调试打印用的
入口参数 : *add – 要转换的MAC地址
出口参数 : 返回转换后的字符串指针
函数备注 : None
函数名称 : format_uuid
函数描述 : 把UUID转换成字符串,主要是方便调试打印用的
入口参数 : properties – 要转换的属性值
出口参数 : 返回转换后的字符串指针
函数备注 : None
函数名称 : format_properties
函数描述 : 把参数属性转换成字符串,主要是方便调试打印用的
入口参数 : *uuid – 要转换的UUID
出口参数 : 返回转换后的字符串指针
函数备注 : None
函数名称 : format_value
函数描述 : 把参数值转换成字符串,主要是方便调试打印用的
入口参数 : length – 要转换的数据长度
*value – 要转换的值
出口参数 : 返回转换后的字符串指针
函数备注 : None
函数名称 : scan_dev_evt
函数描述 : 启动或停止扫描
入口参数 : sw – true启动扫描 false停止扫描
出口参数 : 返回转换后的字符串指针
函数备注 : None
函数名称 : handle_evt_gap_adv_report
函数描述 : 扫描到应该数据广播包的回调函数
入口参数 : *evt – 广播包或应答数据
出口参数 : None
函数备注 : 如果需要过滤广播包或应答数据包可以在该函数中处理
函数名称 : handle_evt_gap_connected
函数描述 : 连接回调函数
入口参数 : *evt – 连接相关参数
出口参数 : None
函数备注 : 如果有其它逻辑处理程序可以在该函数中调用,比如发起配对,发起握手通信等
函数名称 : handle_evt_gap_connected
函数描述 : 连接回调函数
入口参数 : *evt – 连接相关参数
出口参数 : None
函数备注 : 如果有其它逻辑处理程序可以在该函数中调用,比如启动扫描服务,发起配对,发起握手通信等
函数名称 : handle_evt_gap_disconnected
函数描述 : 断开连接回调函数
入口参数 : *evt –相关参数
出口参数 : None
函数备注 : 断开连接后需要执行的动作可以在该函数中调用,比如闪灯,重新连接等
函数名称 : handle_evt_gap_security_request
函数描述 : 配对请求回调函数
入口参数 : *evt –相关参数
出口参数 : None
函数备注 : 接收到从机发来的配对请求,需要执行的动作可以在该函数中调用,比如触发配对等
函数名称 : handle_evt_gap_pair_completed
函数描述 : 配对完成回调函数
入口参数 : *evt –相关参数
出口参数 : None
函数备注 : 配对完成后需要执行的动作可以在该函数中执行,比如熄灭相指示灯,发起相关通信等
函数名称 : handle_evt_gattc_browse_svc
函数描述 : 通过handle值扫描指定的服务
入口参数 : *evt –相关参数
出口参数 : None
函数备注 : 会扫描到指定的服务,包括character,descriptor等
函数名称 : handle_evt_gattc_browse_completed
函数描述 : 服务发现完成的回调函数
入口参数 : *evt –相关参数
出口参数 : None
函数备注 : None
函数名称 : handle_evt_gattc_discover_desc
函数描述 : 发现特征值描述回调
入口参数 : *evt –相关参数
出口参数 : None
函数备注 : None
函数名称 : handle_evt_gattc_discover_completed
函数描述 : 完成发现所有服务回调
入口参数 : *evt –相关参数
出口参数 : None
函数备注 : None
函数名称 : handle_evt_gattc_read_completed
函数描述 : 读参数完成回调
入口参数 : *evt –相关参数
出口参数 : None
函数备注 : 执行读character动作,有返回值时会进入该回调函数,如果需要进行数据处理可以在该回调中调用。
函数名称 : handle_evt_gattc_write_completed
函数描述 : 写参数完成回调
入口参数 : *evt –相关参数
出口参数 : None
函数备注 : 执行完成写character动作后,会进入该回调函数,如果需要进行数据处理可以在该回调中调用。
函数名称 : handle_evt_gattc_notification
函数描述 : 接收到notify数据回调函数
入口参数 : *evt –相关参数
出口参数 : None
函数备注 : 收到notify数据后,会进入该回调函数,如果需要数据处理,请在该回调中调用。
函数名称 : handle_evt_gattc_notification
函数描述 : 接收到notify数据回调函数
入口参数 : *evt –相关参数
出口参数 : None
函数备注 : 收到notify数据后,会进入该回调函数,如果需要数据处理,请在该回调中调用。
函数名称 : handle_evt_gattc_indication
函数描述 : 接收到indication数据回调函数
入口参数 : *evt –相关参数
出口参数 : None
函数备注 : 收到indication数据后,会进入该回调函数,如果需要数据处理,请在该回调中调用。
函数名称 : ble_central_task
函数描述 : BLE任务函数,主要是启动BLE,执行相关回调任务等
入口参数 : * params –任务参数
出口参数 : None
函数备注 : None
| 一般要用到的回调就是handle_evt_gap_adv_report, handle_evt_gattc_notification,
handle_evt_gap_connected及handle_evt_gap_disconnected,如果需要什么逻辑处理,则需要开发者自己写相应的逻辑函数,然后再结合FreeRTOS设置定时事件,建立任务,发送消息等,关于FreeRTOS的应用,后面会单独写一篇学习日志,这里暂且不详细描述。 占楼备用 |