﻿#ifndef __LINKKIT_GATEWAY_COMMON_H
#define __LINKKIT_GATEWAY_COMMON_H

/***************HEADER FILES****************/
#include <string.h>
#include <syslog.h>
#include "ipc_session.h"
#include "mqtt_session.h"
#include "lnxall_list.h"
#include "dy_utils/dy_common.h"
#include "dy_utils/dy_ds.h"
#include "dy_utils/kv_array.h"
#include "dy_utils/dy_ipc.h"

#include "infra_types.h"
#include "infra_defs.h"
//#include "infra_compat.h"
#include "infra_log.h"
#include "dev_model_api.h"
#include "dm_wrapper.h"
#include "mqtt_api.h"
/******************************************/

typedef struct
{
    list_t list;
    iotx_dev_meta_info_t meta_info;
}linkkit_info_list_t;

typedef struct
{
    list_t list;
	int type;
    ipc_msg_t mqtt;
}data_list_t;

typedef struct _linkkit_gateway_var_t
{
    list_t node_list;
	
	int data_flag;
	int data_cnt;
	list_t data_list;
	int link_node_cnt;

	int get_msg_timer;
	int mqtt_list_cnt;
	list_t send_mqtt_list;
	char response_event[128];
	
	ipc_session_t* session; //内部broker的MQTT client，用于进程间通信
    nodes_cfg_table_t *nodes_cfg_table; //节点信息
    template_table_t *template_table; //模板信息
    char sn_str[SN_MAX_LEN];
    char proc_name[PROGRAM_NAME_LEN];
    kv_array_t identifier_backup;
}linkkit_gateway_var_t;

typedef struct {
    char *dy_sn;
    char *alink_sn;
}alink_iot_sn_map_t;


#endif /* __LINKKIT_GATEWAY_COMMON_H */
