设备OTA开发
主动获取 OTA
设备主动上报本地固件版本,云端若有新版本便会马上下发。
// 定义一个字符串指针,保存需要上传的 json 字符串地址。
char* params_string = NULL;
// 设置本地固件版本信息,并把地址保存到对应的指针中。
xiot_add_string_to_payload(¶ms_string, "version", "xxx");
// 上报本地固件版本的事件到云端
xiot_upload_firmware_version(params_string);
主动上报升级状态
接收到云端下发的 OTA 固件相关信息后,上报当前升级的进度和状态。
// 定义一个字符串指针,保存需要上传的 json 字符串地址。
char* params_string = NULL;
// 设置 OTA 升级状态信息,并把地址保存到对应的指针中。
xiot_add_int_to_payload(¶ms_string, "status", xxx);
xiot_add_string_to_payload(¶ms_string, "desc", "xxx");
// 上报固件升级状态的事件到云端
xiot_upload_firmware_upgrade_status(params_string);
回应云端下发的 OTA 升级信息
云端下发 OTA 升级后,设备端需要及时给出回复。
// 处理云端下发的 OTA 信息
// 解析云端下发的 url,并根据 url 下载固件
cJSON* url = cJSON_GetObjectItem(ota_params_json, "url");
http_download(url->valuestring);
......
// 定义一个字符串指针,保存需要上传的 json 字符串地址。
char* data_string = NULL;
// 设置需要回复的信息,并把地址保存到对应的指针中。
xiot_add_int_to_payload(&data_string, "ret", xxx);
xiot_add_string_to_payload(&data_string, "msg", "xxx");
// 回应云端下发 OTA 升级信息的服务
xiot_cloud_firmware_upgrade_notice_reply(data_string, mid);