From 9b19e88af7fffd42147d9aa8324b061cfa40567e Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Fri, 15 Oct 2021 13:56:27 +0200 Subject: [PATCH] - fixed - Server: ctlNum and origin(status) are not updated automatically by the server when APC command is received (LIB61850-277) --- src/iec61850/server/mms_mapping/control.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/iec61850/server/mms_mapping/control.c b/src/iec61850/server/mms_mapping/control.c index 17dbf725..d6a55b56 100644 --- a/src/iec61850/server/mms_mapping/control.c +++ b/src/iec61850/server/mms_mapping/control.c @@ -1003,10 +1003,24 @@ ControlObject_initialize(ControlObject* self) self->ctlNumSt = MmsServer_getValueFromCache(mmsServer, self->mmsDomain, ctlNumName); + if (self->ctlNumSt == NULL) { + /* for APC */ + ctlNumName = StringUtils_createStringInBuffer(strBuf, 4, self->lnName, "$MX$", self->name, "$ctlNum"); + + self->ctlNumSt = MmsServer_getValueFromCache(mmsServer, self->mmsDomain, ctlNumName); + } + char* originName = StringUtils_createStringInBuffer(strBuf, 4, self->lnName, "$ST$", self->name, "$origin"); self->originSt = MmsServer_getValueFromCache(mmsServer, self->mmsDomain, originName); + if (self->originSt == NULL) { + /* for APC */ + originName = StringUtils_createStringInBuffer(strBuf, 4, self->lnName, "$MX$", self->name, "$origin"); + + self->originSt = MmsServer_getValueFromCache(mmsServer, self->mmsDomain, originName); + } + char* sboTimeoutName = StringUtils_createStringInBuffer(strBuf, 4, self->lnName, "$CF$", self->name, "$sboTimeout"); self->sboTimeout = MmsServer_getValueFromCache(mmsServer,