Initial commit: CCU621_M firmware project with BLE debug link support.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-08 17:28:36 +08:00
commit 9ceb218f80
1597 changed files with 724159 additions and 0 deletions
+136
View File
@@ -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_ */