- added logs and LCBs to config file example

- fixed parser bug in config_file_parser.c
pull/6/head
Michael Zillgith 9 years ago
parent 325c3e0b7e
commit 9f96006ffb

@ -3,7 +3,10 @@ Changes to version 0.9.2
- client/server: support for MMS journals and IEC 61850 log service - client/server: support for MMS journals and IEC 61850 log service
- Abstract interface for log storage providers: logging_api.h and LogStorage class - Abstract interface for log storage providers: logging_api.h and LogStorage class
- log storage implementation using sqlite - log storage implementation using sqlite
- server: negative delete data set response is now compatible with new test procedures (TPCL 1.1)
- FileSystem API is now intended to access the complete file system. Path translation for VMD filestore is done by MMS file service implementation (removed FileSystem_setBasePath function)
- added CDC_DPL_create function - added CDC_DPL_create function
- MMS server: fixed raced condition when opening/closing connections in multi-threaded configuration.
Changes to version 0.9.1 Changes to version 0.9.1

@ -1,8 +1,3 @@
Dynamic model generator
parse data type templates ...
parse IED section ...
parse communication section ...
Found connectedAP accessPoint1 for IED simpleIO
MODEL(simpleIO){ MODEL(simpleIO){
LD(GenericIO){ LD(GenericIO){
LN(LLN0){ LN(LLN0){
@ -42,6 +37,10 @@ DE(GGIO1$MX$AnIn4);
} }
RC(EventsRCB01 Events 0 Events 1 24 111 50 1000); RC(EventsRCB01 Events 0 Events 1 24 111 50 1000);
RC(AnalogValuesRCB01 AnalogValues 0 AnalogValues 1 24 111 50 1000); RC(AnalogValuesRCB01 AnalogValues 0 AnalogValues 1 24 111 50 1000);
LC(EventLog Events GenericIO/LLN0$EventLog 19 0 0 1)
LC(GeneralLog - - 19 0 0 1)
LOG(GeneralLog)
LOG(EventLog)
GC(gcbEvents events Events 2 0 -1 -1 ){ GC(gcbEvents events Events 2 0 -1 -1 ){
PA(4 273 4096 010ccd010001); PA(4 273 4096 010ccd010001);
} }

@ -67,7 +67,19 @@
<TrgOps period="true" /> <TrgOps period="true" />
<OptFields seqNum="true" timeStamp="true" dataSet="true" reasonCode="true" entryID="true" configRef="true" /> <OptFields seqNum="true" timeStamp="true" dataSet="true" reasonCode="true" entryID="true" configRef="true" />
<RptEnabled max="1" /> <RptEnabled max="1" />
</ReportControl> </ReportControl>
<LogControl name="EventLog" datSet="Events" logName="EventLog" logEna="false">
<TrgOps dchg="true" qchg="true" />
</LogControl>
<LogControl name="GeneralLog" datSet="" logName="" logEna="false">
<TrgOps dchg="true" qchg="true" />
</LogControl>
<Log />
<Log name="EventLog" />
<GSEControl appID="events" name="gcbEvents" type="GOOSE" datSet="Events" confRev="2"/> <GSEControl appID="events" name="gcbEvents" type="GOOSE" datSet="Events" confRev="2"/>
<GSEControl appID="analog" name="gcbAnalogValues" type="GOOSE" datSet="AnalogValues" confRev="2"/> <GSEControl appID="analog" name="gcbAnalogValues" type="GOOSE" datSet="AnalogValues" confRev="2"/>
<DOI name="Mod"> <DOI name="Mod">

@ -1,281 +1,306 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<SCL xmlns="http://www.iec.ch/61850/2003/SCL"> <SCL xmlns="http://www.iec.ch/61850/2003/SCL">
<Header id="" nameStructure="IEDName"> <Header id="" nameStructure="IEDName">
</Header> </Header>
<Communication> <Communication>
<SubNetwork name="subnetwork1" type="8-MMS"> <SubNetwork name="subnetwork1" type="8-MMS">
<Text>Station bus</Text> <Text>Station bus</Text>
<BitRate unit="b/s">10</BitRate> <BitRate unit="b/s">10</BitRate>
<ConnectedAP iedName="simpleIO" apName="accessPoint1"> <ConnectedAP iedName="simpleIO" apName="accessPoint1">
<Address> <Address>
<P type="IP">10.0.0.2</P> <P type="IP">10.0.0.2</P>
<P type="IP-SUBNET">255.255.255.0</P> <P type="IP-SUBNET">255.255.255.0</P>
<P type="IP-GATEWAY">10.0.0.1</P> <P type="IP-GATEWAY">10.0.0.1</P>
<P type="OSI-TSEL">0001</P> <P type="OSI-TSEL">0001</P>
<P type="OSI-PSEL">00000001</P> <P type="OSI-PSEL">00000001</P>
<P type="OSI-SSEL">0001</P> <P type="OSI-SSEL">0001</P>
</Address> </Address>
</ConnectedAP> </ConnectedAP>
</SubNetwork> </SubNetwork>
</Communication> </Communication>
<IED name="simpleIO"> <IED name="simpleIO">
<Services> <Services>
<DynAssociation /> <DynAssociation />
<GetDirectory /> <GetDirectory />
<GetDataObjectDefinition /> <GetDataObjectDefinition />
<GetDataSetValue /> <GetDataSetValue />
<DataSetDirectory /> <DataSetDirectory />
<ReadWrite /> <ReadWrite />
<GetCBValues /> <GetCBValues />
<ConfLNs fixPrefix="true" fixLnInst="true" /> <ConfLNs fixPrefix="true" fixLnInst="true" />
<GOOSE max="5" /> <GOOSE max="5" />
<GSSE max="5" /> <GSSE max="5" />
<FileHandling /> <FileHandling />
<GSEDir /> <GSEDir />
<TimerActivatedControl /> <TimerActivatedControl />
</Services> </Services>
<AccessPoint name="accessPoint1"> <AccessPoint name="accessPoint1">
<Server> <Server>
<Authentication /> <Authentication />
<LDevice inst="GenericIO"> <LDevice inst="GenericIO">
<LN0 lnClass="LLN0" lnType="LLN01" inst=""> <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="4294967295" datSet="Events" rptID="Events1" buffered="false" intgPd="1000" bufTime="50">
<TrgOps period="true" />
<OptFields seqNum="true" timeStamp="true" dataSet="true" reasonCode="true" entryID="true" configRef="true" />
<RptEnabled max="1" />
</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" entryID="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>
<LogControl name="EventLog" datSet="Events" logName="EventLog">
<TrgOps dchg="true" qchg="true"/>
</LogControl>
<LogControl name="GeneralLog" datSet="" logName=""> <DataSet name="Events" desc="Events">
<TrgOps dchg="true" qchg="true"/> <FCDA ldInst="GenericIO" lnClass="GGIO" fc="ST" lnInst="1"
</LogControl> 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>
<Log /> <DataSet name="Measurements" desc="Measurements">
<Log name="EventLog" /> <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>
<DOI name="Mod"> <ReportControl name="EventsRCB" confRev="4294967295"
<DAI name="ctlModel"> datSet="Events" rptID="Events1" buffered="false" intgPd="1000"
<Val>status-only</Val> bufTime="50">
</DAI> <TrgOps period="true" />
</DOI> <OptFields seqNum="true" timeStamp="true" dataSet="true"
reasonCode="true" entryID="true" configRef="true" />
<DOI name="NamPlt"> <RptEnabled max="1" />
<DAI name="vendor"> </ReportControl>
<Val>MZ Automation</Val>
</DAI> <ReportControl name="EventsIndexed" indexed="true"
<DAI name="swRev"> confRev="1" datSet="Events" rptID="Events2" buffered="false"
<Val>0.7.3</Val> intgPd="1000" bufTime="50">
</DAI> <TrgOps period="true" />
<DAI name="d"> <OptFields seqNum="true" timeStamp="true" dataSet="true"
<Val>libiec61850 server example</Val> reasonCode="true" entryID="true" configRef="true" />
</DAI> <RptEnabled max="3" />
</DOI> </ReportControl>
</LN0>
<LN lnClass="LPHD" lnType="LPHD1" inst="1" prefix="" /> <ReportControl name="Measurements" indexed="true"
<LN lnClass="GGIO" lnType="GGIO1" inst="1" prefix=""> confRev="1" datSet="Measurements" rptID="Measurements" buffered="true"
<DOI name="Mod"> intgPd="1000" bufTime="50">
<DAI name="ctlModel"> <TrgOps period="false" />
<Val>status-only</Val> <OptFields seqNum="true" timeStamp="true" dataSet="true"
</DAI> reasonCode="true" entryID="true" configRef="true" />
</DOI> <RptEnabled max="3" />
<DOI name="SPCSO1"> </ReportControl>
<DAI name="ctlModel">
<Val>direct-with-normal-security</Val> <LogControl name="EventLog" datSet="Events" logName="EventLog">
</DAI> <TrgOps dchg="true" qchg="true" />
</DOI> </LogControl>
<DOI name="SPCSO2">
<DAI name="ctlModel"> <LogControl name="GeneralLog" datSet="" logName="">
<Val>direct-with-normal-security</Val> <TrgOps dchg="true" qchg="true" />
</DAI> </LogControl>
</DOI>
<DOI name="SPCSO3">
<DAI name="ctlModel"> <Log />
<Val>direct-with-normal-security</Val> <Log name="EventLog" />
</DAI>
</DOI> <DOI name="Mod">
<DOI name="SPCSO4"> <DAI name="ctlModel">
<DAI name="ctlModel"> <Val>status-only</Val>
<Val>direct-with-normal-security</Val> </DAI>
</DAI> </DOI>
</DOI>
</LN> <DOI name="NamPlt">
</LDevice> <DAI name="vendor">
</Server> <Val>MZ Automation</Val>
</AccessPoint> </DAI>
</IED> <DAI name="swRev">
<DataTypeTemplates> <Val>0.7.3</Val>
<LNodeType id="LLN01" lnClass="LLN0"> </DAI>
<DO name="Mod" type="INC_1_Mod" /> <DAI name="d">
<DO name="Beh" type="INS_1_Beh" /> <Val>libiec61850 server example</Val>
<DO name="Health" type="INS_1_Beh" /> </DAI>
<DO name="NamPlt" type="LPL_1_NamPlt" /> </DOI>
</LNodeType> </LN0>
<LNodeType id="LPHD1" lnClass="LPHD"> <LN lnClass="LPHD" lnType="LPHD1" inst="1" prefix="" />
<DO name="PhyNam" type="DPL_1_PhyNam" /> <LN lnClass="GGIO" lnType="GGIO1" inst="1" prefix="">
<DO name="PhyHealth" type="INS_1_Beh" /> <DOI name="Mod">
<DO name="Proxy" type="SPS_1_Proxy" /> <DAI name="ctlModel">
</LNodeType> <Val>status-only</Val>
<LNodeType id="GGIO1" lnClass="GGIO"> </DAI>
<DO name="Mod" type="INC_2_Mod" /> </DOI>
<DO name="Beh" type="INS_1_Beh" /> <DOI name="SPCSO1">
<DO name="Health" type="INS_1_Beh" /> <DAI name="ctlModel">
<DO name="NamPlt" type="LPL_2_NamPlt" /> <Val>direct-with-normal-security</Val>
<DO name="AnIn1" type="MV_1_AnIn1" /> </DAI>
<DO name="AnIn2" type="MV_1_AnIn1" /> </DOI>
<DO name="AnIn3" type="MV_1_AnIn1" /> <DOI name="SPCSO2">
<DO name="AnIn4" type="MV_1_AnIn1" /> <DAI name="ctlModel">
<DO name="SPCSO1" type="SPC_2_SPCSO1" /> <Val>direct-with-normal-security</Val>
<DO name="SPCSO2" type="SPC_1_SPCSO2" /> </DAI>
<DO name="SPCSO3" type="SPC_1_SPCSO3" /> </DOI>
<DO name="SPCSO4" type="SPC_1_SPCSO1" /> <DOI name="SPCSO3">
<DO name="Ind1" type="SPS_1_Proxy" /> <DAI name="ctlModel">
<DO name="Ind2" type="SPS_1_Proxy" /> <Val>direct-with-normal-security</Val>
<DO name="Ind3" type="SPS_1_Proxy" /> </DAI>
<DO name="Ind4" type="SPS_1_Proxy" /> </DOI>
</LNodeType> <DOI name="SPCSO4">
<DOType id="INC_1_Mod" cdc="INC"> <DAI name="ctlModel">
<DA name="stVal" bType="INT32" fc="ST" dchg="true" /> <Val>direct-with-normal-security</Val>
<DA name="q" bType="Quality" fc="ST" qchg="true" /> </DAI>
<DA name="t" bType="Timestamp" fc="ST" /> </DOI>
<DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" /> </LN>
</DOType> </LDevice>
<DOType id="INS_1_Beh" cdc="INS"> </Server>
<DA name="stVal" bType="INT32" fc="ST" dchg="true" /> </AccessPoint>
<DA name="q" bType="Quality" fc="ST" qchg="true" /> </IED>
<DA name="t" bType="Timestamp" fc="ST" /> <DataTypeTemplates>
</DOType> <LNodeType id="LLN01" lnClass="LLN0">
<DOType id="LPL_1_NamPlt" cdc="LPL"> <DO name="Mod" type="INC_1_Mod" />
<DA name="vendor" bType="VisString255" fc="DC" /> <DO name="Beh" type="INS_1_Beh" />
<DA name="swRev" bType="VisString255" fc="DC" /> <DO name="Health" type="INS_1_Beh" />
<DA name="d" bType="VisString255" fc="DC" /> <DO name="NamPlt" type="LPL_1_NamPlt" />
<DA name="configRev" bType="VisString255" fc="DC" /> </LNodeType>
<DA name="ldNs" bType="VisString255" fc="EX" /> <LNodeType id="LPHD1" lnClass="LPHD">
</DOType> <DO name="PhyNam" type="DPL_1_PhyNam" />
<DOType id="DPL_1_PhyNam" cdc="DPL"> <DO name="PhyHealth" type="INS_1_Beh" />
<DA name="vendor" bType="VisString255" fc="DC" /> <DO name="Proxy" type="SPS_1_Proxy" />
</DOType> </LNodeType>
<DOType id="SPS_1_Proxy" cdc="SPS"> <LNodeType id="GGIO1" lnClass="GGIO">
<DA name="stVal" bType="BOOLEAN" fc="ST" dchg="true" /> <DO name="Mod" type="INC_2_Mod" />
<DA name="q" bType="Quality" fc="ST" qchg="true" /> <DO name="Beh" type="INS_1_Beh" />
<DA name="t" bType="Timestamp" fc="ST" /> <DO name="Health" type="INS_1_Beh" />
</DOType> <DO name="NamPlt" type="LPL_2_NamPlt" />
<DOType id="LPL_2_NamPlt" cdc="LPL"> <DO name="AnIn1" type="MV_1_AnIn1" />
<DA name="vendor" bType="VisString255" fc="DC" /> <DO name="AnIn2" type="MV_1_AnIn1" />
<DA name="swRev" bType="VisString255" fc="DC" /> <DO name="AnIn3" type="MV_1_AnIn1" />
<DA name="d" bType="VisString255" fc="DC" /> <DO name="AnIn4" type="MV_1_AnIn1" />
</DOType> <DO name="SPCSO1" type="SPC_2_SPCSO1" />
<DOType id="MV_1_AnIn1" cdc="MV"> <DO name="SPCSO2" type="SPC_1_SPCSO2" />
<DA name="mag" type="AnalogueValue_1" bType="Struct" fc="MX" dchg="true" /> <DO name="SPCSO3" type="SPC_1_SPCSO3" />
<DA name="q" bType="Quality" fc="MX" qchg="true" /> <DO name="SPCSO4" type="SPC_1_SPCSO1" />
<DA name="t" bType="Timestamp" fc="MX" /> <DO name="Ind1" type="SPS_1_Proxy" />
</DOType> <DO name="Ind2" type="SPS_1_Proxy" />
<DOType id="SPC_1_SPCSO1" cdc="SPC"> <DO name="Ind3" type="SPS_1_Proxy" />
<DA name="stVal" bType="BOOLEAN" fc="ST" dchg="true" /> <DO name="Ind4" type="SPS_1_Proxy" />
<DA name="q" bType="Quality" fc="ST" qchg="true" /> </LNodeType>
<DA name="Oper" type="SPCOperate_1" bType="Struct" fc="CO" /> <DOType id="INC_1_Mod" cdc="INC">
<DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" /> <DA name="stVal" bType="INT32" fc="ST" dchg="true" />
<DA name="t" bType="Timestamp" fc="ST" /> <DA name="q" bType="Quality" fc="ST" qchg="true" />
</DOType> <DA name="t" bType="Timestamp" fc="ST" />
<DOType id="INC_2_Mod" cdc="INC"> <DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" />
<DA name="q" bType="Quality" fc="ST" qchg="true" /> </DOType>
<DA name="t" bType="Timestamp" fc="ST" /> <DOType id="INS_1_Beh" cdc="INS">
<DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" /> <DA name="stVal" bType="INT32" fc="ST" dchg="true" />
</DOType> <DA name="q" bType="Quality" fc="ST" qchg="true" />
<DOType id="SPC_2_SPCSO1" cdc="SPC"> <DA name="t" bType="Timestamp" fc="ST" />
<DA name="stVal" bType="BOOLEAN" fc="ST" dchg="true" /> </DOType>
<DA name="q" bType="Quality" fc="ST" qchg="true" /> <DOType id="LPL_1_NamPlt" cdc="LPL">
<DA name="Oper" type="SPCOperate_1" bType="Struct" fc="CO" /> <DA name="vendor" bType="VisString255" fc="DC" />
<DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" /> <DA name="swRev" bType="VisString255" fc="DC" />
<DA name="t" bType="Timestamp" fc="ST" /> <DA name="d" bType="VisString255" fc="DC" />
</DOType> <DA name="configRev" bType="VisString255" fc="DC" />
<DOType id="SPC_1_SPCSO2" cdc="SPC"> <DA name="ldNs" bType="VisString255" fc="EX" />
<DA name="stVal" bType="BOOLEAN" fc="ST" dchg="true" /> </DOType>
<DA name="q" bType="Quality" fc="ST" qchg="true" /> <DOType id="DPL_1_PhyNam" cdc="DPL">
<DA name="Oper" type="SPCOperate_1" bType="Struct" fc="CO" /> <DA name="vendor" bType="VisString255" fc="DC" />
<DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" /> </DOType>
<DA name="t" bType="Timestamp" fc="ST" /> <DOType id="SPS_1_Proxy" cdc="SPS">
</DOType> <DA name="stVal" bType="BOOLEAN" fc="ST" dchg="true" />
<DOType id="SPC_1_SPCSO3" cdc="SPC"> <DA name="q" bType="Quality" fc="ST" qchg="true" />
<DA name="stVal" bType="BOOLEAN" fc="ST" dchg="true" /> <DA name="t" bType="Timestamp" fc="ST" />
<DA name="q" bType="Quality" fc="ST" qchg="true" /> </DOType>
<DA name="Oper" type="SPCOperate_1" bType="Struct" fc="CO" /> <DOType id="LPL_2_NamPlt" cdc="LPL">
<DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" /> <DA name="vendor" bType="VisString255" fc="DC" />
<DA name="t" bType="Timestamp" fc="ST" /> <DA name="swRev" bType="VisString255" fc="DC" />
</DOType> <DA name="d" bType="VisString255" fc="DC" />
<DAType id="AnalogueValue_1"> </DOType>
<BDA name="f" bType="FLOAT32" /> <DOType id="MV_1_AnIn1" cdc="MV">
</DAType> <DA name="mag" type="AnalogueValue_1" bType="Struct" fc="MX" dchg="true" />
<DAType id="Originator_1"> <DA name="q" bType="Quality" fc="MX" qchg="true" />
<BDA name="orCat" type="OrCat" bType="Enum" /> <DA name="t" bType="Timestamp" fc="MX" />
<BDA name="orIdent" bType="Octet64" /> </DOType>
</DAType> <DOType id="SPC_1_SPCSO1" cdc="SPC">
<DAType id="SPCOperate_1"> <DA name="stVal" bType="BOOLEAN" fc="ST" dchg="true" />
<BDA name="ctlVal" bType="BOOLEAN" /> <DA name="q" bType="Quality" fc="ST" qchg="true" />
<BDA name="origin" type="Originator_1" bType="Struct" /> <DA name="Oper" type="SPCOperate_1" bType="Struct" fc="CO" />
<BDA name="ctlNum" bType="INT8U" /> <DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" />
<BDA name="T" bType="Timestamp" /> <DA name="t" bType="Timestamp" fc="ST" />
<BDA name="Test" bType="BOOLEAN" /> </DOType>
<BDA name="Check" bType="Check" /> <DOType id="INC_2_Mod" cdc="INC">
</DAType> <DA name="q" bType="Quality" fc="ST" qchg="true" />
<EnumType id="CtlModels"> <DA name="t" bType="Timestamp" fc="ST" />
<EnumVal ord="0">status-only</EnumVal> <DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" />
<EnumVal ord="1">direct-with-normal-security</EnumVal> </DOType>
<EnumVal ord="2">sbo-with-normal-security</EnumVal> <DOType id="SPC_2_SPCSO1" cdc="SPC">
<EnumVal ord="3">direct-with-enhanced-security</EnumVal> <DA name="stVal" bType="BOOLEAN" fc="ST" dchg="true" />
<EnumVal ord="4">sbo-with-enhanced-security</EnumVal> <DA name="q" bType="Quality" fc="ST" qchg="true" />
</EnumType> <DA name="Oper" type="SPCOperate_1" bType="Struct" fc="CO" />
<EnumType id="OrCat"> <DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" />
<EnumVal ord="0">not-supported</EnumVal> <DA name="t" bType="Timestamp" fc="ST" />
<EnumVal ord="1">bay-control</EnumVal> </DOType>
<EnumVal ord="2">station-control</EnumVal> <DOType id="SPC_1_SPCSO2" cdc="SPC">
<EnumVal ord="3">remote-control</EnumVal> <DA name="stVal" bType="BOOLEAN" fc="ST" dchg="true" />
<EnumVal ord="4">automatic-bay</EnumVal> <DA name="q" bType="Quality" fc="ST" qchg="true" />
<EnumVal ord="5">automatic-station</EnumVal> <DA name="Oper" type="SPCOperate_1" bType="Struct" fc="CO" />
<EnumVal ord="6">automatic-remote</EnumVal> <DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" />
<EnumVal ord="7">maintenance</EnumVal> <DA name="t" bType="Timestamp" fc="ST" />
<EnumVal ord="8">process</EnumVal> </DOType>
</EnumType> <DOType id="SPC_1_SPCSO3" cdc="SPC">
</DataTypeTemplates> <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="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> </SCL>

@ -241,6 +241,10 @@ ConfigFileParser_createModelFromConfigFile(FileHandle fileHandle)
if (matchedItems < 1) goto exit_error; if (matchedItems < 1) goto exit_error;
/* remove trailing ')' character */
int nameLen = strlen(nameString);
nameString[nameLen - 1] = 0;
Log_create(nameString, currentLN); Log_create(nameString, currentLN);
} }
else if (StringUtils_startsWith((char*) lineBuffer, "GC")) { else if (StringUtils_startsWith((char*) lineBuffer, "GC")) {

Loading…
Cancel
Save