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 发送 升级包,导致对方无响应,从而升级失败。
不知道我理解的对不对?
多谢!
Kevin Qiu1:
junde deng 说:根据 GapAdv_disable() 的声明,这个函数参数个数都不对,所以我认为是 Bug.
编辑一下,我确实在persistent app中看到了具有多个参数的代码,在simple_peripheral.c则是正常的
我会向Team确认一下
Btool这个我不能复现,断开连接时Btool中的从机信息就会消失,建议你用SDK5.20中的Btool进行测试
,
junde deng:
Kevin Qiu1 说:Btool这个我不能复现,断开连接时Btool中的从机信息就会消失,建议你用SDK5.20中的Btool进行测试
我的也会消失,但是要等一小会儿,这对于 reset 后立刻发包的 persistent_app 来说,这个时间就足够造成问题了。
,
Kevin Qiu1:
在persistent_app中,GapAdv_disable是在icall_ble_api.h中定义
#define GapAdv_disable(...)(icall_directAPI(ICALL_SERVICE_CLASS_BLE, (uint32_t) IDX_GapAdv_disable , ##__VA_ARGS__))##__VA_ARGS__ 是在C99规范中新增的,你可以查下它的具体用法
junde deng 说:这对于 reset 后立刻发包的 persistent_app 来说,这个时间就足够造成问题了。
OAD升级过程中断开连接会导致升级失败,因此升级时不能断开连接