# 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为1
  • ota_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_idnew_version为true时代表有新版本,此时后面两个参数有意义,否则是nullptr。在update_infopackage_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将取消所有下载。这个接口不会自动清理已下载的内容和下载到一半的内容。

# 其它

  1. 在官网配置OTA时有“版本介绍”和“透传给客户端”字段,分别对应OTA查询结果的update_tipsextra_info
  2. 只有设备端自身版本符合官网上的配置时,才能查询到OTA信息,设备端自身版本为设备在login的时候填写的DEVICE_INFO.user_hardware_version