From 53d8a2f71543f8522e73d5c413b95194b9de7a22 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Tue, 10 Nov 2020 16:02:44 +0100 Subject: [PATCH] - IED server: changed types TrkOps and OptFlds to variable length bit strings --- src/iec61850/server/mms_mapping/mms_mapping.c | 4 ++-- src/iec61850/server/model/config_file_parser.c | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/iec61850/server/mms_mapping/mms_mapping.c b/src/iec61850/server/mms_mapping/mms_mapping.c index 940b661f..4c9b65da 100644 --- a/src/iec61850/server/mms_mapping/mms_mapping.c +++ b/src/iec61850/server/mms_mapping/mms_mapping.c @@ -268,11 +268,11 @@ createNamedVariableFromDataAttribute(DataAttribute* attribute) MmsMapping_createPhyComAddrStructure(namedVariable); break; case IEC61850_OPTFLDS: - namedVariable->typeSpec.bitString = 10; + namedVariable->typeSpec.bitString = -10; namedVariable->type = MMS_BIT_STRING; break; case IEC61850_TRGOPS: - namedVariable->typeSpec.bitString = 6; + namedVariable->typeSpec.bitString = -6; namedVariable->type = MMS_BIT_STRING; break; diff --git a/src/iec61850/server/model/config_file_parser.c b/src/iec61850/server/model/config_file_parser.c index a219cf01..a55cab2e 100644 --- a/src/iec61850/server/model/config_file_parser.c +++ b/src/iec61850/server/model/config_file_parser.c @@ -419,11 +419,19 @@ ConfigFileParser_createModelFromConfigFile(FileHandle fileHandle) break; case IEC61850_OPTFLDS: + { + int value; + if (sscanf(valueIndicator + 1, "%i", &value) != 1) goto exit_error; + dataAttribute->mmsValue = MmsValue_newBitString(-10); + MmsValue_setBitStringFromIntegerBigEndian(dataAttribute->mmsValue, value); + } + break; + case IEC61850_TRGOPS: { int value; if (sscanf(valueIndicator + 1, "%i", &value) != 1) goto exit_error; - dataAttribute->mmsValue = MmsValue_newBitString(2); + dataAttribute->mmsValue = MmsValue_newBitString(-6); MmsValue_setBitStringFromIntegerBigEndian(dataAttribute->mmsValue, value); } break;