更新时间:2024-05-30 03:35:25下载pdf
用户通过 App 检测设备固件版本,触发设备进行固件升级。本文侧重设备端感知升级、进行升级、上报进度、完成升级等步骤涉及的技术细节。
如果设备固件有新版本,进入设备预览界面会提示固件升级。
或者在 App 里,单击目标设备后,进入设备面板。单击右上角设置按钮并找到 设备升级,主动选择新版本进行升级。
固件开发通过下面注册的回调接口感知升级,当启动升级时,会触发此回调。
ipc_sdk_run_var.upgrade_info.upgrade_cb = TUYA_IPC_Upgrade_Inform_cb;
如果主固件和拓展固件升级,可关注 FW_UG_S
里的 DEV_TYPE_T tp;
参数。
可参考 app_user_upgrade
里的 ty_sdk_upgrade.c
的实现,需要在 TUYA_IPC_Upgrade_Inform_cb
中调用以下接口,来注册获取数据回调和获取升级状态通知的回调。
OPERATE_RET tuya_ipc_upgrade_sdk(IN CONST FW_UG_S *fw,
IN CONST GET_FILE_DATA_CB get_file_cb,
IN CONST UPGRADE_NOTIFY_CB upgrd_nofity_cb,
IN PVOID_T pri_data);
升级过程中,只需要关注以下两个回调接口的参数:
GET_FILE_DATA_CB get_file_cb
UPGRADE_NOTIFY_CB upgrd_nofity_cb
SDK 会通过 get_file_cb
不断地给出升级包的分片数据,用户收到升级包数据后,需要自己进行缓存或者升级处理。
参考以下接口来上报进度。具体升级进度上报的节奏,用户可自行设计。
OPERATE_RET tuya_ipc_upgrade_progress_report(IN UINT_T percent);
拓展固件版本上报,参考:
OPERATE_RET tuya_ipc_upgrade_progress_report_by_type(IN UINT_T percent, IN BYTE_T type);
//type 参考 FW_UG_S -> DEV_TYPE_T tp
设备升级完成需要更新固件版本,设备再次启动时传入新版本,云端校验通过则提示升级成功。具体代码参考:
strcpy(env.dev_sw_version, pRunInfo->iot_info.dev_sw_version);
拓展固件升级完成需要调用以下接口,来更新拓展固件版本号。
OPERATE_RET tuya_iot_dev_update_attachs(UINT_T attr_num, GW_ATTACH_ATTR_T *attrs)
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈