中科蓝讯 自动关机

本文详细介绍了TWS耳机的自动关机功能,包括无配对、无连接和连接无操作三种模式下的自动关机实现方式。在没有与手机连接的情况下,自动关机可通过配置工具调整,而在连接状态下,需要在进入睡眠模式前开启自动关机计数。此外,还讨论了如何在不同状态和条件下控制自动关机的行为,如播放音乐和通话时的处理。
摘要由CSDN通过智能技术生成

在使用TWS耳机的时候,我们需要有着自动关机的功能。否则耳机不关机会一直在耗电,会大大的缩短耳机的续航时间。所以自动关机的功能是很需要的。

下面我们说下自动关机的功能,该功能有分为几种模式下:1、没有TWS配对成功需要关机 2、TWS配对没有和手机连接需要关机 3、与手机连接长时间无响应 关机

下面来说说自动关机各个的实现方式。

由上面的我们看到 1 和 2 自动关机有着一个共同性,那就是没有与手机连接。所以我们又可以将它们分为两类,一类与手机连接、一类没有与手机连接。

一、没有与手机连接

这一种模式下的自动关机呢,不需要我们修改code。这些原厂已经将这些都做好了的,只需要在配置工具中修改相应的配置就可以了。修改如下:

我们来看下 code 里面,它们是怎么去计数进行自动关机的。

通过跟踪代码,可以发现该计数是放在一个 5ms的定时器(usr_tmr5ms_thread)中的,由下图可以看到是每100ms 进行计数。

         当我们设定的时间值(sys_cb.pwroff_delay)减到0时就会去运行关机的操作。

关机的操作在 void func_bt_process(void) 函数中进行判断的。

由上图可以看到这里面去判断 sys_cb.pwroff_delay 值,然后在将关机的消息发送出去。你还可以看到有sys_cb.pwrdwn_tone_en 参数赋值为 1 了,这个参数是说你需不需要进行关机的提示音。(1 表示要关机提示音  0 表示不需要关机提示音)

        在这里的时候你们会不会发现一个问题,那就是我没有设置它同步一起关机,然而耳机一起关机了。因为同步关机在代码中默认是同步的,如果需要修改的话就需要将 sys_cb.discon_reason 参数赋值为 0 ,那样耳机就不会同步关机。(当然在这里是不需要去修改的,因为我们需要它们一起关机。但是在低电关机的时候那就需要了,所以在低电关机的地方将它赋值为 0 就可以了)

二、连接无操作自动关机

        这里我们通过跟log是不是发现,在连接上之后它就不去对 sys_cb.pwroff_delay 参数进行 -- 的操作了。看到下面图中的代码就知道是什么回事了。

在这里面是否看到了,在连接上设备之后它就将自动关机给关闭了、断开就打开自动关机的计数。所以我们需要在其他的地方将自动关机的功能打开,否则连接的时候是不会自动关机。

 耳机是有一个sleep的模式,So,我们将自动关机的设置放在进入sleep 之前,使得它在没进sleep和进入sleep 都能够进行自动关机的计数。放置的位置如下图:

         放在这里的时候是不是有一些疑惑呢?那播放音乐呀、通话呀 这个情况不是也都会跑吗?

So,你可以看到图中我有加一些判断的条件来进行开启自动关机和关闭自动关机。

        我这里是通过 bt_get_status 函数进行判断当前耳机的一个状态:

6  空闲状态       7 播放状态       9 通话状态

        获取到的状态最好在使用的时候进去确认,否则不同平台有可能不一样。

连接上之后空闲进入自动关机的时间要是不和无连接自动关机不一样呢,那就需要重新定义一个。如下图定义:

        没有进入sleep之前和无连接跑的计数函数一样。进入sleep之后跑的如下图:

        /***************************************  END ***********************************************/

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值