You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
libiec61850/tools/model_generator_dotnet/SCLParser/src/SclSMVControl.cs

310 lines
7.9 KiB
C#

/*
* Copyright 2013-2025 Michael Zillgith, MZ Automation GmbH
*
* This file is part of MZ Automation IEC 61850 SDK
*
* All rights reserved.
*/
using System;
using System.Xml;
namespace IEC61850.SCL
{
public class SclSMVControl
{
internal XmlNode xmlNode;
private XmlDocument xmlDocument;
private SclSmvOpts smvOpts = null;
public SclSMVControl(SclDocument SclxmlDocument, XmlNode xmlNode, XmlNamespaceManager nsManager)
{
this.xmlNode = xmlNode;
xmlDocument = SclxmlDocument.XmlDocument;
XmlAttribute nameAttr = xmlNode.Attributes["name"];
if (nameAttr == null)
SclxmlDocument.AddIssue(xmlNode, "ERROR", "Model integrity", "SMVControl has no name attribute", this, "MissingName");
XmlNode smvOptsNode = xmlNode.SelectSingleNode("scl:SmvOpts", nsManager);
if (smvOptsNode != null)
smvOpts = new SclSmvOpts(xmlDocument, smvOptsNode);
}
public SclSmvOpts SclSmvOpts
{
get
{
return smvOpts;
}
}
public string Name
{
get
{
return XmlHelper.GetAttributeValue(xmlNode, "name");
}
set
{
XmlHelper.SetAttributeCreateIfNotExists(xmlDocument, xmlNode, "name", value);
}
}
public string Desc
{
get
{
return XmlHelper.GetAttributeValue(xmlNode, "desc");
}
set
{
XmlHelper.SetAttributeCreateIfNotExists(xmlDocument, xmlNode, "desc", value);
}
}
public string DataSet
{
get
{
return XmlHelper.GetAttributeValue(xmlNode, "datSet");
}
set
{
XmlHelper.SetAttributeCreateIfNotExists(xmlDocument, xmlNode, "datSet", value);
}
}
public int ConfRev
{
get
{
string valStr = XmlHelper.GetAttributeValue(xmlNode, "confRev");
if (valStr != null)
{
int retVal = -1;
Int32.TryParse(valStr, out retVal);
return (retVal);
}
else
return (-1);
}
set
{
XmlHelper.SetAttributeCreateIfNotExists(xmlDocument, xmlNode, "confRev", value.ToString());
}
}
public string SmvID
{
get
{
return XmlHelper.GetAttributeValue(xmlNode, "smvID");
}
set
{
XmlHelper.SetAttributeCreateIfNotExists(xmlDocument, xmlNode, "smvID", value);
}
}
public bool Multicast
{
get
{
return XmlHelper.ParseBooleanAttribute(xmlNode, "multicast", false);
}
set
{
XmlHelper.SetBooleanAttributeCreateIfNotExists(xmlDocument, xmlNode, "multicast", value);
}
}
public int SmpRate
{
get
{
string valStr = XmlHelper.GetAttributeValue(xmlNode, "smpRate");
if (valStr != null)
{
int retVal = -1;
Int32.TryParse(valStr, out retVal);
return (retVal);
}
else
return (-1);
}
set
{
XmlHelper.SetAttributeCreateIfNotExists(xmlDocument, xmlNode, "smpRate", value.ToString());
}
}
public int NofASDU
{
get
{
string valStr = XmlHelper.GetAttributeValue(xmlNode, "nofASDU");
if (valStr != null)
{
int retVal = -1;
Int32.TryParse(valStr, out retVal);
return (retVal);
}
else
return (-1);
}
set
{
XmlHelper.SetAttributeCreateIfNotExists(xmlDocument, xmlNode, "nofASDU", value.ToString());
}
}
public string SmpMod
{
get
{
return XmlHelper.GetAttributeValue(xmlNode, "smpMod");
}
set
{
XmlHelper.SetAttributeCreateIfNotExists(xmlDocument, xmlNode, "smpMod", value);
}
}
public string SecurityEnabled
{
get
{
return XmlHelper.GetAttributeValue(xmlNode, "securityEnabled");
}
set
{
XmlHelper.SetAttributeCreateIfNotExists(xmlDocument, xmlNode, "securityEnabled", value);
}
}
}
public class SclSmvOpts
{
internal XmlNode xmlNode = null;
private XmlDocument xmlDocument;
public bool RefreshTime
{
get
{
return XmlHelper.ParseBooleanAttribute(xmlNode, "refreshTime", false); ;
}
set
{
XmlHelper.SetBooleanAttributeCreateIfNotExists(xmlDocument, xmlNode, "refreshTime", value);
}
}
public bool SampleRate
{
get
{
return XmlHelper.ParseBooleanAttribute(xmlNode, "sampleRate", false);
}
set
{
XmlHelper.SetBooleanAttributeCreateIfNotExists(xmlDocument, xmlNode, "sampleRate", value);
}
}
public bool DataSet
{
get
{
return XmlHelper.ParseBooleanAttribute(xmlNode, "dataSet", false); ;
}
set
{
XmlHelper.SetBooleanAttributeCreateIfNotExists(xmlDocument, xmlNode, "dataSet", value);
}
}
public bool Security
{
get
{
return XmlHelper.ParseBooleanAttribute(xmlNode, "security", false);
}
set
{
XmlHelper.SetBooleanAttributeCreateIfNotExists(xmlDocument, xmlNode, "security", value);
}
}
public bool SynchSourceId
{
get
{
return XmlHelper.ParseBooleanAttribute(xmlNode, "synchSourceId", false); ;
}
set
{
XmlHelper.SetBooleanAttributeCreateIfNotExists(xmlDocument, xmlNode, "synchSourceId", value);
}
}
public bool DataRef
{
get
{
return XmlHelper.ParseBooleanAttribute(xmlNode, "dataRef", false); ;
}
set
{
XmlHelper.SetBooleanAttributeCreateIfNotExists(xmlDocument, xmlNode, "dataRef", value);
}
}
public bool SampleSynchronized
{
get
{
return XmlHelper.ParseBooleanAttribute(xmlNode, "sampleSynchronized", false); ;
}
set
{
XmlHelper.SetBooleanAttributeCreateIfNotExists(xmlDocument, xmlNode, "sampleSynchronized", value);
}
}
public int GetIntValue()
{
int intValue = 0;
if (RefreshTime) intValue += 1;
if (SampleSynchronized) intValue += 2;
if (SampleRate) intValue += 4;
if (DataSet) intValue += 8;
if (Security) intValue += 16;
return intValue;
}
public SclSmvOpts(XmlDocument xmlDocument, XmlNode xmlNode)
{
this.xmlNode = xmlNode;
this.xmlDocument = xmlDocument;
}
}
}