This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2652RB: persistent app 的 bug

Part Number: CC2652RB

Hi Ti,

我在看 persistent app 时发现如下代码段:(注释的是源代码,我加了我认为正确的代码进行测试,测试结果没问题)

   

根据 GapAdv_disable() 的声明,这个函数参数个数都不对,所以我认为是 Bug.

相应地,BTool 工具也有一些 bug,描述如下:

1. 在 BTool 连接成功后,如果因为某些疑问导致连接不正常断开,再次点连接后,BTool 会出现两个已连接设备,如下:

这就直接导致了升级过程中的问题:

user_app 在触发升级后经 reset 进入 persistent_app,而这个时候的 user_app 的 Handle 还在,又增加了一个 persistent_app 的 Handle,

所以,某些情况下 BTool 工具就会把再次向实际已经失效的 user_app 的 Handle 发送 升级包,导致对方无响应,从而升级失败。

不知道我理解的对不对?

多谢!

  • 根据 GapAdv_disable() 的声明,这个函数参数个数都不对,所以我认为是 Bug.

    编辑一下,我确实在persistent app中看到了具有多个参数的代码,在simple_peripheral.c则是正常的

    我会向Team确认一下

    Btool这个我不能复现,断开连接时Btool中的从机信息就会消失,建议你用SDK5.20中的Btool进行测试

  • Btool这个我不能复现,断开连接时Btool中的从机信息就会消失,建议你用SDK5.20中的Btool进行测试

    我的也会消失,但是要等一小会儿,这对于 reset 后立刻发包的 persistent_app 来说,这个时间就足够造成问题了。

  • 在persistent_app中,GapAdv_disable是在icall_ble_api.h中定义

    Fullscreen
    1
    #define GapAdv_disable(...) (icall_directAPI(ICALL_SERVICE_CLASS_BLE, (uint32_t) IDX_GapAdv_disable , ##__VA_ARGS__))
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    ##__VA_ARGS__ 是在C99规范中新增的,你可以查下它的具体用法

    这对于 reset 后立刻发包的 persistent_app 来说,这个时间就足够造成问题了。

    OAD升级过程中断开连接会导致升级失败,因此升级时不能断开连接