跳到主要内容

tkl_ota | OTA 固件升级

tkl_ota.c 固件 OTA(Over The Air)包含处理固件升级流程的各个阶段:获取固件升级能力、OTA 启动通知、OTA 数据处理、OTA 结束通知。该文件由涂鸦操作系统自动生成,并允许开发者在提供的用户定义区域内添加自己的实现。

API 说明

tkl_ota_get_ability

OPERATE_RET tkl_ota_get_ability(uint32_t *image_size, TUYA_OTA_TYPE_E *type);
  • 功能:获取当前设备的 OTA 能力信息,包括最大的固件镜像大小以及 OTA 类型。

  • 参数:

    • image_size:输出参数,用于存储固件镜像的最大尺寸。
    • type:输出参数,OTA 类型,可以是全量包或者差异包,使用 TUYA_OTA_FULL 表示全量包,使用 TUYA_OTA_DIFF 表示差分包。
          typedef enum {
              TUYA_OTA_FULL        = 1,            ///< AB area switch, full package upgrade
              TUYA_OTA_DIFF        = 2,            ///< fixed area, difference package upgrade
          } TUYA_OTA_TYPE_E;
      
  • 返回值:返回值为 OPRT_OK 表示成功,其他值则表示发生错误。详细错误代码请参考 tuya_error_code.h

tkl_ota_start_notify

OPERATE_RET tkl_ota_start_notify(uint32_t image_size, TUYA_OTA_TYPE_E type, TUYA_OTA_PATH_E path);
  • 功能:通知 OTA 升级开始,该函数会初始化 OTA 过程的所需变量和状态。

  • 参数:

    • image_size:输入参数,即将升级的固件镜像大小。
    • type:输入参数,OTA 类型。
    • path:输入参数,OTA 路径,数据从什么通道传输。
          typedef enum {
          TUYA_OTA_PATH_AIR    = 0,            ///< OTA from Wired/Wi-Fi/Cellular/NBIoT
          TUYA_OTA_PATH_UART   = 1,            ///< OTA from uart for MF
          TUYA_OTA_PATH_BLE    = 2,            ///< OTA from BLE protocol for subdev
          TUYA_OTA_PATH_ZIGBEE = 3,            ///< OTA from Zigbee protocol for subdev
          TUYA_OTA_PATH_SEC_A = 4,             ///< OTA from multi-section A
          TUYA_OTA_PATH_SEC_B = 5,             ///< OTA from multi-section B
          TUYA_OTA_PATH_INVALID = 255          ///< OTA from multi-section invalid
        }TUYA_OTA_PATH_E;
      
  • 返回值:返回值为 OPRT_OK 表示操作成功,其他返回值表示出现错误。详细错误代码请参考 tuya_error_code.h

tkl_ota_data_process

OPERATE_RET tkl_ota_data_process(TUYA_OTA_DATA_T *pack, uint32_t* remain_len);
  • 功能:处理接收到的 OTA 数据包,该函数会根据状态不同执行不同的升级操作。

  • 参数:

    • pack:输入参数,指向 OTA 数据包的指针。
    • remain_len:输出参数,指示 OTA 数据包中剩余未处理的数据长度。
  • 返回值:如果成功处理数据包,返回值为 OPRT_OK,否则返回错误代码。详细错误代码请参考 tuya_error_code.h

tkl_ota_end_notify

OPERATE_RET tkl_ota_end_notify(BOOL_T reset);
  • 功能:通知 OTA 升级已结束,进行校验和后续处理,如果需要会进行设备重置。

  • 参数:reset 为输入参数,表示 OTA 结束后是否需要重置设备。

  • 返回值:返回值为 OPRT_OK 表示操作成功,如果校验失败或其他原因导致失败,返回错误代码。详细错误代码请参考 tuya_error_code.h

tkl_ota_get_old_firmware_info

OPERATE_RET tkl_ota_get_old_firmware_info(TUYA_OTA_FIRMWARE_INFO_T **info);
  • 功能:获取旧固件信息,本函数通常用于断点续传场景。

  • 参数:info 为输出参数,指向旧固件信息结构体的指针的指针。

  • 返回值:如果成功获取旧固件信息,返回值为 OPRT_OK,否则返回错误代码。详细错误代码请参考 tuya_error_code.h