本文介绍使用C Link SDK配置OTA升级时,需调用的API。

IOT_OTA_Init

  • 接口原型

    void *IOT_OTA_Init(const char *product_key, const char *device_name, void *ch_signal);
  • 接口说明

    初始化OTA模块,需要先建立与云端的MQTT连接后才能使用。

  • 参数说明

    参数

    数据类型

    方向

    说明

    product_key

    const char *

    输入

    设备证书中的Product Key。

    device_name

    const char *

    输入

    设备证书中的Device Name。

    ch_signal

    void *

    输入

    MQTT句柄。

  • 返回值说明

    说明

    NULL

    失败

    非NULL

    OTA句柄

IOT_OTA_Deinit

  • 接口原型

    int IOT_OTA_Deinit(void *handle)
  • 接口说明

    反初始化OTA模块,释放所有资源。

  • 参数说明

    参数

    数据类型

    方向

    说明

    handle

    void *

    输入

    OTA句柄

  • 返回值说明

    说明

    0

    成功

    < 0

    失败

IOT_OTA_ReportVersion

  • 接口原型

    int IOT_OTA_ReportVersion(void *handle, const char *version);
  • 接口说明

    向云端上报当前SDK版本号。

  • 参数说明

    参数

    数据类型

    方向

    说明

    handle

    void *

    输入

    OTA句柄

    version

    const char *

    输入

    版本号

  • 返回值说明

    说明

    0

    成功

    < 0

    失败

IOT_OTA_ReportProgress

  • 接口原型

    int IOT_OTA_ReportProgress(void *handle, IOT_OTA_Progress_t progress, const char *msg);
  • 接口说明

    向云端上报升级进度。

  • 参数说明

    参数

    数据类型

    方向

    说明

    handle

    void *

    输入

    OTA句柄。

    progress

    IOT_OTA_Progress_t

    输入

    当前升级进度。

    msg

    const char *

    输入

    升级状态的描述信息,可以为NULL。

  • 参数附加说明

    typedef enum {
        IOT_OTAP_BURN_FAILED = -4,
        IOT_OTAP_CHECK_FAILED = -3,
        IOT_OTAP_FETCH_FAILED = -2,
        IOT_OTAP_GENERAL_FAILED = -1,
        IOT_OTAP_FETCH_PERCENTAGE_MIN = 0,
        IOT_OTAP_FETCH_PERCENTAGE_MAX = 100
    } IOT_OTA_Progress_t;

    参数

    说明

    IOT_OTAP_BURN_FAILED

    固件烧写失败。

    IOT_OTAP_CHECK_FAILED

    固件校验失败。

    IOT_OTAP_FETCH_FAILED

    固件下载失败。

    IOT_OTAP_GENERAL_FAILED

    OTA其他错误。

    IOT_OTAP_FETCH_PERCENTAGE_MIN

    固件OTA进度最小值,为0。

    IOT_OTAP_FETCH_PERCENTAGE_MAX

    固件OTA进度最大值,为100。

    升级进度取值范围

    [0,100]区间的整数。

  • 返回值说明

    说明

    0

    成功

    < 0

    失败

IOT_OTA_IsFetching

  • 接口原型

    int IOT_OTA_IsFetching(void *handle);
  • 接口说明

    检测当前OTA模块是否处于从云端获取数据的状态。

  • 参数说明

    参数

    数据类型

    方向

    说明

    handle

    void *

    输入

    OTA句柄

  • 返回值说明

    说明

    0

    未处于获取数据状态

    1

    正在从云端获取数据

IOT_OTA_IsFetchFinish

  • 接口原型

    int IOT_OTA_IsFetchFinish(void *handle);
  • 接口说明

    检测当前OTA模块是否获取数据完成。

  • 参数说明

    参数

    数据类型

    方向

    说明

    handle

    void *

    输入

    OTA句柄

  • 返回值说明

    说明

    0

    获取数据未完成

    1

    已从云端获取数据完成

IOT_OTA_FetchYield

  • 接口原型

    int IOT_OTA_FetchYield(void *handle, char *buf, uint32_t buf_len, uint32_t timeout_s);
  • 接口说明

    该接口用于从网络接收报文,需要用户周期性调用。

  • 参数说明

    参数

    数据类型

    方向

    说明

    handle

    void *

    输入

    OTA句柄。

    buf

    void *

    输入

    用于获取配置文件的临时buffer。

    buf_len

    int

    输入

    data_buf的长度。

  • 返回值说明

    说明

    0

    成功

    < 0

    失败

IOT_OTA_Ioctl

  • 接口原型

    int IOT_OTA_Ioctl(void *handle, IOT_OTA_CmdType_t type, void *buf, size_t buf_len);
  • 接口说明

    用于设置OTA部分参数或获取当前OTA运行状态。

  • 参数说明

    参数

    数据类型

    方向

    说明

    handle

    void *

    输入

    OTA句柄

    type

    IOT_OTA_CmdType_t

    输入

    命令类型

    buf

    void *

    输入/输出

    命令buffer

    buf_len

    size_t

    输入

    buf的长度

  • 参数附加说明

    typedef enum {
        IOT_OTAG_COTA_CONFIG_ID,
        IOT_OTAG_COTA_CONFIG_SIZE,
        IOT_OTAG_COTA_SIGN,
        IOT_OTAG_COTA_SIGN_METHOD,
        IOT_OTAG_COTA_URL,
        IOT_OTAG_COTA_GETTYPE,
        IOT_OTAG_OTA_TYPE,
        IOT_OTAG_FETCHED_SIZE,     /* option for get already fetched size */
        IOT_OTAG_FILE_SIZE,        /* size of file */
        IOT_OTAG_MD5SUM,           /* md5 in string format */
        IOT_OTAG_VERSION,          /* version in string format */
        IOT_OTAG_CHECK_FIRMWARE,    /* Check firmware is valid or not */
        IOT_OTAG_CHECK_CONFIG,      /* Check config file is valid or not */
        IOT_OTAG_RESET_FETCHED_SIZE  /* reset the size_fetched parameter to be 0 */
    } IOT_OTA_CmdType_t;

    参数

    说明

    IOT_OTAG_COTA_CONFIG_ID

    当前可升级配置文件的ID。

    IOT_OTAG_COTA_CONFIG_SIZE

    当前可升级配置文件的大小。

    IOT_OTAG_COTA_SIGN

    当前可升级配置文件的签名。

    IOT_OTAG_COTA_SIGN_METHOD

    当前可升级配置文件计算签名的方法。

    IOT_OTAG_COTA_URL

    当前可升级配置文件的下载地址。

    IOT_OTAG_COTA_GETTYPE

    当前可升级配置文件的类型。

    IOT_OTAG_OTA_TYPE

    当前OTA类型,COTA或FOTA。

    IOT_OTAG_FETCHED_SIZE

    当前可升级配置文件已下载大小。

    IOT_OTAG_FILE_SIZE

    当前可升级固件文件的大小。

    IOT_OTAG_MD5SUM

    当前已下载文件的MD5值。

    IOT_OTAG_VERSION

    当前可升级固件的版本号。

    IOT_OTAG_CHECK_FIRMWARE

    对已下载固件文件进行校验。

    IOT_OTAG_CHECK_CONFIG

    对已下载配置文件进行校验。

    IOT_OTAG_RESET_FETCHED_SIZE

    下载开始前,将已下载的数据量大小size_fetched值清零。

  • 返回值说明

    说明

    0

    成功

    < 0

    失败

IOT_OTA_GetLastError

  • 接口原型

    int IOT_OTA_GetLastError(void *handle);
  • 接口说明

    获取最近一次的错误码。

  • 参数说明

    参数

    数据类型

    方向

    说明

    handle

    void *

    输入

    OTA句柄

  • 返回值说明

    说明

    0

    最近一次错误码为成功

    < 0

    最近一次错误码为失败