中
A
在 8251的b85m_ble_remoteSDK中使能软件定时器(BLT_SOFTWARE_TIMER_ENABLE)并且创建一个60ms的任务时,深度睡眠策略为DEEPSLEEP_MODE_RET_SRAM_LOW16K,Windows连接之后无法获取服务然后断开连接,安卓手机可以连接但是有概率会出现写入失败的问题,不使用软件定时器则一切正常,下图为部分代码:
你好,
可以抓包看下怎么断开的,windows和安卓都有推荐的连接间隔,可以去了解下。
@Soyo 目前手里暂时没有抓包工具,但是通过我这几天大量的实验发现只要进入Deepsleep模式之后就会出问题,我认为跟连接参数应该没有太大关系,只要连接间隔大到能让设备进入Deepsleep模式并且创建一个定时任务就会发生这种情况,如果把定时任务的执行周期边长,比如说3S执行一次这样会有很大的改善,但是如上述我说的使用默认连接参数13.75MS这样设备无法进入Deepsleep模式确实不会出现问题但是项目需求是需要长期处于Deepsleep模式下节省功耗,所以我猜测是不是软件定时器中的提前唤醒函数存在问题(bls_pm_setAppWakeupLowPower(blt_timer.timer[0].t, 1);)于是我把他关闭,让BLE事件来唤醒设备这样就没问题了,但是这样做定时器就不准了,还请帮忙看看除了抓包以外还有没有办法能找到问题所在,如果需要源码的话我这边也可以打个包提供
使用latency测试呢,bls_l2cap_requestConnParamUpdate (CONN_INTERVAL_10MS, CONN_INTERVAL_10MS, 99, CONN_TIMEOUT_4S);99代表可以错开99次连接间隔,即和master的通信可以1s钟通信一次,需要快速通信的时候调用bls_pm_setManualLatency()
@曾义翔
@Soyo 经过测试这种方法确实可行无论是Windows还是安卓都能正常连接和工作了,但是通过打印调试信息发现更新连接参数后无法进入回调函数,这是什么原因呢
你好,请官网下载最新的SDK,并打上patch6的升级补丁,会解决这个问题。
不要主动发起连接参数变更测试呢,使用主机默认的连接参数,同时手机不能写入是指的什么不能写入呢。
@Soyo手机写入是指用手机APP向服务器写入信息,在上述情况下该过程有小概率会写入失败,如下图所示:
@Soyo使用默认连接的参数没问题,但是在使用默认连接参数时由于连接间隔太短(默认为13.75MS)无法进入深度睡眠模式,项目要求需要进入深度睡眠保持低功耗模式
你好,
可以抓包看下怎么断开的,windows和安卓都有推荐的连接间隔,可以去了解下。
@Soyo 目前手里暂时没有抓包工具,但是通过我这几天大量的实验发现只要进入Deepsleep模式之后就会出问题,我认为跟连接参数应该没有太大关系,只要连接间隔大到能让设备进入Deepsleep模式并且创建一个定时任务就会发生这种情况,如果把定时任务的执行周期边长,比如说3S执行一次这样会有很大的改善,但是如上述我说的使用默认连接参数13.75MS这样设备无法进入Deepsleep模式确实不会出现问题但是项目需求是需要长期处于Deepsleep模式下节省功耗,所以我猜测是不是软件定时器中的提前唤醒函数存在问题(bls_pm_setAppWakeupLowPower(blt_timer.timer[0].t, 1);)于是我把他关闭,让BLE事件来唤醒设备这样就没问题了,但是这样做定时器就不准了,还请帮忙看看除了抓包以外还有没有办法能找到问题所在,如果需要源码的话我这边也可以打个包提供
使用latency测试呢,bls_l2cap_requestConnParamUpdate (CONN_INTERVAL_10MS, CONN_INTERVAL_10MS, 99, CONN_TIMEOUT_4S);99代表可以错开99次连接间隔,即和master的通信可以1s钟通信一次,需要快速通信的时候调用bls_pm_setManualLatency()
@曾义翔
@Soyo 经过测试这种方法确实可行无论是Windows还是安卓都能正常连接和工作了,但是通过打印调试信息发现更新连接参数后无法进入回调函数,这是什么原因呢
你好,请官网下载最新的SDK,并打上patch6的升级补丁,会解决这个问题。
@曾义翔
你好,
不要主动发起连接参数变更测试呢,使用主机默认的连接参数,同时手机不能写入是指的什么不能写入呢。
@Soyo手机写入是指用手机APP向服务器写入信息,在上述情况下该过程有小概率会写入失败,如下图所示:
@Soyo使用默认连接的参数没问题,但是在使用默认连接参数时由于连接间隔太短(默认为13.75MS)无法进入深度睡眠模式,项目要求需要进入深度睡眠保持低功耗模式
你好,
可以抓包看下怎么断开的,windows和安卓都有推荐的连接间隔,可以去了解下。
@Soyo 目前手里暂时没有抓包工具,但是通过我这几天大量的实验发现只要进入Deepsleep模式之后就会出问题,我认为跟连接参数应该没有太大关系,只要连接间隔大到能让设备进入Deepsleep模式并且创建一个定时任务就会发生这种情况,如果把定时任务的执行周期边长,比如说3S执行一次这样会有很大的改善,但是如上述我说的使用默认连接参数13.75MS这样设备无法进入Deepsleep模式确实不会出现问题但是项目需求是需要长期处于Deepsleep模式下节省功耗,所以我猜测是不是软件定时器中的提前唤醒函数存在问题(bls_pm_setAppWakeupLowPower(blt_timer.timer[0].t, 1);)于是我把他关闭,让BLE事件来唤醒设备这样就没问题了,但是这样做定时器就不准了,还请帮忙看看除了抓包以外还有没有办法能找到问题所在,如果需要源码的话我这边也可以打个包提供
使用latency测试呢,bls_l2cap_requestConnParamUpdate (CONN_INTERVAL_10MS, CONN_INTERVAL_10MS, 99, CONN_TIMEOUT_4S);99代表可以错开99次连接间隔,即和master的通信可以1s钟通信一次,需要快速通信的时候调用bls_pm_setManualLatency()
@曾义翔
@Soyo 经过测试这种方法确实可行无论是Windows还是安卓都能正常连接和工作了,但是通过打印调试信息发现更新连接参数后无法进入回调函数,这是什么原因呢
你好,请官网下载最新的SDK,并打上patch6的升级补丁,会解决这个问题。
@曾义翔