- IEC 61850 server: added support for pre configured client with ClientLN
parent
a8821fd148
commit
549de2f7ed
@ -0,0 +1,360 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<SCL xmlns="http://www.iec.ch/61850/2003/SCL">
|
||||
<Header id="" nameStructure="IEDName">
|
||||
</Header>
|
||||
<Communication>
|
||||
<SubNetwork name="subnetwork1" type="8-MMS">
|
||||
<Text>Station bus</Text>
|
||||
<ConnectedAP iedName="simpleIO" apName="accessPoint1">
|
||||
<Address>
|
||||
<P type="IP">0.0.0.0</P>
|
||||
<P type="IP-SUBNET">255.255.255.0</P>
|
||||
<P type="IP-GATEWAY">192.168.2.1</P>
|
||||
<P type="OSI-AP-Title">1,3,9999,33</P>
|
||||
<P type="OSI-AE-Qualifier">33</P>
|
||||
<P type="OSI-PSEL">00000001</P>
|
||||
<P type="OSI-SSEL">0001</P>
|
||||
<P type="OSI-TSEL">0001</P>
|
||||
<P type="MMS-Port">102</P>
|
||||
</Address>
|
||||
</ConnectedAP>
|
||||
<ConnectedAP iedName="remoteClient" apName="accessPoint1">
|
||||
<Address>
|
||||
<P type="IP">192.168.2.9</P>
|
||||
<P type="IP-SUBNET">255.255.255.0</P>
|
||||
<P type="IP-GATEWAY">192.168.2.1</P>
|
||||
<P type="OSI-AP-Title">1,3,9999,33</P>
|
||||
<P type="OSI-AE-Qualifier">33</P>
|
||||
<P type="OSI-PSEL">00000001</P>
|
||||
<P type="OSI-SSEL">0001</P>
|
||||
<P type="OSI-TSEL">0001</P>
|
||||
<P type="MMS-Port">102</P>
|
||||
</Address>
|
||||
</ConnectedAP>
|
||||
</SubNetwork>
|
||||
</Communication>
|
||||
<IED name="simpleIO">
|
||||
<Services>
|
||||
<DynAssociation />
|
||||
<GetDirectory />
|
||||
<GetDataObjectDefinition />
|
||||
<GetDataSetValue />
|
||||
<DataSetDirectory />
|
||||
<ReadWrite />
|
||||
<GetCBValues />
|
||||
<ConfLNs fixPrefix="true" fixLnInst="true" />
|
||||
<ReportSettings cbName="Conf" datSet="Dyn" rptID="Dyn" optFields="Dyn" bufTime="Dyn" trgOps="Dyn" intgPd="Dyn" />
|
||||
<GOOSE max="5" />
|
||||
<GSSE max="5" />
|
||||
<FileHandling />
|
||||
<GSEDir />
|
||||
<TimerActivatedControl />
|
||||
</Services>
|
||||
<AccessPoint name="accessPoint1">
|
||||
<Server>
|
||||
<Authentication />
|
||||
<LDevice inst="GenericIO">
|
||||
<LN0 lnClass="LLN0" lnType="LLN01" inst="">
|
||||
|
||||
<DataSet name="Events" desc="Events">
|
||||
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="ST" lnInst="1" doName="SPCSO1" daName="stVal" />
|
||||
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="ST" lnInst="1" doName="SPCSO2" daName="stVal" />
|
||||
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="ST" lnInst="1" doName="SPCSO3" daName="stVal" />
|
||||
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="ST" lnInst="1" doName="SPCSO4" daName="stVal" />
|
||||
</DataSet>
|
||||
|
||||
<DataSet name="Events2" desc="Events2">
|
||||
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="ST" lnInst="1" doName="SPCSO1" />
|
||||
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="ST" lnInst="1" doName="SPCSO2" />
|
||||
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="ST" lnInst="1" doName="SPCSO3" />
|
||||
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="ST" lnInst="1" doName="SPCSO4" />
|
||||
</DataSet>
|
||||
|
||||
<DataSet name="Measurements" desc="Measurements">
|
||||
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="MX" lnInst="1" doName="AnIn1" daName="mag.f" />
|
||||
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="MX" lnInst="1" doName="AnIn1" daName="q" />
|
||||
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="MX" lnInst="1" doName="AnIn2" daName="mag.f" />
|
||||
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="MX" lnInst="1" doName="AnIn2" daName="q" />
|
||||
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="MX" lnInst="1" doName="AnIn3" daName="mag.f" />
|
||||
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="MX" lnInst="1" doName="AnIn3" daName="q" />
|
||||
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="MX" lnInst="1" doName="AnIn4" daName="mag.f" />
|
||||
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="MX" lnInst="1" doName="AnIn4" daName="q" />
|
||||
</DataSet>
|
||||
|
||||
<ReportControl name="EventsRCB" confRev="1" datSet="Events" rptID="Events1" buffered="false" intgPd="1000" bufTime="50">
|
||||
<TrgOps period="true" />
|
||||
<OptFields seqNum="true" timeStamp="true" dataSet="true" reasonCode="true" configRef="true" />
|
||||
<RptEnabled max="1" />
|
||||
</ReportControl>
|
||||
|
||||
<ReportControl name="EventsRCBPreConf" confRev="1" datSet="Events" rptID="Events1" buffered="false" intgPd="1000" bufTime="50">
|
||||
<TrgOps period="true" />
|
||||
<OptFields seqNum="true" timeStamp="true" dataSet="true" reasonCode="true" configRef="true" />
|
||||
<RptEnabled max="1">
|
||||
<ClientLN iedName="remoteClient" apRef="accessPoint1" ldInst="LD0" lnClass="IHMI" lnInst="1"/>
|
||||
</RptEnabled>
|
||||
</ReportControl>
|
||||
|
||||
<ReportControl name="EventsBRCB" confRev="1" datSet="Events" rptID="Events2" buffered="true" intgPd="1000" bufTime="50">
|
||||
<TrgOps period="true" />
|
||||
<OptFields seqNum="true" timeStamp="true" dataSet="true" reasonCode="true" configRef="true" />
|
||||
<RptEnabled max="1" />
|
||||
</ReportControl>
|
||||
|
||||
<ReportControl name="EventsBRCBPreConf" confRev="1" datSet="Events" rptID="Events2" buffered="true" intgPd="1000" bufTime="50">
|
||||
<TrgOps period="true" />
|
||||
<OptFields seqNum="true" timeStamp="true" dataSet="true" reasonCode="true" configRef="true" />
|
||||
<RptEnabled max="1">
|
||||
<ClientLN iedName="remoteClient" apRef="accessPoint1" ldInst="LD0" lnClass="IHMI" lnInst="1"/>
|
||||
</RptEnabled>
|
||||
</ReportControl>
|
||||
|
||||
<ReportControl name="EventsIndexed" indexed="true" confRev="1" datSet="Events" rptID="Events2" buffered="false" intgPd="1000" bufTime="50">
|
||||
<TrgOps period="true" />
|
||||
<OptFields seqNum="true" timeStamp="true" dataSet="true" reasonCode="true" configRef="true" />
|
||||
<RptEnabled max="3" />
|
||||
</ReportControl>
|
||||
|
||||
<ReportControl name="Measurements" indexed="true" confRev="1" datSet="Measurements" rptID="Measurements" buffered="true" intgPd="1000" bufTime="50">
|
||||
<TrgOps period="false" />
|
||||
<OptFields seqNum="true" timeStamp="true" dataSet="true" reasonCode="true" entryID="true" configRef="true" />
|
||||
<RptEnabled max="3" />
|
||||
</ReportControl>
|
||||
|
||||
<DOI name="Mod">
|
||||
<DAI name="stVal">
|
||||
<Val>on</Val>
|
||||
</DAI>
|
||||
<DAI name="ctlModel">
|
||||
<Val>status-only</Val>
|
||||
</DAI>
|
||||
</DOI>
|
||||
<DOI name="Beh">
|
||||
<DAI name="stVal">
|
||||
<Val>on</Val>
|
||||
</DAI>
|
||||
</DOI>
|
||||
<DOI name="Health">
|
||||
<DAI name="stVal">
|
||||
<Val>ok</Val>
|
||||
</DAI>
|
||||
</DOI>
|
||||
|
||||
<DOI name="NamPlt">
|
||||
<DAI name="vendor">
|
||||
<Val>MZ Automation</Val>
|
||||
</DAI>
|
||||
<DAI name="swRev">
|
||||
<Val>1.3.0</Val>
|
||||
</DAI>
|
||||
<DAI name="d">
|
||||
<Val>libiec61850 server example</Val>
|
||||
</DAI>
|
||||
</DOI>
|
||||
</LN0>
|
||||
<LN lnClass="LPHD" lnType="LPHD1" inst="1" prefix="">
|
||||
<DOI name="PhyHealth">
|
||||
<DAI name="stVal">
|
||||
<Val>ok</Val>
|
||||
</DAI>
|
||||
</DOI>
|
||||
</LN>
|
||||
<LN lnClass="GGIO" lnType="GGIO1" inst="1" prefix="">
|
||||
<DOI name="Mod">
|
||||
<DAI name="stVal">
|
||||
<Val>on</Val>
|
||||
</DAI>
|
||||
<DAI name="ctlModel">
|
||||
<Val>status-only</Val>
|
||||
</DAI>
|
||||
</DOI>
|
||||
<DOI name="Beh">
|
||||
<DAI name="stVal">
|
||||
<Val>on</Val>
|
||||
</DAI>
|
||||
</DOI>
|
||||
<DOI name="Health">
|
||||
<DAI name="stVal">
|
||||
<Val>ok</Val>
|
||||
</DAI>
|
||||
</DOI>
|
||||
<DOI name="SPCSO1">
|
||||
<DAI name="ctlModel">
|
||||
<Val>direct-with-normal-security</Val>
|
||||
</DAI>
|
||||
</DOI>
|
||||
<DOI name="SPCSO2">
|
||||
<DAI name="ctlModel">
|
||||
<Val>direct-with-normal-security</Val>
|
||||
</DAI>
|
||||
</DOI>
|
||||
<DOI name="SPCSO3">
|
||||
<DAI name="ctlModel">
|
||||
<Val>direct-with-normal-security</Val>
|
||||
</DAI>
|
||||
</DOI>
|
||||
<DOI name="SPCSO4">
|
||||
<DAI name="ctlModel">
|
||||
<Val>direct-with-normal-security</Val>
|
||||
</DAI>
|
||||
</DOI>
|
||||
</LN>
|
||||
</LDevice>
|
||||
</Server>
|
||||
</AccessPoint>
|
||||
</IED>
|
||||
<DataTypeTemplates>
|
||||
|
||||
<LNodeType id="LLN01" lnClass="LLN0">
|
||||
<DO name="Mod" type="ENC_1_Mod" />
|
||||
<DO name="Beh" type="ENS_1_Beh" />
|
||||
<DO name="Health" type="ENS_2_Health" />
|
||||
<DO name="NamPlt" type="LPL_1_NamPlt" />
|
||||
</LNodeType>
|
||||
|
||||
<LNodeType id="LPHD1" lnClass="LPHD">
|
||||
<DO name="PhyNam" type="DPL_1_PhyNam" />
|
||||
<DO name="PhyHealth" type="ENS_2_Health" />
|
||||
<DO name="Proxy" type="SPS_1_Proxy" />
|
||||
</LNodeType>
|
||||
|
||||
<LNodeType id="GGIO1" lnClass="GGIO">
|
||||
<DO name="Mod" type="ENC_1_Mod" />
|
||||
<DO name="Beh" type="ENS_1_Beh" />
|
||||
<DO name="Health" type="ENS_2_Health" />
|
||||
<DO name="NamPlt" type="LPL_2_NamPlt" />
|
||||
<DO name="AnIn1" type="MV_1_AnIn1" />
|
||||
<DO name="AnIn2" type="MV_1_AnIn1" />
|
||||
<DO name="AnIn3" type="MV_1_AnIn1" />
|
||||
<DO name="AnIn4" type="MV_1_AnIn1" />
|
||||
<DO name="SPCSO1" type="SPC_1_SPCSO1" />
|
||||
<DO name="SPCSO2" type="SPC_2" />
|
||||
<DO name="SPCSO3" type="SPC_2" />
|
||||
<DO name="SPCSO4" type="SPC_2" />
|
||||
<DO name="Ind1" type="SPS_1_Proxy" />
|
||||
<DO name="Ind2" type="SPS_1_Proxy" />
|
||||
<DO name="Ind3" type="SPS_1_Proxy" />
|
||||
<DO name="Ind4" type="SPS_1_Proxy" />
|
||||
</LNodeType>
|
||||
|
||||
<DOType id="ENC_1_Mod" cdc="ENC">
|
||||
<DA name="stVal" bType="Enum" type="Beh" fc="ST" dchg="true" />
|
||||
<DA name="q" bType="Quality" fc="ST" qchg="true" />
|
||||
<DA name="t" bType="Timestamp" fc="ST" />
|
||||
<DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" />
|
||||
</DOType>
|
||||
|
||||
<DOType id="ENS_1_Beh" cdc="ENS">
|
||||
<DA name="stVal" bType="Enum" type="Beh" fc="ST" dchg="true" />
|
||||
<DA name="q" bType="Quality" fc="ST" qchg="true" />
|
||||
<DA name="t" bType="Timestamp" fc="ST" />
|
||||
</DOType>
|
||||
|
||||
<DOType id="ENS_2_Health" cdc="ENS">
|
||||
<DA name="stVal" bType="Enum" type="HealthKind" fc="ST" dchg="true" />
|
||||
<DA name="q" bType="Quality" fc="ST" qchg="true" />
|
||||
<DA name="t" bType="Timestamp" fc="ST" />
|
||||
</DOType>
|
||||
|
||||
<DOType id="LPL_1_NamPlt" cdc="LPL">
|
||||
<DA name="vendor" bType="VisString255" fc="DC" />
|
||||
<DA name="swRev" bType="VisString255" fc="DC" />
|
||||
<DA name="d" bType="VisString255" fc="DC" />
|
||||
<DA name="configRev" bType="VisString255" fc="DC" />
|
||||
<DA name="ldNs" bType="VisString255" fc="EX" />
|
||||
</DOType>
|
||||
|
||||
<DOType id="DPL_1_PhyNam" cdc="DPL">
|
||||
<DA name="vendor" bType="VisString255" fc="DC" />
|
||||
</DOType>
|
||||
|
||||
<DOType id="SPS_1_Proxy" cdc="SPS">
|
||||
<DA name="stVal" bType="BOOLEAN" fc="ST" dchg="true" />
|
||||
<DA name="q" bType="Quality" fc="ST" qchg="true" />
|
||||
<DA name="t" bType="Timestamp" fc="ST" />
|
||||
</DOType>
|
||||
|
||||
<DOType id="LPL_2_NamPlt" cdc="LPL">
|
||||
<DA name="vendor" bType="VisString255" fc="DC" />
|
||||
<DA name="swRev" bType="VisString255" fc="DC" />
|
||||
<DA name="d" bType="VisString255" fc="DC" />
|
||||
</DOType>
|
||||
|
||||
<DOType id="MV_1_AnIn1" cdc="MV">
|
||||
<DA name="mag" type="AnalogueValue_1" bType="Struct" fc="MX" dchg="true" />
|
||||
<DA name="q" bType="Quality" fc="MX" qchg="true" />
|
||||
<DA name="t" bType="Timestamp" fc="MX" />
|
||||
</DOType>
|
||||
|
||||
<DOType id="SPC_1_SPCSO1" cdc="SPC">
|
||||
<DA name="origin" fc="ST" type="Originator_1" bType="Struct" />
|
||||
<DA name="ctlNum" fc="ST" bType="INT8U" />
|
||||
<DA name="stVal" bType="BOOLEAN" fc="ST" dchg="true" />
|
||||
<DA name="q" bType="Quality" fc="ST" qchg="true" />
|
||||
<DA name="t" bType="Timestamp" fc="ST" />
|
||||
<DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" />
|
||||
<DA name="Oper" type="SPCOperate_1" bType="Struct" fc="CO" />
|
||||
</DOType>
|
||||
|
||||
<DOType id="SPC_2" cdc="SPC">
|
||||
<DA name="stVal" bType="BOOLEAN" fc="ST" dchg="true" />
|
||||
<DA name="q" bType="Quality" fc="ST" qchg="true" />
|
||||
<DA name="Oper" type="SPCOperate_1" bType="Struct" fc="CO" />
|
||||
<DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" />
|
||||
<DA name="t" bType="Timestamp" fc="ST" />
|
||||
</DOType>
|
||||
|
||||
<DAType id="AnalogueValue_1">
|
||||
<BDA name="f" bType="FLOAT32" />
|
||||
</DAType>
|
||||
|
||||
<DAType id="Originator_1">
|
||||
<BDA name="orCat" type="OrCat" bType="Enum" />
|
||||
<BDA name="orIdent" bType="Octet64" />
|
||||
</DAType>
|
||||
|
||||
<DAType id="SPCOperate_1">
|
||||
<BDA name="ctlVal" bType="BOOLEAN" />
|
||||
<BDA name="origin" type="Originator_1" bType="Struct" />
|
||||
<BDA name="ctlNum" bType="INT8U" />
|
||||
<BDA name="T" bType="Timestamp" />
|
||||
<BDA name="Test" bType="BOOLEAN" />
|
||||
<BDA name="Check" bType="Check" />
|
||||
</DAType>
|
||||
|
||||
<EnumType id="Beh">
|
||||
<EnumVal ord="1">on</EnumVal>
|
||||
<EnumVal ord="2">blocked</EnumVal>
|
||||
<EnumVal ord="3">test</EnumVal>
|
||||
<EnumVal ord="4">test/blocked</EnumVal>
|
||||
<EnumVal ord="5">off</EnumVal>
|
||||
</EnumType>
|
||||
|
||||
<EnumType id="HealthKind">
|
||||
<EnumVal ord="1">ok</EnumVal>
|
||||
<EnumVal ord="2">warning</EnumVal>
|
||||
<EnumVal ord="3">alarm</EnumVal>
|
||||
</EnumType>
|
||||
|
||||
<EnumType id="CtlModels">
|
||||
<EnumVal ord="0">status-only</EnumVal>
|
||||
<EnumVal ord="1">direct-with-normal-security</EnumVal>
|
||||
<EnumVal ord="2">sbo-with-normal-security</EnumVal>
|
||||
<EnumVal ord="3">direct-with-enhanced-security</EnumVal>
|
||||
<EnumVal ord="4">sbo-with-enhanced-security</EnumVal>
|
||||
</EnumType>
|
||||
|
||||
<EnumType id="OrCat">
|
||||
<EnumVal ord="0">not-supported</EnumVal>
|
||||
<EnumVal ord="1">bay-control</EnumVal>
|
||||
<EnumVal ord="2">station-control</EnumVal>
|
||||
<EnumVal ord="3">remote-control</EnumVal>
|
||||
<EnumVal ord="4">automatic-bay</EnumVal>
|
||||
<EnumVal ord="5">automatic-station</EnumVal>
|
||||
<EnumVal ord="6">automatic-remote</EnumVal>
|
||||
<EnumVal ord="7">maintenance</EnumVal>
|
||||
<EnumVal ord="8">process</EnumVal>
|
||||
</EnumType>
|
||||
|
||||
</DataTypeTemplates>
|
||||
</SCL>
|
Binary file not shown.
@ -0,0 +1,42 @@
|
||||
package com.libiec61850.scl.communication;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.w3c.dom.Node;
|
||||
|
||||
import com.libiec61850.scl.ParserUtils;
|
||||
import com.libiec61850.scl.SclParserException;
|
||||
|
||||
public class Address
|
||||
{
|
||||
Node node;
|
||||
|
||||
private List<P> addressParameters = new LinkedList<P>();
|
||||
|
||||
public Address(Node addressNode)
|
||||
throws SclParserException
|
||||
{
|
||||
node = addressNode;
|
||||
|
||||
List<Node> pNodes = ParserUtils.getChildNodesWithTag(node, "P");
|
||||
|
||||
for (Node pNode : pNodes)
|
||||
addressParameters.add(new P(pNode));
|
||||
}
|
||||
|
||||
public List<P> getAddressParameters()
|
||||
{
|
||||
return addressParameters;
|
||||
}
|
||||
|
||||
public P getAddressParameter(String type)
|
||||
{
|
||||
for (P p : addressParameters) {
|
||||
if (p.getType().equals(type))
|
||||
return p;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
package com.libiec61850.scl.communication;
|
||||
|
||||
import org.w3c.dom.Node;
|
||||
|
||||
import com.libiec61850.scl.ParserUtils;
|
||||
import com.libiec61850.scl.SclParserException;
|
||||
|
||||
public class P
|
||||
{
|
||||
private Node node;
|
||||
|
||||
private String type;
|
||||
|
||||
public P(Node pNode) throws SclParserException
|
||||
{
|
||||
node = pNode;
|
||||
|
||||
this.type = ParserUtils.parseAttribute(node, "type");
|
||||
|
||||
if (this.type == null)
|
||||
throw new SclParserException(node, "type is missing in P element!");
|
||||
}
|
||||
|
||||
public String getType()
|
||||
{
|
||||
return type;
|
||||
}
|
||||
|
||||
public String getText()
|
||||
{
|
||||
return node.getTextContent();
|
||||
}
|
||||
|
||||
public void setText(String text)
|
||||
{
|
||||
node.setTextContent(text);
|
||||
}
|
||||
}
|
@ -0,0 +1,72 @@
|
||||
package com.libiec61850.scl.model;
|
||||
|
||||
/*
|
||||
* Copyright 2013-2019 Michael Zillgith, MZ Automation GmbH
|
||||
*
|
||||
* This file is part of libIEC61850.
|
||||
*
|
||||
* libIEC61850 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* libIEC61850 is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with libIEC61850. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* See COPYING file for the complete license text.
|
||||
*/
|
||||
|
||||
import org.w3c.dom.Node;
|
||||
|
||||
import com.libiec61850.scl.ParserUtils;
|
||||
|
||||
public class ClientLN
|
||||
{
|
||||
private Node node;
|
||||
|
||||
public ClientLN(Node node)
|
||||
{
|
||||
this.node = node;
|
||||
}
|
||||
|
||||
public String getIedName()
|
||||
{
|
||||
return ParserUtils.parseAttribute(node, "iedName");
|
||||
}
|
||||
|
||||
public String getApRef()
|
||||
{
|
||||
return ParserUtils.parseAttribute(node, "apRef");
|
||||
}
|
||||
|
||||
public String getLdInst()
|
||||
{
|
||||
return ParserUtils.parseAttribute(node, "ldInst");
|
||||
}
|
||||
|
||||
public String getPrefix()
|
||||
{
|
||||
return ParserUtils.parseAttribute(node, "prefix");
|
||||
}
|
||||
|
||||
public String getLnClass()
|
||||
{
|
||||
return ParserUtils.parseAttribute(node, "lnClass");
|
||||
}
|
||||
|
||||
public String getLnInst()
|
||||
{
|
||||
return ParserUtils.parseAttribute(node, "lnInst");
|
||||
}
|
||||
|
||||
public String getDesc()
|
||||
{
|
||||
return ParserUtils.parseAttribute(node, "desc");
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue