#ifndef __SLAVE_EMS_H__
#define __SLAVE_EMS_H__
#include "../opcua/ua_client.h"


typedef struct slave_ems
{
    int en_data_sub; // 使能数据采集
    char url[64];
    char no[32];
    char name[20];
    UA_Client *client;
    int installpower_coef_init;

    int dev_sum;
    device_t *devs;
    
    hash_intptr_t *dev_hash;
    char *node_sort;
    char *dev_info;
    char *dev_tree;
    char *dev_group_info;
    
} slave_ems; // 从机设备信息

slave_ems *new_slave_ems(const char *url,const char *no,const char *name, int en_data_sub);
int slave_ems_start(slave_ems *slave);
tag_t **slave_ems_get_ro_tags(slave_ems *slave, const char *dev_name, int *num);
tag_t **slave_ems_get_rw_tags(slave_ems *slave, const char *dev_name, int *num);
const device_t *slave_ems_get_dev(slave_ems *slave, const char *dev_name);
int slave_ems_get_dev_oline(slave_ems *slave,const char* dev_name);
char *slave_ems_get_dev_info(slave_ems *slave);
char *slave_ems_get_dev_tree(slave_ems *slave);
char *slave_ems_get_dev_group_info(slave_ems *slave);


int slave_ems_set_dev_group_info(slave_ems *slave, const char *json_str);
char* add_group_to_devices(const char* json_str,const char *no);
cJSON* string_to_json_and_add_prefix(const char* json_str,const char* no, const char* name);
void print_cjson(const cJSON* json, int formatted);
char* remove_substring(const char* no, const char* tag_name);
#endif