EC600U_esp32_iap_uart/LinkSDK/components/data-model/dm_private.h
2024-02-05 17:39:56 +08:00

78 lines
2.0 KiB
C

/**
* @file dm_private.h
* @brief 数据模型模块内部头文件
* @date 2020-01-20
*
* @copyright Copyright (C) 2015-2020 Alibaba Group Holding Limited
*
*/
#ifndef __DM_PRIVATE_H__
#define __DM_PRIVATE_H__
#if defined(__cplusplus)
extern "C" {
#endif
#include "core_stdinc.h"
#include "core_string.h"
#include "core_log.h"
#include "core_diag.h"
#include "core_global.h"
#include "core_mqtt.h"
#include "aiot_sysdep_api.h"
#include "aiot_state_api.h"
#include "aiot_mqtt_api.h"
#include "aiot_dm_api.h"
/* 模块内部名 */
#define DATA_MODEL_MODULE_NAME "dm"
/* ALINK请求的JSON格式 */
#define ALINK_REQUEST_FMT "{\"id\":\"%s\",\"version\":\"1.0\",\"params\":%s}"
/* ALINK应答的JSON格式 */
#define ALINK_RESPONSE_FMT "{\"id\":\"%s\",\"code\":%s,\"data\":%s}"
#define ALINK_JSON_KEY_ID "id"
#define ALINK_JSON_KEY_CODE "code"
#define ALINK_JSON_KEY_PARAMS "params"
#define ALINK_JSON_KEY_DATA "data"
#define ALINK_JSON_KEY_MESSAGE "message"
/* 诊断消息类型 */
#define DM_DIAG_MSG_TYPE_REQ (0x00)
#define DM_DIAG_MSG_TYPE_RSP (0x01)
#define DM_FREE(ptr) do {if (ptr) {dm_handle->sysdep->core_sysdep_free(ptr); ptr = NULL;}} while (0)
/* data-model模块的上下文结构体定义 */
typedef struct {
aiot_sysdep_portfile_t *sysdep;
void *mqtt_handle;
aiot_dm_recv_handler_t recv_handler;
void *userdata;
} dm_handle_t;
/* data-model内部发送函数原型定义 */
typedef int32_t (*dm_msg_send_func_t)(dm_handle_t *handle, const char *topic, const aiot_dm_msg_t *msg);
/* 包含上行topic和对应处理函数的结构体定义 */
typedef struct {
char *topic;
dm_msg_send_func_t func;
} dm_send_topic_map_t;
/* 包含下行topic和对应处理函数的结构体定义 */
typedef struct {
char *topic;
aiot_mqtt_recv_handler_t func;
} dm_recv_topic_map_t;
#if defined(__cplusplus)
}
#endif
#endif /* #ifndef __DM_PRIVATE_H__ */