Link Kit C-SDK  4.0.0
aiot_task_api.h
浏览该文件的文档.
1 
13 #ifndef __AIOT_TASK_API_H__
14 #define __AIOT_TASK_API_H__
15 
16 #if defined(__cplusplus)
17 extern "C" {
18 #endif
19 
20 #include <stdint.h>
21 
26 #define STATE_TASK_BASE (-0x0B00)
27 
32 #define STATE_TASK_DEINIT_HANDLE_IS_NULL (-0x0B01)
33 
38 #define STATE_TASK_SETOPT_HANDLE_IS_NULL (-0x0B02)
39 
43 #define STATE_TASK_RECV_NOTIFY (-0x0B03)
44 
48 #define STATE_TASK_PARSE_NOTIFY_FAILED (-0x0B04)
49 
53 #define STATE_TASK_PARSE_JSON_MALLOC_FAILED (-0x0B05)
54 
58 #define STATE_TASK_PARSE_JSON_ERROR (-0x0B06)
59 
63 #define STATE_TASK_QUERY_TASK_ID_IS_NULL (-0x0B07)
64 
68 #define STATE_TASK_RECV_GET_LIST_REPLY (-0x0B08)
69 
74 #define STATE_TASK_SETOPT_DATA_IS_NULL (-0x0B09)
75 
80 #define STATE_TASK_UPDATE_STATUS_INVALID (-0x0B0A)
81 
90 #define STATE_TASK_UPDATE_STATUS_DETAILS_INVALID (-0x0B0B)
91 
92 typedef enum {
103 
114 
127 
131 typedef enum {
132  AIOT_TASK_STATUS_QUEUED, /* 服务端设置的状态: 任务处于队列中, 还没有推送 */
133  AIOT_TASK_STATUS_SENT, /* 服务端设置的状态: 任务已推送 */
134  AIOT_TASK_STATUS_IN_PROGRESS, /* 设备端设置的状态: 任务进行中. 设备端开始执行一个任务后, 将 */
135  AIOT_TASK_STATUS_SUCCEEDED, /* 设备端设置的状态: 任务完成 */
136  AIOT_TASK_STATUS_FAILED, /* 设备端设置的状态: 任务执行失败 */
137  AIOT_TASK_STATUS_REJECTED, /* 设备端设置的状态: 设备端拒绝执行任务 */
138  AIOT_TASK_STATUS_CANCELLED, /* 服务端设置的状态: 任务被服务端取消 */
139  AIOT_TASK_STATUS_REMOVED, /* 服务端设置的状态: 任务从服务端删除 */
140  AIOT_TASK_STATUS_TIMED_OUT, /* 服务端设置的状态: 任务执行超时 */
141  AIOT_TASK_STATUS_NOT_FOUND /* 服务端设置的状态: 没有找到此任务相关信息 */
143 
147 typedef enum {
148  AIOT_TASKRECV_NOTIFY, /* 对应/sys/{productKey}/{deviceName}/thing/job/notify 这个下行topic, 云端主动下推, 带任务详情 */
149  AIOT_TASKRECV_GET_DETAIL_REPLY, /* 对应/sys/{productKey}/{deviceName}/thing/job/get_reply 这个下行topic, 可以是单个任务的详情, 也可以是任务列表的简单描述 */
150  AIOT_TASKRECV_GET_LIST_REPLY, /* 对应/sys/{productKey}/{deviceName}/thing/job/get_reply 这个下行topic, 可以是单个任务的详情, 也可以是任务列表的简单描述 */
151  AIOT_TASKRECV_UPDATE_REPLY /* 对应/sys/{productKey}/{deviceName}/thing/job/update_reply 这个下行topic, 里面包含某个任务的update的结果, 即是否成功 */
153 
157 typedef struct {
158  char *task_id; /* 任务ID */
159  aiot_task_status_t status; /* 任务的状态 */
160  char *job_document; /* 任务执行规则 */
161  char *sign_method; /* 文件签名的方法 */
162  char *sign; /* 文件的签名 */
163  char *document_file_url; /* 任务文件下载的url */
164  char *status_details; /* 客户自定义状态,透传到云端, 注意格式为json对象,例如 "{\"key\": \"value\"", strlen("\"key\": \"value\"}"*/
165  uint8_t progress; /* 任务处理的进度,数字从0-100 */
166  void *handle; /* 任务处理的句柄 */
167 } task_desc_t;
168 
172 typedef struct {
173  char *task_id; /* 任务ID */
174  aiot_task_status_t status; /* 任务的状态 */
176 
180 typedef struct {
181  uint32_t number; /* 从云端拉取的任务list的大小 */
182  task_summary_t *tasks; /* 拉取的任务数组指针 */
184 
188 typedef struct {
189  uint32_t code; /* 云端返回的code */
190  task_desc_t task; /* 任务描述的详细信息 */
192 
196 typedef struct {
197  uint32_t code; /* 云端返回的code */
198  char *task_id; /* 更新任务后返回的任务id */
199  aiot_task_status_t status; /* 更新任务后返回的状态 */
201 
205 typedef struct {
206  aiot_task_recv_type_t type; /* 返回的数据类型 */
207  union {
208  task_desc_t notify; /* 云端主动推送任务的数据 */
209  task_get_list_reply_t get_list_reply; /* 请求任务list返回的数据 */
210  task_get_detail_reply_t get_detail_reply; /* 请求任务详细状态返回的数据 */
211  task_update_reply_t update_reply; /* 更新任务状态返回的数据 */
212  } data;
214 
224 typedef void (* aiot_task_recv_handler_t)(void *handle, const aiot_task_recv_t *recv, void *userdata);
225 
234 void *aiot_task_init(void);
235 
246 int32_t aiot_task_deinit(void **handle);
247 
266 int32_t aiot_task_setopt(void *handle, aiot_task_option_t option, void *data);
267 
281 int32_t aiot_task_get_task_list(void *handle);
282 
283 /* 发送报文到/sys/{productKey}/{deviceName}/thing/job/get. 若函数入参user_task_id不为空, 则上行报文的payload为 "taskId": user_task_id, 返回该任务的详情; */
284 /* 若user_task_id为空, 则上行报文的payload为 "taskId": "$next", 云端返回未处于终态的任务队列中时间排在最前面一个任务, 该任务状态为QUEUED、SENT、IN_PROGRESS三者之一 */
285 
301 int32_t aiot_task_get_task_detail(void *handle, char *user_task_id);
302 
318 int32_t aiot_task_update(void *handle, task_desc_t *task);
319 #if defined(__cplusplus)
320 }
321 #endif
322 
323 #endif /* #ifndef __AIOT_TASK_API_H__ */
324 
325 
Definition: aiot_task_api.h:149
设置处理task消息的用户回调函数
Definition: aiot_task_api.h:113
char * sign
Definition: aiot_task_api.h:162
aiot_task_status_t status
Definition: aiot_task_api.h:199
int32_t aiot_task_get_task_detail(void *handle, char *user_task_id)
从云端获取task详细内容
Definition: aiot_task_api.c:599
Definition: aiot_task_api.h:138
任务描述的数据结构
Definition: aiot_task_api.h:157
Definition: aiot_task_api.h:136
int32_t aiot_task_get_task_list(void *handle)
从云端获取task列表
Definition: aiot_task_api.c:589
char * task_id
Definition: aiot_task_api.h:173
char * document_file_url
Definition: aiot_task_api.h:163
uint8_t progress
Definition: aiot_task_api.h:165
Definition: aiot_task_api.h:132
uint32_t code
Definition: aiot_task_api.h:197
int32_t aiot_task_deinit(void **handle)
销毁task实例句柄
Definition: aiot_task_api.c:743
更新任务状态到云端后,云端返回的数据
Definition: aiot_task_api.h:196
task_update_reply_t update_reply
Definition: aiot_task_api.h:211
用户需要SDK暂存的上下文
Definition: aiot_task_api.h:124
Definition: aiot_task_api.h:137
从云端拉取list返回的数据
Definition: aiot_task_api.h:180
void(* aiot_task_recv_handler_t)(void *handle, const aiot_task_recv_t *recv, void *userdata)
设备收到task的mqtt下行报文时的接收回调函数
Definition: aiot_task_api.h:224
task_get_list_reply_t get_list_reply
Definition: aiot_task_api.h:209
char * status_details
Definition: aiot_task_api.h:164
uint32_t number
Definition: aiot_task_api.h:181
aiot_task_status_t
任务的状态.
Definition: aiot_task_api.h:131
void * handle
Definition: aiot_task_api.h:166
void * aiot_task_init(void)
创建一个task实例
Definition: aiot_task_api.c:721
aiot_task_status_t status
Definition: aiot_task_api.h:159
aiot_task_status_t status
Definition: aiot_task_api.h:174
aiot_task_recv_type_t type
Definition: aiot_task_api.h:206
Definition: aiot_task_api.h:148
设置MQTT的handle
Definition: aiot_task_api.h:102
char * sign_method
Definition: aiot_task_api.h:161
Definition: aiot_task_api.h:151
int32_t aiot_task_update(void *handle, task_desc_t *task)
更新任务状态到云端
Definition: aiot_task_api.c:617
aiot_task_option_t
Definition: aiot_task_api.h:92
Definition: aiot_task_api.h:133
从云端拉取任务详细信息时返回的数据
Definition: aiot_task_api.h:188
Definition: aiot_task_api.h:134
从云端拉取list时每个任务的简要描述
Definition: aiot_task_api.h:172
uint32_t code
Definition: aiot_task_api.h:189
task_desc_t notify
Definition: aiot_task_api.h:208
char * job_document
Definition: aiot_task_api.h:160
Definition: aiot_task_api.h:150
int32_t aiot_task_setopt(void *handle, aiot_task_option_t option, void *data)
设置task句柄的参数
Definition: aiot_task_api.c:679
Definition: aiot_task_api.h:135
task_get_detail_reply_t get_detail_reply
Definition: aiot_task_api.h:210
Definition: aiot_task_api.h:140
char * task_id
Definition: aiot_task_api.h:158
task_summary_t * tasks
Definition: aiot_task_api.h:182
云端主动下发或更新任务云端返回的数据
Definition: aiot_task_api.h:205
task_desc_t task
Definition: aiot_task_api.h:190
aiot_task_recv_type_t
下行有关的数据结构
Definition: aiot_task_api.h:147
Definition: aiot_task_api.h:125
Definition: aiot_task_api.h:139
Definition: aiot_task_api.h:141
char * task_id
Definition: aiot_task_api.h:198