Page 1 of 1
【已解决】Linux网关扩展SDK, 子设备OTA相关问题
Posted: 2023年 Feb 16日 12:59
by 13795248028
- 问题: 通知新版本更新的时候, 只有2个字段, dev_id 和 img_file_path, 无法知道是哪个固件即将升级, 也不知道目标版本号
方案: 建议新增2个字段, firmwareType, newVersion
- 问题: 通过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;
}