/************************************************************************/
/* SISCO SOFTWARE MODULE HEADER *****************************************/
/************************************************************************/
/* (c) Copyright Systems Integration Specialists Company, Inc., */
/* 2004-2006, All Rights Reserved */
/* */
/* MODULE NAME : sclparse.c */
/* PRODUCT(S) : */
/* */
/* MODULE DESCRIPTION : This routine parses XML files conforming to the */
/* SCL object model. */
/* */
/* GLOBAL FUNCTIONS DEFINED IN THIS MODULE : */
/* */
/* MODIFICATION LOG : */
/* Date Who Rev Comments */
/* -------- --- ------ ------------------------------------------- */
/* 05/06/08 JRB 23 Chk ReportControl indexed attr (must be true)*/
/************************************************************************/
#include "glbtypes.h"
#include "sysincs.h"
#include "mem_chk.h"
#include "sx_defs.h"
#include "str_util.h"
#include "scl.h" /* SCL file processing structs & functions */
#include "slog.h"
/************************************************************************/
/* For debug version, use a static pointer to avoid duplication of */
/* __FILE__ strings. */
#ifdef DEBUG_SISCO
SD_CONST static ST_CHAR *SD_CONST thisFileName = __FILE__;
#endif
#define SCL_ATTR_OPTIONAL 0 /* attribute is optional */
#define SCL_ATTR_REQUIRED 1 /* attribute is required */
/* Bit numbers in OptFlds bitstring (configured by SmvOpts in SCL file) */
#define SVOPT_BITNUM_SMPRATE 0
#define SVOPT_BITNUM_REFRTM 1
#define SVOPT_BITNUM_SMPSYNCH 2
/* TrgOps bit numbers for IEC-61850. */
/* Use "bit" macros (BSTR_BIT_*) to access each individual bit. */
#define TRGOPS_BITNUM_RESERVED 0
#define TRGOPS_BITNUM_DATA_CHANGE 1 /* "dchg" in some specs */
#define TRGOPS_BITNUM_QUALITY_CHANGE 2 /* "qchg" in some specs */
#define TRGOPS_BITNUM_DATA_UPDATE 3 /* "dupd" in some specs */
#define TRGOPS_BITNUM_INTEGRITY 4 /* "period" in 61850-6 */
#define TRGOPS_BITNUM_GENERAL_INTERROGATION 5
/* OptFlds bit numbers for IEC-61850. */
/* Use "bit" macros (BSTR_BIT_*) to access each individual bit. */
/* NOTE: DATSETNAME in IEC-61850 same as OUTDAT in UCA. */
/* NOTE: bit numbers 1 thru 4 correspond to the masks MVLU_SQNUM_MASK, */
/* MVLU_RPTTIM_MASK, MVLU_REASONS_MASK, MVLU_OUTDAT_MASK above. */
/* Bit masks don't work well beyond 8 bits. */
#define OPTFLD_BITNUM_RESERVED 0
#define OPTFLD_BITNUM_SQNUM 1
#define OPTFLD_BITNUM_TIMESTAMP 2
#define OPTFLD_BITNUM_REASON 3
#define OPTFLD_BITNUM_DATSETNAME 4
#define OPTFLD_BITNUM_DATAREF 5
#define OPTFLD_BITNUM_BUFOVFL 6
#define OPTFLD_BITNUM_ENTRYID 7
#define OPTFLD_BITNUM_CONFREV 8
#define OPTFLD_BITNUM_SUBSEQNUM 9 /* segmentation in 61850-8-1*/
/* Macros to access each individual bit of any bitstring. */
#define BSTR_BIT_SET_ON(ptr,bitnum) \
( ((ST_UINT8 *)(ptr))[(bitnum)/8] |= (0x80>>((bitnum)&7)) )
#define BSTR_BIT_SET_OFF(ptr,bitnum) \
( ((ST_UINT8 *)(ptr))[(bitnum)/8] &= ~(0x80>>((bitnum)&7)) )
/* BSTR_BIT_GET returns 0 if bit is clear, 1 if bit is set. */
#define BSTR_BIT_GET(ptr,bitnum) \
(( ((ST_UINT8 *)(ptr))[(bitnum)/8] & (0x80>>((bitnum)&7)) ) ? 1:0)
typedef struct scl_dec_ctrl
{
ST_CHAR iedName[MAX_IDENT_LEN+1];
ST_CHAR accessPointName[MAX_IDENT_LEN+1];
ST_BOOLEAN accessPointFound; /* SD_TRUE if IED and AccessPoint found */
ST_BOOLEAN iedNameMatched;
ST_BOOLEAN accessPointMatched;
SCL_INFO *sclInfo;
SCL_GSE *scl_gse; /* Used for "GSE" in "Communication" section */
SCL_SMV *scl_smv; /* Used for "SMV" in "Communication" section */
SCL_ADDRESS *scl_addr;
SCL_LD *scl_ld; /* Used for "LDevice" */
SCL_LN *scl_ln; /* Used for "LN" (Logical Node) */
SCL_RCB *scl_rcb; /* alloc to store ReportControl info */
SCL_LCB *scl_lcb; /* alloc to store LogControl info */
ST_UINT8 TrgOps[1]; /* Used for ReportControl or LogControl. */
/* Copied to SCL_RCB or SCL_LCB. */
SCL_SVCB *scl_svcb; /* Used for "SampledValueControl". */
SCL_ENUMVAL *scl_enumval; /* Used for "EnumVal". */
SCL_DAI *scl_dai; /* Used for "DAI". */
SCL_DA *scl_da; /* Used for "DA". */
SCL_BDA *scl_bda; /* Used for "BDA". */
ST_CHAR flattened[MAX_FLAT_LEN + 1]; /* Created by concatenating values*/
/* from DOI, SDI, and DAI elements*/
} SCL_DEC_CTRL;
/************************************************************************/
static ST_VOID _SCL_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _Header_SFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _Communication_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _SubNetwork_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _ConnectedAP_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _GSE_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _GSE_Address_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _GSE_MinTime_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _GSE_MaxTime_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _GSE_Address_P_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _SMV_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _SMV_Address_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _SMV_Address_P_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _Address_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _Address_P_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _IED_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _AccessPoint_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _Server_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _LDevice_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _LN_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _DataSet_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _FCDA_SFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _ReportControl_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _LogControl_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _GSEControl_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _SettingControl_SFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _TrgOps_SFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _OptFlds_SFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _RptEnabled_SFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _DOI_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _SDI_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _DAI_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _DAI_Val_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _DataTypeTemplates_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _LNodeType_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _DO_SFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _DOType_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _DA_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _SDO_SFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _DAType_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _DA_Val_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _BDA_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _BDA_Val_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _EnumType_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _EnumVal_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_RET _scl_unknown_el_start (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *tag);
static ST_RET _scl_unknown_el_end (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *tag);
static ST_VOID _SampledValueControl_SEFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _SmvOpts_SFun (SX_DEC_CTRL *sxDecCtrl);
static ST_VOID _IEDName_EFun (SX_DEC_CTRL *sxDecCtrl); //for gsecontr
ScdParse.zip_MMS lite _scd 解析_scd解析_scl_parse_智能变电站
版权申诉
5星 · 超过95%的资源 21 浏览量
2022-07-15
10:32:13
上传
评论 1
收藏 91KB ZIP 举报
小波思基
- 粉丝: 70
- 资源: 1万+
最新资源
- STM8L101F3P6单片机+CC1100模块433M遥控器设计硬件(原理图+PCB)工程文件.zip
- 上传下载铁人下载系统 Liuxing 1.0-liuxing1.0.rar
- 南京邮电大学数学实验实力雄厚,凭借其优秀的师资力量、丰富的实践教学资源和卓越的科研成果,成为国内一流的数学实验教学和科研基地
- 【火爆朋友圈的今天吃什么源码 v1.0】随机的为用户带来每一天的用餐选择和推荐.rar
- MPU6050中文版数据手册
- 上传下载手机电影下载-mobiledy.rar
- 响应式旅游网站源码下载 马尔代夫旅游网站.rar
- CMS小涴熊漫画连载系统漫画网站源码 带采集API.rar
- 福袋点点.apk
- 基于STM32的电子秤采用0.96寸OLED显示UI界面源码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论2