杰理701N可视化SDK之蓝牙相关配置和代码浅析

杰理701N可视化SDK支持在可视化工具中对蓝牙的一些功能进行配置, 比如蓝牙基本配置(蓝牙名, 蓝牙地址, 蓝牙发射功率等), 回连超时时间配置, 配对超时时间, TWS功能以及与APP连接协议的设置等. 本篇文章主要跟随SDK代码, 浅析蓝牙回连超时和配对超时部分的代码

蓝牙事件的上报

要了解蓝牙的一些功能, 首先需要先了解SDK中蓝牙启动的过程以及蓝牙事件的上报过程. 蓝牙的启动从进入蓝牙模式开始
开机启动, 从POWERON模式进入BT模式
开机启动
蓝牙开机goto_bt_mode, 进入BT模式初始化bt_mode_init(), 这个函数中会对btstack, profile, bt_sniff_feature等蓝牙功能进行初始化, 并发送APP_MSG_ENTER_MODE的消息, 设置APP_MODE_BT的标志
bt_mode_init函数
btstack创建好bt处理线程, 当有bt协议栈的消息上来的时候, 会通过btstack_event_update to_user()把消息发送到app线程通知处理BT_STACK消息或BT_HCI消息
btstack_event_update to_user()函数
app线程会在app_task_loop()中处理当前模式的消息
app task中的处理
调用了当前模式的ops->msg_handler处理
BT模式消息处理
所以bt协议栈的事件消息在bt_mode_msg_handler()中处理, 下图为bt_mode_msg_handler()函数BT消息事件处理
BT模式消息处理2
以上就是BT模式处理消息处理的地方, BT事件消息在BT_STATUS枚举中有定义, 有以下BT事件消息
BT模式的事件消息

开机自动进入配对模式

在可视化工具中可以配置开机自动进配对的功能
开机自动配对功能
代码中开机没有TWS配对信息的时候自动进入配对状态, 在开机tws_power_on()初始化的时候 这里以立体声耳机为例, 由于是立体声输出, 所以这里向”app_core”线程发送了APP_MSG_TWS_UNPAIRED的消息
开机自动配对功能2
MSG_FROM_APP的消息, dual_conn_app_msg_entry会接收到
dual_conn_app_msg_entry
“app_core”线程接收到这条消息的时候, 程序会进入注册的dual_conn_app_msg_entry的handler, dual_conn_app_event_handler()中处理APP_MSG_TWS_UNPAIRED的消息, 由于我们使用的立体声耳机没有TWS操作所以这里会直接进入了tws_pair_timeout()
dual conn处理
在tws_pair_timeout()函数内, 配对列表为空则打开可见可连, 配对列表不为空则做回连page device操作
tws_pair_timeout()函数

开机回连的配置和代码浅析

单次回连超时时间可在可视化工具中里面配置单次回连时间以及开机回连超时时间, 配置好了点击编译后可视化工具会在sdk_config.h中生成对应配置的宏定义
回连时间配置
SDK中自动会设置sdk_config.h中的宏定义
回连时间宏定义
开机回连的时候, 进入dual_conn_page_device()函数
回连函数
启动单次回连的定时器, 并使用蓝牙接口发送USER_CTRL_START_CONNEC_VIA_ADDR命令给到蓝牙, 启动蓝牙连接, 单次回连timeout的时候进入dual_conn_page_device_timeout()的回调函数
启动回连定时器
单次回连超时后会判断有没有到达设定的info->timeout, 也就是总的回连超时时间, 这里没到达开机回连超时时间的情况会把当前设备使用list_add_tail() 继续加回设备链表中, 以便下次继续回连
单次回连超时函数
tws_dual_conn_state_handler()会继续发起下一次回连, 以及操作可见可连的操作
tws_dual_conn_state_handler()函数

超距linkloss回连配置和代码浅析

超距回连的配置主要在可视化工具中的”蓝牙配置”->超距断开回连超时设置
超距回连配置
首先BT协议栈上报蓝牙profile断连事件和HCI上报的蓝牙断连事件
profile断连事件
HCI上报的断连事件
HCI断连事件
从log看HCI上报的断连事件断连原因为08断连
断连log
tws_dual_conn.c中的hci_msg_entry接收处理这条APP_MSG FROM_BT_HCI的消息
处理断连消息
当收到08断连的消息的时候, 将此地址的设备添加到page list中
08断连
接着与开机回连相同, 同样调用tws_dual_conn_state_handler()开始启动回连流程, 这里linkloss超时时间即为可视化工具中设置的120s
linkloss超时时间

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小的代码里面挖呀挖呀挖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值