From c7d0f88ce2bd195c55bd979b619cf111b921bb6c Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Sun, 8 Sep 2019 08:12:24 +0200 Subject: [PATCH] static model generator: Initialize Dbpos value from Val element in ICD/CID file (see github #163) --- .../libiec61850/scl/model/DataModelValue.java | 21 ++++++++++++++++++- .../tools/StaticModelGenerator.java | 11 ++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) 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 36cf371f..2bd18a3d 100644 --- a/tools/model_generator/src/com/libiec61850/scl/model/DataModelValue.java +++ b/tools/model_generator/src/com/libiec61850/scl/model/DataModelValue.java @@ -160,7 +160,26 @@ public class DataModelValue { System.out.println("Warning: Initialization of CHECK is unsupported!"); case CODEDENUM: this.value = null; - System.out.println("Warning: Initialization of CODEDENUM is unsupported!"); + + if (value.equals("intermediate-state")) + this.value = new Integer(0); + else if (value.equals("off")) + this.value = new Integer(1); + else if (value.equals("on")) + this.value = new Integer(2); + else if (value.equals("bad-state")) + this.value = new Integer(4); + else if (value.equals("stop")) + this.value = new Integer(0); + else if (value.equals("lower")) + this.value = new Integer(1); + else if (value.equals("higher")) + this.value = new Integer(2); + else if (value.equals("reserved")) + this.value = new Integer(4); + else + System.out.println("Warning: CODEDENUM is initialized with unsupported value " + value.toString()); + break; case QUALITY: this.value = null; diff --git a/tools/model_generator/src/com/libiec61850/tools/StaticModelGenerator.java b/tools/model_generator/src/com/libiec61850/tools/StaticModelGenerator.java index 5bc26a10..a68df455 100644 --- a/tools/model_generator/src/com/libiec61850/tools/StaticModelGenerator.java +++ b/tools/model_generator/src/com/libiec61850/tools/StaticModelGenerator.java @@ -798,6 +798,17 @@ public class StaticModelGenerator { } break; + case CODEDENUM: + { + buffer.append("MmsValue_newBitString(2);\n"); + buffer.append("MmsValue_setBitStringFromIntegerBigEndian("); + buffer.append(daName); + buffer.append(".mmsValue, "); + buffer.append(value.getValue().toString()); + buffer.append(");\n"); + } + break; + case UNICODE_STRING_255: buffer.append("MmsValue_newMmsString(\"" + value.getValue() + "\");"); break;