Initial commit: CCU621_M firmware project with BLE debug link support.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+136
@@ -0,0 +1,136 @@
|
||||
/*
|
||||
* Copyright (C) 2015-2018 Alibaba Group Holding Limited
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _IOTX_CM_H_
|
||||
#define _IOTX_CM_H_
|
||||
|
||||
#include "infra_types.h"
|
||||
|
||||
#define CM_MAX_FD_NUM 3
|
||||
#define CM_DEFAULT_YIELD_TIMEOUT 200
|
||||
/* message confirmation type */
|
||||
typedef enum {
|
||||
/* non ACK */
|
||||
/* MQTT: QoS is 0 */
|
||||
/* CoAP: NON */
|
||||
/* default */
|
||||
IOTX_CM_MESSAGE_NO_ACK,
|
||||
/* need ACK */
|
||||
/* MQTT: QoS is 1 */
|
||||
/* CoAP: CON */
|
||||
IOTX_CM_MESSAGE_NEED_ACK,
|
||||
/* non ACK */
|
||||
/* MQTT: QoS is 3 */
|
||||
/* CoAP: NONE*/
|
||||
IOTX_CM_MESSAGE_SUB_LOCAL,
|
||||
/* Maximum number of ack type */
|
||||
IOTX_CM_MESSAGE_ACK_MAX
|
||||
} iotx_cm_ack_types_t;
|
||||
|
||||
/* message confirmation type */
|
||||
typedef enum {
|
||||
/* non ACK */
|
||||
/* MQTT: QoS is 0 */
|
||||
/* CoAP: NON */
|
||||
/* default */
|
||||
IOTX_CM_ASYNC,
|
||||
/* need ACK */
|
||||
/* MQTT: QoS is 1 */
|
||||
/* CoAP: CON */
|
||||
IOTX_CM_SYNC,
|
||||
/* Maximum number of ack type */
|
||||
IOTX_CM_SYNC_MAX
|
||||
} iotx_cm_sync_mode_types_t;
|
||||
|
||||
/* protocol type */
|
||||
typedef enum IOTX_CM_PROTOCOL_TYPES {
|
||||
/* MQTT */
|
||||
IOTX_CM_PROTOCOL_TYPE_MQTT = 1,
|
||||
/* COAP */
|
||||
IOTX_CM_PROTOCOL_TYPE_COAP = 2,
|
||||
/* HTTP */
|
||||
IOTX_CM_PROTOCOL_TYPE_HTTP = 3,
|
||||
/* HTTP2 */
|
||||
IOTX_CM_PROTOCOL_TYPE_HTTP2 = 4,
|
||||
/* Maximum number of protocol type */
|
||||
IOTX_CM_PROTOCOL_TYPE_MAX
|
||||
} iotx_cm_protocol_types_t;
|
||||
|
||||
|
||||
/* event type */
|
||||
typedef enum IOTX_CM_EVENT_TYPES {
|
||||
/* cloud connected */
|
||||
IOTX_CM_EVENT_CLOUD_CONNECTED = 0,
|
||||
/* cloud: disconnect */
|
||||
/* event_msg is null */
|
||||
IOTX_CM_EVENT_CLOUD_CONNECT_FAILED,
|
||||
/* cloud: disconnect */
|
||||
/* event_msg is null */
|
||||
IOTX_CM_EVENT_CLOUD_DISCONNECT,
|
||||
/* event_msg is iotx_cm_event_result_pt */
|
||||
IOTX_CM_EVENT_SUBCRIBE_SUCCESS,
|
||||
IOTX_CM_EVENT_SUBCRIBE_FAILED,
|
||||
IOTX_CM_EVENT_UNSUB_SUCCESS,
|
||||
IOTX_CM_EVENT_UNSUB_FAILED,
|
||||
IOTX_CM_EVENT_PUBLISH_SUCCESS,
|
||||
IOTX_CM_EVENT_PUBLISH_FAILED,
|
||||
/* Maximum number of event */
|
||||
IOTX_CM_EVENT_MAX
|
||||
} iotx_cm_event_types_t;
|
||||
|
||||
/* The structure of cloud Connection event struct */
|
||||
typedef struct {
|
||||
iotx_cm_event_types_t type;
|
||||
void *msg;
|
||||
} iotx_cm_event_msg_t;
|
||||
|
||||
typedef struct {
|
||||
char *topic;
|
||||
uint8_t *payload;
|
||||
uint32_t payload_len;
|
||||
} event_msg_data_t;
|
||||
|
||||
#ifdef DEVICE_MODEL_ALINK2
|
||||
typedef void (*iotx_cm_data_handle_cb)(int fd, const char *topic, uint32_t topic_len, const char *payload, unsigned int payload_len, void *context);
|
||||
#else
|
||||
typedef void (*iotx_cm_data_handle_cb)(int fd, const char *topic, const char *payload, unsigned int payload_len,
|
||||
void *context);
|
||||
#endif
|
||||
|
||||
typedef void (*iotx_cm_event_handle_cb)(int fd, iotx_cm_event_msg_t *event, void *context);
|
||||
|
||||
|
||||
/* IoTx initializa parameters */
|
||||
typedef struct {
|
||||
uint32_t request_timeout_ms;
|
||||
uint32_t keepalive_interval_ms;
|
||||
uint32_t write_buf_size;
|
||||
uint32_t read_buf_size;
|
||||
iotx_cm_protocol_types_t protocol_type;
|
||||
iotx_cm_event_handle_cb handle_event; /* Specify MQTT event handle */
|
||||
void *context;
|
||||
#ifdef DEVICE_MODEL_ALINK2
|
||||
iotx_dev_meta_info_t *dev_info;
|
||||
iotx_mqtt_region_types_t region;
|
||||
#endif
|
||||
} iotx_cm_init_param_t;
|
||||
|
||||
typedef struct {
|
||||
iotx_cm_ack_types_t ack_type;
|
||||
iotx_cm_sync_mode_types_t sync_mode;
|
||||
uint32_t sync_timeout;
|
||||
iotx_cm_data_handle_cb ack_cb;
|
||||
void *cb_context;
|
||||
} iotx_cm_ext_params_t;
|
||||
|
||||
int iotx_cm_open(iotx_cm_init_param_t *params);
|
||||
int iotx_cm_connect(int fd, uint32_t timeout);
|
||||
int iotx_cm_yield(int fd, unsigned int timeout);
|
||||
int iotx_cm_sub(int fd, iotx_cm_ext_params_t *ext, const char *topic,
|
||||
iotx_cm_data_handle_cb topic_handle_func, void *pcontext);
|
||||
int iotx_cm_unsub(int fd, const char *topic);
|
||||
int iotx_cm_pub(int fd, iotx_cm_ext_params_t *ext, const char *topic, const char *payload, unsigned int payload_len);
|
||||
int iotx_cm_close(int fd);
|
||||
#endif /* _LINKKIT_CM_H_ */
|
||||
Reference in New Issue
Block a user