diff --git a/src/iec61850/inc/iec61850_model.h b/src/iec61850/inc/iec61850_model.h index 850126d..9dad53c 100644 --- a/src/iec61850/inc/iec61850_model.h +++ b/src/iec61850/inc/iec61850_model.h @@ -116,7 +116,8 @@ typedef enum { IEC61850_GENERIC_BITSTRING = 26, IEC61850_CONSTRUCTED = 27, IEC61850_ENTRY_TIME = 28, - IEC61850_PHYCOMADDR = 29 + IEC61850_PHYCOMADDR = 29, + IEC61850_CURRENCY = 30 #if (CONFIG_IEC61850_USE_COMPAT_TYPE_DECLARATIONS == 1) diff --git a/src/iec61850/server/mms_mapping/mms_mapping.c b/src/iec61850/server/mms_mapping/mms_mapping.c index 7df4ebb..7e9e5d9 100644 --- a/src/iec61850/server/mms_mapping/mms_mapping.c +++ b/src/iec61850/server/mms_mapping/mms_mapping.c @@ -229,6 +229,10 @@ createNamedVariableFromDataAttribute(DataAttribute* attribute) namedVariable->typeSpec.octetString = -64; namedVariable->type = MMS_OCTET_STRING; break; + case IEC61850_CURRENCY: /* mapping of Currency BasicType (see tissue 1047) */ + namedVariable->typeSpec.visibleString = -3; + namedVariable->type = MMS_VISIBLE_STRING; + break; case IEC61850_VISIBLE_STRING_32: namedVariable->typeSpec.visibleString = -32; namedVariable->type = MMS_VISIBLE_STRING; diff --git a/src/iec61850/server/model/config_file_parser.c b/src/iec61850/server/model/config_file_parser.c index cd034e0..c63a802 100644 --- a/src/iec61850/server/model/config_file_parser.c +++ b/src/iec61850/server/model/config_file_parser.c @@ -336,6 +336,7 @@ ConfigFileParser_createModelFromConfigFile(FileHandle fileHandle) case IEC61850_VISIBLE_STRING_65: case IEC61850_VISIBLE_STRING_64: case IEC61850_VISIBLE_STRING_32: + case IEC61850_CURRENCY: { char* stringStart = valueIndicator + 2; terminateString(stringStart, '"'); diff --git a/tools/model_generator/genconfig.jar b/tools/model_generator/genconfig.jar index 0fa5a6a..f50b47c 100644 Binary files a/tools/model_generator/genconfig.jar and b/tools/model_generator/genconfig.jar differ diff --git a/tools/model_generator/genmodel.jar b/tools/model_generator/genmodel.jar index c79ce55..aa36640 100644 Binary files a/tools/model_generator/genmodel.jar and b/tools/model_generator/genmodel.jar differ diff --git a/tools/model_generator/src/com/libiec61850/scl/model/AttributeType.java b/tools/model_generator/src/com/libiec61850/scl/model/AttributeType.java index b927e7e..0d0e1f8 100644 --- a/tools/model_generator/src/com/libiec61850/scl/model/AttributeType.java +++ b/tools/model_generator/src/com/libiec61850/scl/model/AttributeType.java @@ -55,7 +55,8 @@ public enum AttributeType { GENERIC_BITSTRING(26), CONSTRUCTED(27), ENTRY_TIME(28), - PHYCOMADDR(29); + PHYCOMADDR(29), + CURRENCY(30); private int intValue; @@ -107,6 +108,8 @@ public enum AttributeType { return QUALITY; else if (typeString.equals("Timestamp")) return TIMESTAMP; + else if (typeString.equals("Currency")) + return CURRENCY; else if (typeString.equals("VisString32")) return VISIBLE_STRING_32; else if (typeString.equals("VisString64")) 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 7ff6f70..5eeb67e 100644 --- a/tools/model_generator/src/com/libiec61850/scl/model/DataModelValue.java +++ b/tools/model_generator/src/com/libiec61850/scl/model/DataModelValue.java @@ -134,6 +134,7 @@ public class DataModelValue { case VISIBLE_STRING_65: case VISIBLE_STRING_129: case VISIBLE_STRING_255: + case CURRENCY: this.value = (Object) value; break; case CHECK: diff --git a/tools/model_generator/src/com/libiec61850/tools/DynamicModelGenerator.java b/tools/model_generator/src/com/libiec61850/tools/DynamicModelGenerator.java index c002bbd..5321094 100644 --- a/tools/model_generator/src/com/libiec61850/tools/DynamicModelGenerator.java +++ b/tools/model_generator/src/com/libiec61850/tools/DynamicModelGenerator.java @@ -376,6 +376,7 @@ public class DynamicModelGenerator { case UNICODE_STRING_255: output.print("=\"" + value.getValue()+ "\""); break; + case CURRENCY: case VISIBLE_STRING_32: case VISIBLE_STRING_64: case VISIBLE_STRING_129: diff --git a/tools/model_generator/src/com/libiec61850/tools/StaticModelGenerator.java b/tools/model_generator/src/com/libiec61850/tools/StaticModelGenerator.java index b0500a7..d7b8b9e 100644 --- a/tools/model_generator/src/com/libiec61850/tools/StaticModelGenerator.java +++ b/tools/model_generator/src/com/libiec61850/tools/StaticModelGenerator.java @@ -767,6 +767,7 @@ public class StaticModelGenerator { case VISIBLE_STRING_129: case VISIBLE_STRING_255: case VISIBLE_STRING_65: + case CURRENCY: buffer.append("MmsValue_newVisibleString(\"" + value.getValue() + "\");"); break; case FLOAT32: