78 lines
2.0 KiB
C
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__ */
|
|
|