diff --git a/dotnet/server1/Program.cs b/dotnet/server1/Program.cs index 9a5cc89b..d41cff1c 100644 --- a/dotnet/server1/Program.cs +++ b/dotnet/server1/Program.cs @@ -2,6 +2,9 @@ using IEC61850.Server; using IEC61850.Common; using System.Threading; +using System.Net; +using static IEC61850.Server.IedServer; +using System.Collections.Generic; namespace server1 { @@ -95,6 +98,26 @@ namespace server1 }, null); + void ConnectionCallBack(IedServer server, ClientConnection clientConnection, bool connected, object parameter) + { + string allowedIp = parameter as string; + string ipAddress = clientConnection.GetPeerAddress(); + if (allowedIp == ipAddress) + { + + } + else + { + + } + + + } + + var connectionCallBack = new ConnectionIndicationHandler(ConnectionCallBack); + + iedServer.SetConnectionIndicationHandler(connectionCallBack, "127.0.0.2"); + iedServer.Start(102); if (iedServer.IsRunning()) diff --git a/tools/model_generator_dotnet/SCLParser/src/DynamicModelGenerator.cs b/tools/model_generator_dotnet/SCLParser/src/DynamicModelGenerator.cs index 388a78ee..48fa20e7 100644 --- a/tools/model_generator_dotnet/SCLParser/src/DynamicModelGenerator.cs +++ b/tools/model_generator_dotnet/SCLParser/src/DynamicModelGenerator.cs @@ -232,7 +232,6 @@ namespace IEC61850.SCL output.Write(smv.SclSMVControl.SmpRate + " "); else output.Write("0 "); - //output.Write(smv.SclSMVControl.SmpRate + " "); if (smv.SclSMVControl.SclSmvOpts != null) output.Write(smv.SclSMVControl.SclSmvOpts.GetIntValue()); @@ -423,90 +422,7 @@ namespace IEC61850.SCL } } - - //private void printDataAttributeValue(StreamWriter output, DataAttribute dataAttribute, bool isTransient) - //{ - // if (dataAttribute.AttributeType != AttributeType.CONSTRUCTED) - // { - // SclVal value = dataAttribute.Definition.GetVal(); - - // /* if no value is given use default value for type if present */ - // if (value == null) - // { - // value = dataAttribute.Definition.GetVal(); - - // //if (value != null) - // // if (value.Value == null) - // // value.updateEnumOrdValue(ied.getTypeDeclarations()); - // } - - // if (value != null) - // { - - // switch (dataAttribute.AttributeType) - // { - // case AttributeType.ENUMERATED: - // case AttributeType.INT8: - // case AttributeType.INT16: - // case AttributeType.INT32: - // case AttributeType.INT64: - // output.Write("=" + value.Value()); - // break; - // case AttributeType.INT8U: - // case AttributeType.INT16U: - // case AttributeType.INT24U: - // case AttributeType.INT32U: - // output.Write("=" + value.getLongValue()); - // break; - // case AttributeType.BOOLEAN: - // { - // Boolean boolVal = (Boolean)value.getValue(); - - // if (boolVal.booleanValue()) - // output.print("=1"); - // } - // break; - // case AttributeType.UNICODE_STRING_255: - // output.print("=\"" + value.getValue() + "\""); - // break; - // case AttributeType.CURRENCY: - // case AttributeType.VISIBLE_STRING_32: - // case AttributeType.VISIBLE_STRING_64: - // case AttributeType.VISIBLE_STRING_129: - // case AttributeType.VISIBLE_STRING_255: - // case AttributeType.VISIBLE_STRING_65: - // output.Write("=\"" + value.getValue() + "\""); - // break; - // case AttributeType.FLOAT32: - // case AttributeType.FLOAT64: - // output.Write("=" + value.getValue()); - // break; - // case AttributeType.TIMESTAMP: - // case AttributeType.ENTRY_TIME: - // output.Write("=" + value.getLongValue()); - // break; - - // default: - // System.out.println("Unknown default value for " + dataAttribute.getName() + " type: " + dataAttribute.getType()); - // break; - // } - - // } - - // output.Write(";"); - // } - // else - // { - // output.Write("{"); - - // foreach (DataAttribute subDataAttribute in dataAttribute.subDataAttributes) - // { - // ExportDataAttribute(output, subDataAttribute, isTransient); - // } - - // output.Write("}"); - // } - //} + SclDAI getDAI(object parent, string name) { if (parent == null) @@ -523,7 +439,6 @@ namespace IEC61850.SCL DataObject findDOParent(DataAttribute dataAttribute) { DataObject parentObject = null; - //DataObjectOrAttribute obj = null; while(!(dataAttribute.Parent is DataObject)) { @@ -540,7 +455,6 @@ namespace IEC61850.SCL LogicalNode findLNParent(DataObject dataObject) { LogicalNode parentObject = null; - //DataObjectOrAttribute obj = null; while (!(dataObject.Parent is LogicalNode)) { @@ -565,120 +479,6 @@ namespace IEC61850.SCL return null; } - //private void SetPredefindedValuesForDAI(LogicalNode ln, DataAttribute dataAttribute, DataObject dataObject) - //{ - // if (dai.Name != null) - // { - - //} - - //private void SetPredefinedValuesForSDI(LogicalNode ln, string path, SclSDI sclSdi, SclDOType doType, SclDAType daType, SclDataTypeTemplates types, DataAttribute dataAttribute) - //{ - // if (sclSdi.Name != null) - // { - // string extendedPath = path + "." + sclSdi.Name; - - // foreach (SclDAI dai in sclSdi.SclDAIs) - // { - // if (doType != null) - // { - // SclDataAttributeDefinition sclDa = GetDA(dai.Name, doType); - - // if (sclDa != null) - // { - // DataAttributeType bType = (DataAttributeType)sclDa.AttributeType; - - // SetPredefindedValuesForDAI(ln, extendedPath, dai, bType, sclDa.Type, types); - // } - // else - // { - // logMessage(IedModelFactoryLogLevel.ERROR, "SCL: DA for name " + dai.Name + " not found"); - // } - // } - // else if (daType != null) - // { - // SclDataAttributeDefinition sclBda = daType.GetBDA(dai.Name); - - // if (sclBda != null) - // { - // DataAttributeType bType = (DataAttributeType)sclBda.AttributeType; - - // SetPredefindedValuesForDAI(ln, extendedPath, dai, bType, sclBda.Type, types); - // } - - // } - // } - - // foreach (SclSDI sdi in sclSdi.SclSDIs) - // { - // if (doType != null) - // { - // SclDataAttributeDefinition da = doType.GetDA(sdi.Name, dataAttribute); - - // if (da != null) - // { - // SclDAType subDaType = types.GetDAType(da.Type); - - // if (subDaType != null) - // { - // SetPredefinedValuesForSDI(ln, extendedPath, sdi, null, subDaType, types); - // } - // } - // else - // { - // SclDataObjectDefinition sdo = doType.GetSDO(sdi.Name); - - // if (sdo != null) - // { - // SclDOType subDoType = types.GetDOType(sdo.Type); - - // if (subDoType != null) - // { - // SetPredefinedValuesForSDI(ln, extendedPath, sdi, subDoType, null, types); - // } - - // } - - // } - // } - // else if (daType != null) - // { - // SclDataAttributeDefinition bda = daType.GetBDA(sdi.Name); - - // if (bda != null) - // { - // SclDAType subDaType = types.GetDAType(bda.Type); - - // if (subDaType != null) - // { - // SetPredefinedValuesForSDI(ln, extendedPath, sdi, null, subDaType, types); - // } - - // } - - // } - // } - // } - //} - - - - //object findValue(DataAttribute dataAttribute) - //{ - // object value = null; - - // if(dataAttribute.Parent is DataAttribute dataAttribute1) - // { - // SclDAI sclDAI = getDAI(dataAttribute1.Parent, dataAttribute.Name); - - - // SclSDO sclSDOI = null; - // sclSDOI. - // } - - // return value; - //} - SclDAI getDAIInternal(SclSDI sclSDI, DataAttribute dataAttribute) { SclDAI returnValue = null; @@ -888,12 +688,8 @@ namespace IEC61850.SCL if (dataAttribute.AttributeType != AttributeType.CONSTRUCTED) { - //if (value != null) - //{ - + DataObject dataObject = findDOParent(dataAttribute); - //DataObject dataObject = dataAttribute.Parent as DataObject; - //LogicalNode logicalNode = dataObject.Parent as LogicalNode; LogicalNode logicalNode = findLNParent(dataObject); SclDOI sclDOI = logicalNode.SclElement.DOIs.Find(x => x.Name == dataObject.Name); @@ -913,7 +709,7 @@ namespace IEC61850.SCL return; } - //string value = sclDAI.Val; + string value = obValue; if (value != null) @@ -983,7 +779,6 @@ namespace IEC61850.SCL } - //} } output.WriteLine(";"); @@ -1048,82 +843,6 @@ namespace IEC61850.SCL printDataAttributes(output, dataAttribute, isTransient); } - - - - - //if (value != null) - //{ - // switch (dataAttribute.AttributeType) - // { - // case AttributeType.ENUMERATED: - // string EnumType = dataAttribute.Definition.Type; - // SclEnumType sclEnumType; - // if (EnumType != null) - // { - // sclEnumType = sclDocument.DataTypeTemplates.GetEnumType(EnumType); - // if (sclEnumType != null) - // { - // SclEnumVal sclEnumVal = sclEnumType.EnumValues.Find(x => x.SymbolicName == value.Value); - // output.Write("=" + sclEnumVal.Ord); - // } - // } - - // break; - - // case AttributeType.INT8: - // case AttributeType.INT16: - // case AttributeType.INT32: - // case AttributeType.INT64: - // output.Write("=" + value.Value); - // break; - // case AttributeType.INT8U: - // case AttributeType.INT16U: - // case AttributeType.INT24U: - // case AttributeType.INT32U: - // output.Write("=" + value.Value); - // break; - - // case AttributeType.BOOLEAN: - // if (value.Value == "true") - // output.Write("=1"); - // else - // output.Write("=0"); - // break; - - // case AttributeType.UNICODE_STRING_255: - // output.Write("=\"" + value.Value + "\""); - // break; - - // case AttributeType.CURRENCY: - // case AttributeType.VISIBLE_STRING_32: - // case AttributeType.VISIBLE_STRING_64: - // case AttributeType.VISIBLE_STRING_129: - // case AttributeType.VISIBLE_STRING_255: - // case AttributeType.VISIBLE_STRING_65: - // output.Write("=\"" + value.Value + "\""); - // break; - - // case AttributeType.OCTET_STRING_64: - // output.Write("=\"" + value.Value + "\""); - // break; - - // case AttributeType.FLOAT32: - // case AttributeType.FLOAT64: - // output.Write("=" + value.Value); - // break; - - // default: - // Console.WriteLine("Unknown default value for " + dataAttribute.Name + " type: " + dataAttribute.AttributeType); - // break; - // } - - //} - - //output.WriteLine(";"); - //} - - } private static String toMmsString(String iecString) @@ -1168,9 +887,7 @@ namespace IEC61850.SCL string arrayIndexStr = mmsVariableName.Substring(arrayStart + 1, arrayEnd); arrayIndex = int.Parse(arrayIndexStr); - //if (arrayIndex < 0) - // throw new SclParserException("Array index out of range in data set entry definition"); - + string componentNamePart = mmsVariableName.Substring(arrayEnd + 1); if ((componentNamePart != null) && (componentNamePart.Length > 0))