设备 OTA

更新时间:2025-07-03 07:06:31下载pdf

中控设备固件 OTA(Over-the-air)升级的流程和网关设备 OTA 流程一致。详情请参考 网关开发框架 > 设备 OTA

屏上 OTA 升级

屏上 OTA 升级接口的使用描述:

定时检测新版本

函数原型 OPERATE_RET tuya_dev_upgrade_check_init(VOID)
函数描述 启动一个定时器,定时检测是否有新版本
参数说明 VOID
返回值 OPERATE_RET,0:成功; 其他:失败,详见错误码
详细描述 -

检测新版本

函数原型 OPERATE_RET tuya_dev_upgrade_check_start(VOID)
函数描述 检测是否有新版本
参数说明 VOID
返回值 OPERATE_RET,0:成功; 其他:失败,详见错误码
详细描述 -

获取升级固件信息

函数原型 OPERATE_RET tuya_dev_upgrade_get_info(TY_UPGRADE_INFO_S *info)
函数描述 获取升级固件信息
参数说明 info,升级固件信息结构体指针
返回值 OPERATE_RET,0:成功; 其他:失败,详见错误码
详细描述 -

立即升级

函数原型 OPERATE_RET tuya_dev_upgrade_confirm_report(VOID)
函数描述 立即升级
参数说明 VOID
返回值 OPERATE_RET,0:成功; 其他:失败,详见错误码
详细描述 -

用法示例

STATIC INT_T __new_version_cb(IN CONST TY_UPGRADE_INFO_S *p_ug_info)
{
    PR_DEBUG("new version callback flag:%d, version:%s, size:%d, msg:%s", p_ug_info->flag, p_ug_info->version, p_ug_info->file_size, p_ug_info->msg);

    if (p_ug_info->flag > 0) {
        PR_DEBUG("new version found, please update");
        OPERATE_RET ret = tuya_dev_upgrade_confirm_report();
        if (ret != OPRT_OK) {
            PR_ERR("tuya_dev_upgrade_confirm_report err:%d", ret);
            return ret;
        }
    } else {
        PR_DEBUG("current version is the latest");
    }

    return OPRT_OK;

}

VOID test_ctrl_center_update()
{
    OPERATE_RET ret = OPRT_OK;

    ret = tuya_dev_upgrade_check_init();
    if (ret != OPRT_OK) {
        PR_ERR("tuya_dev_upgrade_check_init err:%d", ret);
        return;
    }

    ret = tuya_home_ctrl_subscribe_new_version(__new_version_cb);
    if (ret != OPRT_OK) {
        PR_ERR("tuya_home_ctrl_subscribe_new_version err:%d", ret);
        return;
    }

    return;
}
  • tuya_dev_upgrade_check_init 没有做可重入机制,程序启动后,只能调用一次,回调通过 tuya_home_ctrl_subscribe_new_version 注册。
  • tuya_home_ctrl_subscribe_new_version 如果调用多次,以最后一次传入的回调函数生效。