diff --git a/examples/iec61850_client_example_reporting/client_example_reporting.c b/examples/iec61850_client_example_reporting/client_example_reporting.c index 1c6f7a86..4c80c89f 100644 --- a/examples/iec61850_client_example_reporting/client_example_reporting.c +++ b/examples/iec61850_client_example_reporting/client_example_reporting.c @@ -33,7 +33,8 @@ reportCallbackFunction(void* parameter, ClientReport report) if (ClientReport_hasTimestamp(report)) { time_t unixTime = ClientReport_getTimestamp(report) / 1000; -#ifdef _MSC_VER +//#ifdef _MSC_VER +#ifdef WIN32 char* timeBuf = ctime(&unixTime); #else char timeBuf[30]; diff --git a/src/iec61850/server/mms_mapping/mms_mapping.c b/src/iec61850/server/mms_mapping/mms_mapping.c index 9cba233e..aa18d62f 100644 --- a/src/iec61850/server/mms_mapping/mms_mapping.c +++ b/src/iec61850/server/mms_mapping/mms_mapping.c @@ -2078,8 +2078,10 @@ MmsMapping_setConnectionIndicationHandler(MmsMapping* self, IedConnectionIndicat static bool isMemberValueRecursive(MmsValue* container, MmsValue* value) { + bool isMemberValue = false; + if (container == value) - return true; + isMemberValue = true; else { if ((MmsValue_getType(container) == MMS_STRUCTURE) || (MmsValue_getType(container) == MMS_ARRAY)) @@ -2088,14 +2090,15 @@ isMemberValueRecursive(MmsValue* container, MmsValue* value) int compCount = MmsValue_getArraySize(container); int i; for (i = 0; i < compCount; i++) { - if (isMemberValueRecursive(MmsValue_getElement(container, i), value)) - return true; + if (isMemberValueRecursive(MmsValue_getElement(container, i), value)) { + isMemberValue = true; + break; + } } - } } - return false; + return isMemberValue; } static bool diff --git a/tools/model_generator/genconfig.jar b/tools/model_generator/genconfig.jar index d2f898de..6887d633 100644 Binary files a/tools/model_generator/genconfig.jar and b/tools/model_generator/genconfig.jar differ diff --git a/tools/model_generator/src/com/libiec61850/scl/DataAttributeDefinition.java b/tools/model_generator/src/com/libiec61850/scl/DataAttributeDefinition.java index 6707194a..e554aa4e 100644 --- a/tools/model_generator/src/com/libiec61850/scl/DataAttributeDefinition.java +++ b/tools/model_generator/src/com/libiec61850/scl/DataAttributeDefinition.java @@ -109,9 +109,18 @@ public class DataAttributeDefinition { String value = elementNode.getTextContent(); - if (attributeType != AttributeType.ENUMERATED) { + if (attributeType == AttributeType.ENUMERATED) { this.value = new DataModelValue(attributeType, this.type, value); + } + else { + try { + this.value = new DataModelValue(attributeType, (SclType) null, value); + } catch (IllegalValueException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } + } } } diff --git a/tools/model_generator/src/com/libiec61850/scl/model/DataModelValue.java b/tools/model_generator/src/com/libiec61850/scl/model/DataModelValue.java index b072dc91..a0f8c613 100644 --- a/tools/model_generator/src/com/libiec61850/scl/model/DataModelValue.java +++ b/tools/model_generator/src/com/libiec61850/scl/model/DataModelValue.java @@ -40,7 +40,7 @@ public class DataModelValue { } public DataModelValue(AttributeType type, SclType sclType, String value) throws IllegalValueException { - + switch (type) { case ENUMERATED: EnumerationType enumType = (EnumerationType) sclType; diff --git a/tools/model_generator/src/com/libiec61850/tools/DynamicModelGenerator.java b/tools/model_generator/src/com/libiec61850/tools/DynamicModelGenerator.java index d2e65a56..900335cd 100644 --- a/tools/model_generator/src/com/libiec61850/tools/DynamicModelGenerator.java +++ b/tools/model_generator/src/com/libiec61850/tools/DynamicModelGenerator.java @@ -287,9 +287,9 @@ public class DynamicModelGenerator { if (value == null) { value = dataAttribute.getDefinition().getValue(); - if (value != null) - if (value.getValue() == null) - value.updateEnumOrdValue(ied.getTypeDeclarations()); +// if (value != null) +// if (value.getValue() == null) +// value.updateEnumOrdValue(ied.getTypeDeclarations()); } if (value != null) {