/** 
* @file      virtual_gw_common.h 
* @brief     description common for virtual gateway run in docker
* @details  e.g. broker address, user_name, password .etc
* @author   zhaoxianpeng@zjdyiot.com
* @date     2019.09.04
* @version  A001 
* @par Copyright (c):  
*       DYIOT
* @par History:          
*   version: draft\n 
*/
#ifndef ___COMMON_H
#define ___COMMON_H

/***************HEADER FILES****************/
#include <string.h>
#include <syslog.h>
#include "mqtt_session.h"
#include "ipc_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 "dy_utils/period_service.h"
/******************************************/

#define APP_KEY "fRW7VHmYk6opRVmd"
#define SHANGHAI_S5_CFG  "/app/config/shanghai_S5_mqtt.json"
#define NODE_STATUS_BAK_FILE "/app/shanghai_S5_status.bak"


typedef struct _shanghai_S5_var_s
{
    mqtt_session_t* session_ext;         //外部broker的MQTT client，用于从外部订阅数据
    ipc_session_t* session_int;         //内部broker的MQTT client，用于进程间通信
    char sn_str[SN_MAX_LEN];
    nodes_cfg_table_t *nodes_cfg_table; //节点信息
    template_table_t *template_table; //模板信息
    kv_array_t identifier_backup;
    dev_status_table_t *ds; //下挂节点的状态信息
    int node_status_timer;
    int period_poll_timer;
    time_t nodes_status_sync_date;
    period_service_t *period;
} shanghai_S5_var_t;

extern int external_client_init(shanghai_S5_var_t *var, char *filename);
extern int internal_client_init(shanghai_S5_var_t *var);
extern int external_mqtt_handle_recv_msg(void *obj, mqtt_message_t *mqtt_msg);
extern int send_data_to_front(shanghai_S5_var_t *var, node_cfg_t *node, char *buf, int len);
extern int shanghai_s5_send_rglt(shanghai_S5_var_t *var, pp_regulate_signal_t *regulate_data);

#endif /* ___COMMON_H */
