From 5e520f21b59132ad1ee9181c4f0f94c02f290248 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Tue, 20 Oct 2020 11:25:06 +0200 Subject: [PATCH] - IED server: added missing data set update in GoCB service tracking object --- src/iec61850/server/mms_mapping/mms_goose.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/iec61850/server/mms_mapping/mms_goose.c b/src/iec61850/server/mms_mapping/mms_goose.c index 437a0b5d..24847c63 100644 --- a/src/iec61850/server/mms_mapping/mms_goose.c +++ b/src/iec61850/server/mms_mapping/mms_goose.c @@ -156,7 +156,16 @@ copyGCBValuesToTrackingObject(MmsGooseControlBlock gc) MmsValue_setVisibleString(trkInst->goID->mmsValue, gc->goId); if (trkInst->datSet) - MmsValue_setVisibleString(trkInst->datSet->mmsValue, gc->dataSet->name); + { + char datSet[130]; + LogicalNode* ln = (LogicalNode*) gc->logicalNode; + LogicalDevice* ld = (LogicalDevice*) ln->parent; + char* iedName = gc->mmsMapping->mmsDevice->deviceName; + snprintf(datSet, 129, "%s%s/%s", iedName, ld->name, gc->dataSet->name); + datSet[129] = 0; + StringUtils_replace(datSet, '$', '.'); + MmsValue_setVisibleString(trkInst->datSet->mmsValue, datSet); + } if (trkInst->confRev) { uint32_t confRev = MmsValue_toUint32(MmsValue_getElement(gc->mmsValue, 3));