#pragma once #include #include #include #include "iec61850_server.h" typedef struct { std::string desc; std::string type; }stru_DO; typedef struct { std::string lnClass; std::vector vec_do; std::map map_do; // key:name }stru_LNodeType; typedef struct { std::string bType; std::string type; std::string dchg; std::string qchg; std::string fc; std::string text; }stru_DA; typedef struct { std::string cdc; std::vector vec_da; std::map map_da; // key:name std::vector vec_sdo; std::map map_sdo; // key:name }stru_DOType; typedef struct { std::string bType; std::string type; std::string fc; std::string dchg; std::string qchg; }stru_BDA; typedef struct { std::vector vec_bda; std::map map_bda; // key:name }stru_DAType; typedef struct { std::vector vec_ord; std::map map_enumVal; // key:ord }stru_EnumType; typedef struct _all_DA { DataAttribute *DA; std::string bType; std::string type; std::string fc; std::string dchg; std::string qchg; std::string text; std::string sAddr; std::string val; std::map map_all_da; // key:name }stru_all_DA; typedef struct _all_DO { DataObject *DO; std::map map_all_sdo; // key:name std::map map_all_da; // key:name }stru_all_DO; typedef struct _DAI { std::string sAddr; std::string val; }stru_DAI; typedef struct _SDI { std::vector vec_sdI; std::map map_sdI; // key:name std::vector vec_daI; std::map map_daI; // key:name }stru_SDI; typedef struct _DOI { std::string desc; std::vector vec_sdI; std::map map_sdI; // key:name std::vector vec_daI; std::map map_daI; // key:name }stru_DOI; typedef struct { std::string ldevice_inst; std::string ln_type; std::string ln_class; std::string ln_inst; std::string ln_prefix; std::string do_name; stru_all_DO *p_all_do; }stru_contorl_DO; typedef struct { LogicalNode *LN; std::string lnType; std::string lnClass; std::string desc; std::string inst; std::string prefix; std::vector vec_doI; std::map map_doI; // key:name std::map map_all_do; // key:name }stru_LN; typedef struct { DataSetEntry *fcda; std::string ldInst; std::string lnClass; std::string lnInst; std::string prefix; std::string doName; std::string daName; std::string fc; }stru_FCDA; typedef struct { DataSet *dataset; std::string desc; std::vector vec_fcda; }stru_DataSet; typedef struct { bool dchg; bool qchg; bool dupd; bool period; }stru_TrgOps; typedef struct { bool seqNum; bool timeStamp; bool dataSet; bool reasonCode; bool dataRef; bool entryID; bool configRef; }stru_OptFields; typedef struct { ReportControlBlock *Rcb; std::string datSet; int intgPd; std::string rptID; int confRev; bool buffered; int bufTime; stru_TrgOps trgOps; stru_OptFields optFields; int RptEnabled_max; }stru_ReportControl; typedef struct { uint8_t actSG; uint8_t numOfSGs; }stru_SettingControl; typedef struct { LogicalNode *LLN0; std::string lnType; std::string lnClass; std::vector vec_dataset; std::map map_dataset; // key:name std::vector vec_reportControl; std::map map_reportControl; // key:name std::vector vec_doI; std::map map_doI; // key:name std::map map_all_do; // key:name stru_SettingControl settingControl; }stru_LN0; typedef struct { LogicalDevice *Ldevice; SettingGroupControlBlock* sgcb; stru_LN0 ln0; std::vector vec_ln; }stru_LDevice; typedef struct { ModelNode *node; }stru_saddr_point; typedef struct { DataAttribute *DA; DataAttributeType type; std::string str_val; int val; }stru_setting_info; typedef struct { IedModel *model; std::string name; std::string desc; std::string type; std::vector vec_ldevice; std::map map_ldevice; // key:inst std::vector vec_control_do; std::vector vec_saddr; std::map map_saddr_point; // key:saddr std::map map_setting_info; // key:name }stru_ied; typedef struct { stru_ied ied; std::vector vec_lnType; std::map map_lnType; // key:id std::vector vec_doType; std::map map_doType; // key:id std::vector vec_daType; std::map map_daType; // key:id std::vector vec_enumType; std::map map_enumType; // key:id }stru_icd; stru_icd *icd_parse(const char *icd_path); void icd_show(stru_icd &icd);