first commit for opensource

first commit for opensource
This commit is contained in:
supowang
2019-09-16 13:19:50 +08:00
parent 08ab013b8e
commit edb2879617
6303 changed files with 5472815 additions and 23 deletions

View File

@@ -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