开发包描述:蓝牙 Mesh 设备开发包 描述TuyaOS BLE mesh node sdk TuyaOS 版本3.5.0
组件开发包tuyaos-subdev-mesh_0.0.29_tlsr825x_smesh_mesh_common_1.2.14
出现的现象: 推送OTA 更新之后会有50%的几率会显示升级失败;失败现象都是还没有开始“更新中”的进度条
在SDK的基础上 添加一个5ms定时器中断来检测一种通信协议与模拟信号输出;为了与OTA更新不冲突,在检测OTA 开始的时候 ,我会关闭定时器中断。
如下:
if(ota_status) //-------检测OTA 任务是否开始 ; 开始;1 未开始:0//
{
tkl_timer_stop(0); //开始关闭定时器中断//
}
但是现在出现失败的情况很奇怪,ota_status 不会变成1,
我尝试在 app_ble_data_recv函数下的CASE TAL_BLE_EVT_WRITE_REQ 下添加了以下这个函数来关闭定时器中断,但是也会有时候跑不进来,手机端会显示OTA失败。
case TAL_BLE_EVT_WRITE_REQ:
tal_main_debug("BLE TAL_BLE_EVT_WRITE_REQ");
if(event_last_type != TAL_BLE_EVT_WRITE_REQ)
{
tkl_timer_stop(0); //关闭定时器中断//
tal_sw_timer_stop(countdown_sw_timer);
}
tal_ble_ota_data_recv(p_event->ble_event.write_report.report.p_data, p_event->ble_event.write_report.report.len);
break;
请问下大家有什么解决方案???
关于5MS的定时器中断因为需要通信对于时序要求比较高是必须的。