更新时间:2023-09-06 10:40:14
设备重置是把设备恢复到配网前状态的操作,本文档将介绍 TuyaOS 设备重置功能。
根据触发源不同,可以分为本地重置和 App 重置。根据重置后设备所处的状态,又可分为:
普通重置(解除绑定):仅解除设备与云端的绑定关系,云端和设备本地都保留数据,设备重新激活后,跟绑定前的数据是一致的,无需重新添加子设备和配置智能场景等。
恢复出厂重置(解绑并清除数据):除了解除设备与云端的绑定关系,还清空云端和设备本地的数据,相当于全新的设备。
App 重置时,无需调用接口。本地重置时,您需要主动调用重置接口:
tuya_iot_wf_gw_unactive
。tuya_iot_wf_gw_reset
。重置时 TuyaOS 会处理内部的数据,应用无需关心这块逻辑,如果应用有其自定义的行为,可以通过 tuya_iot_reg_gw_app_cb
接口注册 TY_GW_APP_CBS_S
-> gw_reset_cb
重置通知回调,在回调中执行自定义的行为(如清空应用的数据)。
/**
* @brief 设备重置回调
* @note 您可以根据实际开发需求,在回调中执行自定义的行为
*
* @param[in] type 重置类型
*/
VOID __gw_reset_cb(GW_RESET_TYPE_E type)
{
if (type == GW_LOCAL_UNACTIVE) { // 本地调用普通重置(解除绑定)接口
// TODO
} else if (type == GW_LOCAL_RESET_FACTORY) { // 本地调用恢复出厂重置(解绑并清除数据)接口
// TODO
} else if (type == GW_REMOTE_UNACTIVE) { // App 执行普通重置(解除绑定)
// TODO
} else if (type == GW_REMOTE_RESET_FACTORY) { // App 执行恢复出厂重置(解绑并清除数据)
// TODO
} else if (type == GW_RESET_DATA_FACTORY) { // 激活时数据重置
/**
* App 执行 `解绑并清除数据` 重置时,或者重新配网的 App 账户与原 App 账户不是同一个家庭账号,则
* 激活时会收到该类型,设备不能重启
*/
// TODO
}
if (type != GW_RESET_DATA_FACTORY) {
tal_system_reset();
}
}
// 初始化时注册重置回调
int test_init()
{
TY_GW_APP_CBS_S gw_app_cbs = {
.gw_reset_cb = __gw_reset_cb,
};
tuya_iot_reg_gw_app_cb(&gw_app_cbs);
}
// 本地普通重置
void test_local_unactive()
{
TUYA_CALL_ERR_LOG(tuya_iot_wf_gw_unactive());
}
// 本地恢复出厂重置
void test_local_reset()
{
TUYA_CALL_ERR_LOG(tuya_iot_wf_gw_reset());
}
typedef enum {
GW_LOCAL_RESET_FACTORY = 0, // 本地恢复出厂重置
GW_REMOTE_UNACTIVE, // App 普通重置(解除绑定)
GW_LOCAL_UNACTIVE, // 本地普通重置(解除绑定)
GW_REMOTE_RESET_FACTORY, // App 恢复出厂重置
GW_RESET_DATA_FACTORY, // 激活时数据重置
} GW_RESET_TYPE_E;
/**
* @brief reset callback function
*
* @param[in] type reset type
*
* @return VOID
*/
typedef VOID (*GW_APP_RESET_CB)(GW_RESET_TYPE_E type);
/**
* @brief local inactive
*
* @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
*/
OPERATE_RET tuya_iot_wf_gw_unactive(VOID);
/**
* @brief local reset factory
*
* @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
*/
OPERATE_RET tuya_iot_wf_gw_reset(VOID);
/**
* @brief register application callback functions
*
* @param[in] cbs callback functions, see TY_GW_APP_CBS_S
*
* @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
*/
OPERATE_RET tuya_iot_reg_gw_app_cb(CONST TY_GW_APP_CBS_S *cbs);
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈