# OTA说明
小微SDK提供可选的OTA功能,他是单独的so存在。但是我们强烈建议您选用该功能,因为OTA的so中还附带了设备网络监测功能,当某些资源无法播放、CDN无法访问,DNS解析出错等问题出现时,可以自动检测并上传日志,用于问题分析。
小微提供的OTA只负责资源的查询和下载,下载完毕后image的替换不由小微负责。在使用OTA前,需要前往小微官网硬件配置平台进行配置。配置完成后,在SDK端即可查询到此OTA信息,并选择下载。
# SDK OTA相关接口
# 初始化
要使用OTA功能,首先需要初始化OTA模块,即int device_config_ota(DEVICE_OTA_RESULT* callback)
。在这个接口中设置查询和下载的回调。
# 查询OTA
初始化完成后,可以使用查询接口int device_query_ota_update(const char *business_id, unsigned int channel, unsigned int ota_type, unsigned int debug_flag);
来查询OTA信息。查询结果通过DEVICE_OTA_RESULT.on_ota_check_result(...)
返回,一次只能查询一个OTA信息。在上一次OTA查询结束前再次调用该接口,上次查询自动终止。
business_id
业务号,通常填写nullptr即可,除非有特殊定制。channel
业务通道,通过官网配置的OTA,channel为1ota_type
目前只支持1,即软件升级debug_flag
测试标记,在正式OTA前可以进行测试,1为正式模式,在官网配置的测试OTA中对应flag为2。
# 查询结果
(*on_ota_check_result)(int err_code, const char *bussiness_id, bool new_version, OTA_UPDATE_INFO* update_info, OTA_PACKAGE_INFO* package_info)
当err_code
不为0时,bussiness_id
对应查询时的bussiness_id
,new_version
为true时代表有新版本,此时后面两个参数有意义,否则是nullptr。在update_info
和package_info
中分别描述了OTA版本信息和下载包的信息。请参考头文件中的说明。
# 下载image
查询到下载信息后,可通过int device_ota_download(const char *url, const char *download_dir, const char *ca_path, unsigned int hash_type, const char *hash_value);
接口来进行下载,并在DEVICE_OTA_RESULT
的回调中获得下载状态。这个函数其实不光可以用于查询到的OTA包下载,也可用于任何其他http资源的下载。
一般地,Linux设备可以自动获取CA证书用于https下载,此时ca_path
为nullptr即可。
此接口不支持断点续传,需要一次性下载完毕。
# 取消下载
通过device_ota_stop_download(const char *url);
来取消下载,空的url将取消所有下载。这个接口不会自动清理已下载的内容和下载到一半的内容。
# 其它
- 在官网配置OTA时有“版本介绍”和“透传给客户端”字段,分别对应OTA查询结果的
update_tips
和extra_info
。 - 只有设备端自身版本符合官网上的配置时,才能查询到OTA信息,设备端自身版本为设备在login的时候填写的
DEVICE_INFO.user_hardware_version
。