Page 1 of 2

【已解决】bk7231n sdk2.3.1版本,ota升级问题

Posted: 2023年 Apr 6日 14:49
by wt呃呃

请问一下,ota提示开始升级,sdk会调用那个回调函数?


Re: bk7231n sdk2.3.1版本,ota升级问题

Posted: 2023年 Apr 6日 15:16
by 一线长天

可以订阅下述事件

//ota开始
#define EVENT_OTA_PROCESS_NOTIFY "ota.process"
//ota失败
#define EVENT_OTA_FAILED_NOTIFY "ota.failed"
//ota成功
#define EVENT_OTA_FINISHED_NOTIFY "ota.finished"


Re: bk7231n sdk2.3.1版本,ota升级问题

Posted: 2023年 Apr 6日 17:19
by wt呃呃

这三个宏定义,在2.3.1sdk版本中,没有找到,是要重新定义吗?


Re: bk7231n sdk2.3.1版本,ota升级问题

Posted: 2023年 Apr 6日 20:00
by 愚者千虑必有一得

你看看有没有base_event_info.h这个文件。

如果没有这个文件,你看看你初始化传入的TY_IOT_CBS里有没有这个成员GW_UG_INFORM_CB pre_gw_ug_cb,这个回调接口也可以在ota开始之前感知到。

另外如果你是开发新产品,建议升级到tuayos 3.x版本,2.3.1是3年多之前的版本了。


Re: bk7231n sdk2.3.1版本,ota升级问题

Posted: 2023年 Apr 7日 08:49
by wt呃呃

有这个base_event_info.h 这个文件,
也有这个成员 GW_UG_INFORM_CB pre_gw_ug_cb,
那我现在是调用 base_event_info.h ,还是调用这个成员 pre_gw_ug_cb?
2.3.1版本的sdk,现在是来修改维护之前的代码,下个新的项目再调新的sdk


Re: bk7231n sdk2.3.1版本,ota升级问题

Posted: 2023年 Apr 7日 09:13
by wt呃呃

我添加到初始化里面的代码

Code: Select all

int pre_gw_ug_cb(IN CONST FW_UG_S *fw)
{
    log_printf("Rev GW Upgrade Info");
    log_printf("fw->fw_url:%s", fw->fw_url);
    log_printf("fw->sw_ver:%s", fw->sw_ver);
    log_printf("fw->file_size:%d", fw->file_size);

log_printf("==================================> debug ota update.\r\r");
}

TY_IOT_CBS_S wf_cbs = {
        gw_status_cb,\          
gw_ug_cb,\
gw_reset_cb,\
dev_obj_dp_cb,\
dev_raw_dp_cb,\
dev_dp_query_cb,\
pre_gw_ug_cb,\
NULL }; op_ret = tuya_iot_wf_soc_dev_init_param(tuya_hard_get_wifi_mode(),WF_START_SMART_FIRST,&wf_cbs,NULL,pid_product_key,USER_SW_VER);

点击开始升级的时候,没有进入回调函数里面输出log


Re: bk7231n sdk2.3.1版本,ota升级问题

Posted: 2023年 Apr 7日 09:39
by 愚者千虑必有一得
wt呃呃 2023年 Apr 7日 09:13

我添加到初始化里面的代码

Code: Select all

int pre_gw_ug_cb(IN CONST FW_UG_S *fw)
{
    log_printf("Rev GW Upgrade Info");
    log_printf("fw->fw_url:%s", fw->fw_url);
    log_printf("fw->sw_ver:%s", fw->sw_ver);
    log_printf("fw->file_size:%d", fw->file_size);

log_printf("==================================> debug ota update.\r\r");
}

TY_IOT_CBS_S wf_cbs = {
        gw_status_cb,\          
gw_ug_cb,\
gw_reset_cb,\
dev_obj_dp_cb,\
dev_raw_dp_cb,\
dev_dp_query_cb,\
pre_gw_ug_cb,\
NULL }; op_ret = tuya_iot_wf_soc_dev_init_param(tuya_hard_get_wifi_mode(),WF_START_SMART_FIRST,&wf_cbs,NULL,pid_product_key,USER_SW_VER);

点击开始升级的时候,没有进入回调函数里面输出log

你看看你的初始化方式和实际这个成员在结构体中的偏移是否一致,尽量采用这样的初始化方式:

Code: Select all

    /* Initialize TuyaOS product information */
    TY_IOT_CBS_S iot_cbs = {0};
    wf_cbs .gw_status_cb = gw_status_cb;
    wf_cbs .gw_ug_cb = gw_ug_cb;
    wf_cbs .gw_reset_cb = gw_reset_cb;
    wf_cbs .dev_obj_dp_cb = dev_obj_dp_cb;
    wf_cbs .dev_raw_dp_cb = dev_raw_dp_cb;
    wf_cbs .dev_dp_query_cb = dev_dp_query_cb;
    wf_cbs .pre_gw_ug_cb = pre_gw_ug_cb;

Re: bk7231n sdk2.3.1版本,ota升级问题

Posted: 2023年 Apr 7日 10:17
by wt呃呃

这样是可以了,但每次都是提升网络不好,升级不了,网还是可以的


Re: bk7231n sdk2.3.1版本,ota升级问题

Posted: 2023年 Apr 7日 10:59
by wt呃呃

Image


Re: bk7231n sdk2.3.1版本,ota升级问题

Posted: 2023年 Apr 7日 11:04
by wt呃呃

wf_cbs .pre_gw_ug_cb = pre_gw_ug_cb; 把这个回调函数注册进去,升级是有回调了,但提升“升级失败,可能是由于信号太弱,请检查设备网络后重新尝试”。网络我可以排除了,把这句平掉就可以了,这是什么原因?