Page 1 of 1

【已解决】Linux网关扩展SDK, 子设备OTA相关问题

Posted: 2023年 Feb 16日 12:59
by 13795248028
  1. 问题: 通知新版本更新的时候, 只有2个字段, dev_id 和 img_file_path, 无法知道是哪个固件即将升级, 也不知道目标版本号
    方案: 建议新增2个字段, firmwareType, newVersion
  2. 问题: 通过basic cluster 读版本号时, 不会触发回调, 导致网关无法获取子设备的 app_version
    方案: 能触发回调

Re: Linux网关扩展SDK, 子设备OTA相关问题

Posted: 2023年 Feb 16日 13:58
by Kyson

扩展 SDK 是高度封装的 SDK,为了降低开发门槛,屏蔽了大部分的实现细节。现在我们主推 TuyaOS 综合 SDK,综合 SDK 开发了更多的能力接口,新产品接入推荐使用综合 SDK。

对于扩展 SDK 这两个需求,下周提供个 beta 版本你们试下。


Re: Linux网关扩展SDK, 子设备OTA相关问题

Posted: 2023年 Feb 17日 15:48
by Kyson

SDK 版本

v3.1.18

设备版本

在三方 Zigbee 管理结构体 TY_Z3_DEV_CBS_S 中新增了 version 成员变量,子设备上报版本号时触发该回调。

升级通知

在设备管理结构体 ty_misc_dev_cbs_s 中新增了 misc_dev_upgrade_v2_cb 成员变量,新增 FW_UG_S 参数,用于区分当前升级的固件类型,注册该接口后,原来的 misc_dev_upgrade_cb 回调则不会触发。

新增接口

tuya_user_iot_misc_dev_bind_ext

绑定接口,支持携带附属固件版本号。使用示例:

Code: Select all

void test_bind(void)
{
    int ret = 0;
    uint32_t uddd = 0x1;
    char *dev_id = "00000001";
    char *pid = "xxxxxxxx";
    char *ver = "1.0.0";

    GW_ATTACH_ATTR_T attr[2];

    memset(&attr, 0, 2 * SIZEOF(GW_ATTACH_ATTR_T));

    attr[0].tp = 3;
    strncpy(attr[0].ver, "1.0.0", sizeof(attr[0].ver));
    attr[1].tp = 9;
    strncpy(attr[1].ver, "1.0.0", sizeof(attr[1].ver));

    ret = tuya_user_iot_misc_dev_bind_ext(10, uddd, dev_id, pid, ver, attr, 2);
    if (ret != 0) {
        log_err("tuya_user_iot_misc_dev_bind_ext error, ret: %d", ret);
        return;
    }

    return;
}

tuya_user_iot_misc_dev_upgd_progress_report

上报升级进度条接口。使用示例:

Code: Select all

void test_report_upgrade_progress(const FW_UG_S *fw)
{
	tuya_user_iot_misc_dev_upgd_progress_report("00000001", fw->tp, 80);
}

tuya_user_iot_misc_dev_ver_update_ext

上报子设备固件版本号扩展接口,用于上报子设备以及其附属固件版本。使用示例:

Code: Select all

void test_report_versions(void)
{
    GW_ATTACH_ATTR_T attr[2];

    memset(&attr, 0, 2 * SIZEOF(GW_ATTACH_ATTR_T));

    attr[0].tp = 3;
    strncpy(attr[0].ver, "1.0.1", sizeof(attr[0].ver));
    attr[1].tp = 9;
    strncpy(attr[1].ver, "1.0.1", sizeof(attr[1].ver));

    tuya_user_iot_misc_dev_ver_update_ext("00000001", "1.0.0", attr, 2);

    return;
}