Link Kit C-SDK  4.0.0
aiot_ota_api.h
浏览该文件的文档.
1 
24 #ifndef __AIOT_OTA_API_H__
25 #define __AIOT_OTA_API_H__
26 
27 #if defined(__cplusplus)
28 extern "C" {
29 #endif
30 
31 #include <stdint.h>
32 
40 typedef enum {
41 
47 
54 
60 typedef enum {
61 
67 
75 
81 typedef enum {
82 
88 
96 
101 typedef struct {
102 
107  char *product_key;
108 
113  char *device_name;
114 
115  /*
116  * @brief 下载固件所需的链接
117  *
118  */
119  char *url;
120  /*
121  * @brief mqtt文件下载,标识文件流的streamid
122  *
123  */
124  uint32_t stream_id;
125  /*
126  * @brief mqtt文件下载,标识文件的fileid
127  *
128  */
129  uint32_t stream_file_id;
130  /*
131  * @brief 固件的大小, 单位为Byte
132  *
133  */
134  uint32_t size_total;
135 
136  /*
137  * @brief 云端对的固件进行数字签名的方式, 具体见@ref aiot_ota_digest_type_t
138  *
139  */
140  uint8_t digest_method;
141 
142  /*
143  * @brief 云端对固件计算数字签名得出来的结果
144  *
145  */
147 
152  char *version;
153 
158  char *module;
159 
163  void *mqtt_handle;
164 
169  char *extra_data;
170 
174  char *file_name;
175 
179  uint32_t file_num;
180 
184  uint32_t file_id;
188  aiot_ota_protocol_type_t protocol_type;
189 
191 
196 typedef struct {
197 
201  aiot_ota_recv_type_t type;
202 
208 
218 typedef void (* aiot_ota_recv_handler_t)(void *handle, const aiot_ota_recv_t *const msg, void *userdata);
219 
224 typedef enum {
225 
232 
237 typedef struct {
238 
243  aiot_download_recv_type_t type;
244 
245  struct {
246 
251  uint8_t *buffer;
252 
257  uint32_t len;
258 
263  int32_t percent;
264  } data;
266 
267 
277 typedef void (* aiot_download_recv_handler_t)(void *handle, const aiot_download_recv_t *packet,
278  void *userdata);
279 
285 typedef enum {
286 
291 
296 
301 
307 
313 typedef enum {
314 
330 
341 
352 
366 
372 typedef enum {
373 
392 
403 
412 
421 
432 
445 
458 
471 
483 
497 int32_t aiot_ota_query_firmware(void *handle);
498 
507 void *aiot_ota_init();
508 
519 int32_t aiot_ota_deinit(void **handle);
520 
549 int32_t aiot_ota_report_version(void *handle, char *version);
550 
569 int32_t aiot_ota_report_version_ext(void *handle, char *product_key, char *device_name, char *version);
570 
592 int32_t aiot_ota_setopt(void *handle, aiot_ota_option_t option, void *data);
593 
602 void *aiot_download_init();
603 
614 int32_t aiot_download_deinit(void **handle);
615 
638 int32_t aiot_download_recv(void *handle); /* 返回条件: 网络出错 | 校验出错 | 读到EOF | buf填满 */
639 
665 int32_t aiot_download_setopt(void *handle, aiot_download_option_t option, void *data);
666 
688 int32_t aiot_download_report_progress(void *handle, int32_t percent);
689 
710 int32_t aiot_download_send_request(void *handle);
711 
716 #define STATE_OTA_BASE (-0x0900)
717 
722 #define STATE_OTA_DIGEST_MATCH (-0x0901)
723 
728 #define STATE_OTA_REPORT_FAILED (-0x0902)
729 
734 #define STATE_DOWNLOAD_RECV_ERROR (-0x0903)
735 
744 #define STATE_OTA_DIGEST_MISMATCH (-0x0904)
745 
754 #define STATE_OTA_PARSE_JSON_ERROR (-0x0905)
755 
764 #define STATE_DOWNLOAD_SEND_REQUEST_FAILED (-0x0906)
765 
774 #define STATE_DOWNLOAD_RANGE_FINISHED (-0x0907)
775 
780 #define STATE_OTA_PARSE_JSON_MALLOC_FAILED (-0x0908)
781 
786 #define STATE_OTA_DEINIT_HANDLE_IS_NULL (-0x0909)
787 
792 #define STATE_OTA_SETOPT_HANDLE_IS_NULL (-0x090A)
793 
798 #define STATE_OTA_SETOPT_DATA_IS_NULL (-0x090B)
799 
804 #define STATE_DOWNLOAD_DEINIT_HANDLE_IS_NULL (-0x090C)
805 
810 #define STATE_DOWNLOAD_SETOPT_HANDLE_IS_NULL (-0x090D)
811 
816 #define STATE_DOWNLOAD_SETOPT_DATA_IS_NULL (-0x090E)
817 
822 #define STATE_DOWNLOAD_SETOPT_COPIED_DATA_IS_NULL (-0x090F)
823 
828 #define STATE_OTA_REPORT_HANDLE_IS_NULL (-0x0910)
829 
834 #define STATE_OTA_REPORT_VERSION_IS_NULL (-0x0911)
835 
840 #define STATE_OTA_REPORT_MQTT_HANDLE_IS_NULL (-0x0912)
841 
846 #define STATE_OTA_REPORT_EXT_HANELD_IS_NULL (-0x0913)
847 
852 #define STATE_OTA_REPORT_EXT_VERSION_NULL (-0x0914)
853 
858 #define STATE_OTA_REPORT_EXT_PRODUCT_KEY_IS_NULL (-0x0915)
859 
864 #define STATE_OTA_REPORT_EXT_DEVICE_NAME_IS_NULL (-0x0916)
865 
870 #define STATE_OTA_REPORT_EXT_MQTT_HANDLE_IS_NULL (-0x0917)
871 
876 #define STATE_DOWNLOAD_REPORT_HANDLE_IS_NULL (-0x0918)
877 
882 #define STATE_DOWNLOAD_REPORT_TASK_DESC_IS_NULL (-0x0919)
883 
888 #define STATE_DOWNLOAD_RECV_HANDLE_IS_NULL (-0x091A)
889 
894 #define STATE_DOWNLOAD_REQUEST_HANDLE_IS_NULL (-0x091B)
895 
900 #define STATE_DOWNLOAD_REQUEST_TASK_DESC_IS_NULL (-0x091C)
901 
906 #define STATE_DOWNLOAD_REQUEST_URL_IS_NULL (-0x091D)
907 
912 #define STATE_OTA_UNKNOWN_DIGEST_METHOD (-0x091E)
913 
918 #define STATE_DOWNLOAD_FINISHED (-0x091F)
919 
924 #define STATE_DOWNLOAD_HTTPRSP_CODE_ERROR (-0x0920)
925 
930 #define STATE_DOWNLOAD_HTTPRSP_HEADER_ERROR (-0x0921)
931 
936 #define STATE_DOWNLOAD_RENEWAL_REQUEST_SENT (-0x0922)
937 
942 #define STATE_DOWNLOAD_SETOPT_MALLOC_SHA256_CTX_FAILED (-0x0923)
943 
948 #define STATE_DOWNLOAD_SETOPT_MALLOC_MD5_CTX_FAILED (-0x0924)
949 
954 #define STATE_OTA_PARSE_URL_HOST_IS_NULL (-0x0925)
955 
960 #define STATE_OTA_PARSE_URL_PATH_IS_NULL (-0x0926)
961 
968 #define STATE_DOWNLOAD_FETCH_TOO_MANY (-0x0927)
969 
977 #define STATE_OTA_QUERY_FIRMWARE_HANDLE_IS_NULL (-0x0928)
978 
985 #define STATE_OTA_HOST_STRING_OVERFLOW (-0x0929)
986 
993 #define STATE_OTA_PATH_STRING_OVERFLOW (-0x092A)
994 
995 #if defined(__cplusplus)
996 }
997 #endif
998 
999 #endif /* #ifndef __AIOT_OTA_API_H__ */
1000 
下载固件过程中收到的分片的报文的描述, 包括类型, 以及所存储的buffer地址, buffer的长度, 以及当前的下载进度
Definition: aiot_ota_api.h:237
设置按照range下载的结束地址
Definition: aiot_ota_api.h:470
设置处理OTA消息的用户回调函数
Definition: aiot_ota_api.h:329
uint8_t * buffer
下载固件过程中, SDK分配出来的存储云端下行的固件内容的buffer地址.在回调函数结束后SDK就会主动释放.用户需要自行将报文拷贝保存.
Definition: aiot_ota_api.h:251
void * aiot_ota_init()
创建一个OTA实例
Definition: aiot_ota_api.c:64
与云端约定的设备下载出错的错误码描述
Definition: aiot_ota_api.h:295
aiot_download_recv_type_t
下载固件过程中收到的分片的报文的类型
Definition: aiot_ota_api.h:224
设置download实例句柄所包含下载任务的具体内容
Definition: aiot_ota_api.h:444
uint32_t file_num
ota任务中总共的url数量
Definition: aiot_ota_api.h:179
与云端约定的设备升级出错的错误描述
Definition: aiot_ota_api.h:290
char * extra_data
当前下载信息中的扩展内容
Definition: aiot_ota_api.h:169
设置按照range下载的起始地址
Definition: aiot_ota_api.h:457
Definition: aiot_ota_api.h:94
char * device_name
待升级设备的device_name
Definition: aiot_ota_api.h:113
与云端约定的烧写固件出错的错误码描述
Definition: aiot_ota_api.h:305
下载OTA文件的方式为HTTPS
Definition: aiot_ota_api.h:87
下载OTA文件的方式为MQTT
Definition: aiot_ota_api.h:93
void(* aiot_ota_recv_handler_t)(void *handle, const aiot_ota_recv_t *const msg, void *userdata)
设备收到OTA的mqtt下行报文时的接收回调函数.用户在这个回调函数中可以看到待升级固件的版本号, 决定升级策略(是否升级, 何时升级等)
Definition: aiot_ota_api.h:218
int32_t percent
当前的下载进度的百分比
Definition: aiot_ota_api.h:263
用户需要SDK暂存的上下文
Definition: aiot_ota_api.h:351
int32_t aiot_ota_setopt(void *handle, aiot_ota_option_t option, void *data)
设置ota句柄的参数
Definition: aiot_ota_api.c:115
aiot_ota_recv_type_t
云端下行的OTA消息的类型, 分为固件升级和远程配置两种
Definition: aiot_ota_api.h:40
HTTP 数据接收回调函数
Definition: aiot_ota_api.h:420
uint32_t file_id
当前下载任务的序号
Definition: aiot_ota_api.h:184
uint8_t digest_method
Definition: aiot_ota_api.h:140
uint32_t len
下载固件过程中, SDK分配出来的存储云端下行的固件内容的buffer的大小, 用户可以通过AIOT_DLOPT_BODY_BUFFER...
Definition: aiot_ota_api.h:257
aiot_ota_protocol_type_t
OTA下载升级文件的方式
Definition: aiot_ota_api.h:81
通过HTTP接收固件内容时, 在协议栈花费的最长时间
Definition: aiot_ota_api.h:411
aiot_download_option_t
调用 aiot_download_setopt 接口时, option参数的可用值
Definition: aiot_ota_api.h:372
设备通过HTTP与固件服务器建联时, 网络使用的安全凭据
Definition: aiot_ota_api.h:391
int32_t aiot_download_deinit(void **handle)
释放download实例句柄的资源
Definition: aiot_ota_api.c:201
云端下行的OTA消息, 包括其消息类型(固件升级/远程配置)和升级任务的具体描述
Definition: aiot_ota_api.h:196
当设备从固件下载服务器接收返回的http报文时, 每次从 aiot_download_recv_handler_t 回调函数中给出的body...
Definition: aiot_ota_api.h:480
设置MQTT的handle
Definition: aiot_ota_api.h:340
与云端约定的固件校验数字签名时出错的错误码描述
Definition: aiot_ota_api.h:300
收到的OTA固件的digest方法为SHA256
Definition: aiot_ota_api.h:72
aiot_ota_digest_type_t
OTA过程中使用的digest方法类型, 分为MD5和SHA256两种
Definition: aiot_ota_api.h:60
int32_t aiot_download_send_request(void *handle)
向云端发送GET固件报文请求
Definition: aiot_ota_api.c:929
char * version
固件的版本信息. 如果为固件信息, 则这个version字段为固件的版本号. 如果为远程配置消息, 则为配置的configId
Definition: aiot_ota_api.h:152
Definition: aiot_ota_api.h:73
aiot_ota_option_t
调用 aiot_ota_setopt 接口时, option参数的可用值
Definition: aiot_ota_api.h:313
char * file_name
Definition: aiot_ota_api.h:174
char * expect_digest
Definition: aiot_ota_api.h:146
收到的OTA消息为固件升级消息
Definition: aiot_ota_api.h:46
void(* aiot_download_recv_handler_t)(void *handle, const aiot_download_recv_t *packet, void *userdata)
升级开始后, 设备收到分成一段段的固件内容时的收包回调函数.当前默认是通过https报文下推分段后的固件内容...
Definition: aiot_ota_api.h:277
int32_t aiot_ota_report_version_ext(void *handle, char *product_key, char *device_name, char *version)
用于网关中的子设备上报版本号
Definition: aiot_ota_api.c:366
如果当前ota是针对某个外接模块(mcu等), 需要通过该字段设置模块名
Definition: aiot_ota_api.h:363
uint32_t size_total
Definition: aiot_ota_api.h:134
设备通过HTTP访问固件下载服务器的端口号
Definition: aiot_ota_api.h:402
aiot_download_task_desc_t * task_desc
云端下推的固件升级任务的描述信息, 包括url, 大小, 签名等, 更多信息参考aiot_download_task_desc_t ...
Definition: aiot_ota_api.h:206
uint32_t stream_id
Definition: aiot_ota_api.h:124
aiot_ota_protocol_errcode_t
与云端约定的OTA过程中的错误码, 云端据此知道升级过程中出错在哪个环节
Definition: aiot_ota_api.h:285
aiot_ota_protocol_type_t protocol_type
下载ota文件的协议
Definition: aiot_ota_api.h:188
char * product_key
待升级设备的product_key
Definition: aiot_ota_api.h:107
int32_t aiot_download_report_progress(void *handle, int32_t percent)
上报下载完成度的百分比或者错误码
Definition: aiot_ota_api.c:436
int32_t aiot_ota_report_version(void *handle, char *version)
上报普通设备(非网关中的子设备)的版本号
Definition: aiot_ota_api.c:326
int32_t aiot_ota_query_firmware(void *handle)
设备端主动向云端查询升级任务
Definition: aiot_ota_api.c:405
用户需要SDK暂存的上下文
Definition: aiot_ota_api.h:431
aiot_download_recv_type_t type
下载固件过程中收到的分片的报文的类型, 具体见aiot_download_recv_type_t
Definition: aiot_ota_api.h:243
收到的OTA消息为远程配置消息
Definition: aiot_ota_api.h:52
云端下推的固件升级任务的描述信息, 包括url, 大小, 签名等
Definition: aiot_ota_api.h:101
int32_t aiot_download_recv(void *handle)
通过download实例句柄下载一段buffer
Definition: aiot_ota_api.c:475
int32_t aiot_download_setopt(void *handle, aiot_download_option_t option, void *data)
设置download句柄参数
Definition: aiot_ota_api.c:235
Definition: aiot_ota_api.h:481
aiot_ota_recv_type_t type
云端下行的OTA消息类型, 更多信息请参考aiot_ota_recv_type_t
Definition: aiot_ota_api.h:201
收到的OTA固件的digest方法为MD5
Definition: aiot_ota_api.h:66
void * mqtt_handle
*固件升级过程中需用往云端上报消息时需要用到的mqtt句柄
Definition: aiot_ota_api.h:163
char * module
当前固件所都对应的模块
Definition: aiot_ota_api.h:158
Definition: aiot_ota_api.h:364
uint32_t stream_file_id
Definition: aiot_ota_api.h:129
int32_t aiot_ota_deinit(void **handle)
销毁ota实例句柄
Definition: aiot_ota_api.c:85
基于HTTP传输的固件分片报文
Definition: aiot_ota_api.h:230
void * aiot_download_init()
初始化download实例并设置默认参数
Definition: aiot_ota_api.c:161
char * url
Definition: aiot_ota_api.h:119