当设备希望恢复出厂设置时,除了删除设备上本地的配置信息,如果也希望云平台清除一些配置,可以发送reset消息重置云端状态, 目前包括清除topo关系(如果是子设备会踢出下线), 解除用户和设备绑定关系、清除该设备的设备快照(针对飞燕平台)。

功能讲解

下面的例子中使用了示例代码 src/dev_reset/examples/dev_reset_example.c

用户通过 IOT_MQTT_Construct 连接云端成功之后, 可使用 IOT_DevReset_Report 接口发送消息到云端, 对设备进行重置操作

int main(int argc, char *argv[])
{
    ...
    ...
    pclient = IOT_MQTT_Construct(&mqtt_params);
    if (NULL == pclient) {
        EXAMPLE_TRACE("MQTT construct failed");
        return -1;
    }

    res = IOT_DevReset_Report(&meta_info, example_devrst_evt_handle, NULL);
    if (res < 0) {
        return -1;
    }
    ...
    ...
}
            

用户可填写 IOT_DevReset_Report 接口的第二个参数进行回调函数的注册, 当重置消息发送成功时, 会从该回调函数得到云端的应答消息

void example_devrst_evt_handle(iotx_devrst_evt_type_t evt, void *msg)
{
    switch (evt)
    {
        case IOTX_DEVRST_EVT_RECEIVED: {
            iotx_devrst_evt_recv_msg_t *recv_msg = (iotx_devrst_evt_recv_msg_t *)msg;
            if (recv_msg->msgid != reset_mqtt_packet_id) {
                return;
            }
            EXAMPLE_TRACE("Receive Reset Responst");
            EXAMPLE_TRACE("Msg ID: %d", recv_msg->msgid);
            EXAMPLE_TRACE("Payload: %.*s", recv_msg->payload_len, recv_msg->payload);
            reset_reply_received = 1;
        }
        break;

        default:
            break;
    }
}
            

功能API接口

原型

int IOT_DevReset_Report(iotx_dev_meta_info_t *meta_info, iotx_devrst_evt_handle_t handle, void *extended);
            

接口说明

用于向云端上报设备重置消息, 执行结果通过用户注册的回调函数参数 handle 告知用户

参数说明

参数 数据类型 方向 说明
meta_info iotx_linkkit_dev_meta_info_t 输入 设备证书,包括ProductKey、ProductSecret、DeviceName和DeviceSecret。
handle iotx_devrst_evt_handle_t 输入 设备重置消息的回调函数
extended void * 输入 扩展参数, 保留

返回值说明

说明
>= 0 消息发送成功
< 0 失败

需要对接的HAL接口

函数名 说明
HAL_Snprintf 标准库函数snprintf的HAL实现