first commit for opensource
first commit for opensource
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
#ifndef _QCLOUD_EVENT_H_
|
||||
#define _QCLOUD_EVENT_H_
|
||||
|
||||
#define QCLOUD_EVENT_TOKEN_MAX (32)
|
||||
|
||||
#define EVENT_FIELD_POST "event_post"
|
||||
#define EVENT_FIELD_POSTS "events_post"
|
||||
#define EVENT_FIELD_REPLY "event_reply"
|
||||
|
||||
#define EVENT_REPLY_FIELD_CODE "code"
|
||||
#define EVENT_REPLY_FIELD_STATUS "status"
|
||||
|
||||
typedef void (*event_reply_handler_fn_t)(void *client, mqtt_incoming_msg_t *msg);
|
||||
|
||||
typedef struct qcloud_event_reply_st {
|
||||
qcloud_list_t list;
|
||||
|
||||
char client_token[QCLOUD_EVENT_TOKEN_MAX]; // 标识该请求的clientToken字段
|
||||
osal_timer_t timer; // 请求超时定时器
|
||||
event_reply_handler_fn_t handler; // 事件上报回复回调
|
||||
} qcloud_event_reply_t;
|
||||
|
||||
typedef enum event_sync_state_en {
|
||||
QCLOUD_EVENT_SYNC_STATE_NONE,
|
||||
QCLOUD_EVENT_SYNC_STATE_PENDACK,
|
||||
QCLOUD_EVENT_SYNC_STATE_SUCCESS,
|
||||
QCLOUD_EVENT_SYNC_STATE_TIMEOUT,
|
||||
QCLOUD_EVENT_SYNC_STATE_NACK,
|
||||
} event_sync_state_t;
|
||||
|
||||
typedef struct qcloud_event_st {
|
||||
char *event_name; // event name
|
||||
char *type; // event type
|
||||
uint32_t timestamp; // timestamp
|
||||
uint8_t event_payload_count; // count of event_payload
|
||||
shadow_dev_property_t *event_payload; // payload of the event
|
||||
} qcloud_event_t;
|
||||
|
||||
typedef struct qcloud_event_client_st {
|
||||
void *reply_list_lock;
|
||||
qcloud_list_t reply_list;
|
||||
|
||||
char down_topic[QCLOUD_MQTT_TOPIC_SIZE_MAX];
|
||||
char up_topic[QCLOUD_MQTT_TOPIC_SIZE_MAX];
|
||||
|
||||
event_sync_state_t sync_state;
|
||||
|
||||
qcloud_shadow_client_t *shadow_client;
|
||||
} qcloud_event_client_t;
|
||||
|
||||
__QCLOUD_API__ qcloud_err_t qcloud_event_client_create(qcloud_event_client_t *client, qcloud_shadow_client_t *shadow_client, qcloud_device_t *device);
|
||||
|
||||
__QCLOUD_API__ qcloud_err_t qcloud_event_client_destroy(qcloud_event_client_t *client);
|
||||
|
||||
/**
|
||||
* @brief <20>¼<EFBFBD><C2BC>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>飬SDK<44><4B><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>json<6F><6E>ʽ<EFBFBD><CABD>װ
|
||||
* @param pClient shadow ʵ<><CAB5>ָ<EFBFBD><D6B8>
|
||||
* @param pJsonDoc <20><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD>json<6F><6E>ʽ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>Ϣ<EFBFBD><CFA2>buffer
|
||||
* @param sizeOfBuffer <20><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD>json<6F><6E>ʽ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>Ϣ<EFBFBD><CFA2>buffer<65><72>С
|
||||
* @param event_count <20><><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param pEventArry <20><><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ָ
|
||||
* @param replyCb <20>¼<EFBFBD><C2BC>ظ<EFBFBD><D8B8><EFBFBD>Ϣ<EFBFBD>Ļص<C4BB>
|
||||
* @return @see IoT_Error_Code
|
||||
*/
|
||||
__QCLOUD_API__ qcloud_err_t qcloud_event_client_post(qcloud_event_client_t *client,
|
||||
char *json_doc,
|
||||
size_t json_doc_size,
|
||||
int event_count,
|
||||
qcloud_event_t *events[],
|
||||
event_reply_handler_fn_t handler);
|
||||
|
||||
/**
|
||||
* @brief <20>¼<EFBFBD><C2BC>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>¼<EFBFBD><C2BC><EFBFBD>json<6F><6E>ʽ<EFBFBD><CABD>SDK<44><4B><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
|
||||
* @param pClient shadow ʵ<><CAB5>ָ<EFBFBD><D6B8>
|
||||
* @param pJsonDoc <20><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD>json<6F><6E>ʽ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>Ϣ<EFBFBD><CFA2>buffer
|
||||
* @param sizeOfBuffer <20><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD>json<6F><6E>ʽ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>Ϣ<EFBFBD><CFA2>buffer<65><72>С
|
||||
* @param pEventMsg <20><><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>¼<EFBFBD>json<6F><6E>Ϣ
|
||||
* json<6F>¼<EFBFBD><C2BC><EFBFBD>ʽ<EFBFBD><CABD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>
|
||||
* {"method": "event_post",
|
||||
* "clientToken": "123",
|
||||
* "version": "1.0",
|
||||
* "eventId": "PowerAlarm",
|
||||
* "type": "fatal",
|
||||
* "timestamp": 1212121221,
|
||||
* "params": {
|
||||
* "Voltage": 2.8,
|
||||
* "Percent": 20
|
||||
* }
|
||||
* }
|
||||
*
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>
|
||||
* {
|
||||
* "eventId": "PowerAlarm",
|
||||
* "type": "fatal",
|
||||
* "timestamp": 1212121221,
|
||||
* "params": {
|
||||
* "Voltage": 2.8,
|
||||
* "Percent": 20
|
||||
* }
|
||||
* },
|
||||
* {
|
||||
* "name": "PowerAlarm",
|
||||
* "type": "fatal",
|
||||
* "timestamp": 1212121223,
|
||||
* "params": {
|
||||
* "Voltage": 2.1,
|
||||
* "Percent": 10
|
||||
* }
|
||||
* },
|
||||
* ....
|
||||
*
|
||||
* @param replyCb <20>¼<EFBFBD><C2BC>ظ<EFBFBD><D8B8><EFBFBD>Ϣ<EFBFBD>Ļص<C4BB>
|
||||
* @return @see IoT_Error_Code
|
||||
*/
|
||||
__QCLOUD_API__ qcloud_err_t qcloud_event_client_post_raw(qcloud_event_client_t *client,
|
||||
char *json_doc,
|
||||
size_t json_doc_size,
|
||||
char *event_msg,
|
||||
event_reply_handler_fn_t handler);
|
||||
|
||||
__QCLOUD_INTERNAL__ qcloud_err_t event_json_node_add(char *json_doc, size_t json_doc_size, const char *key, void *data, json_data_type_t type);
|
||||
|
||||
__QCLOUD_INTERNAL__ int event_json_return_code_parse(char *json_doc, int32_t *return_code);
|
||||
|
||||
__QCLOUD_INTERNAL__ int event_json_status_parse(char *json_doc, char **return_status);
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user