- IED server: For SBOes check test flag match when accepting operate (sSBOes8)

pull/331/head
Michael Zillgith 4 years ago
parent d1fd0c7e34
commit 1b2d194694

@ -1285,6 +1285,12 @@ ControlObjectClient_getLastApplError(ControlObjectClient self)
return self->lastApplError; return self->lastApplError;
} }
void
ControlObjectClient_setCtlNum(ControlObjectClient self, uint8_t ctlNum)
{
self->ctlNum = ctlNum;
}
void void
controlObjectClient_invokeCommandTerminationHandler(ControlObjectClient self) controlObjectClient_invokeCommandTerminationHandler(ControlObjectClient self)
{ {

@ -2231,6 +2231,12 @@ ControlObjectClient_enableInterlockCheck(ControlObjectClient self);
LIB61850_API DEPRECATED void LIB61850_API DEPRECATED void
ControlObjectClient_enableSynchroCheck(ControlObjectClient self); ControlObjectClient_enableSynchroCheck(ControlObjectClient self);
/**
* \deprecated Do not use (ctlNum is handled automatically by the library)! Intended for test purposes only.
*/
LIB61850_API DEPRECATED void
ControlObjectClient_setCtlNum(ControlObjectClient self, uint8_t ctlNum);
/** /**
* \brief Set the value of the interlock check flag when a control command is sent * \brief Set the value of the interlock check flag when a control command is sent
* *

@ -2144,8 +2144,6 @@ Control_writeAccessControlObject(MmsMapping* self, MmsDomain* domain, char* vari
bool testCondition = MmsValue_getBoolean(test); bool testCondition = MmsValue_getBoolean(test);
controlObject->testMode = testCondition;
if ((controlObject->ctlModel == 2) || (controlObject->ctlModel == 4)) { if ((controlObject->ctlModel == 2) || (controlObject->ctlModel == 4)) {
if (controlObject->mmsConnection != connection) { if (controlObject->mmsConnection != connection) {
indication = DATA_ACCESS_ERROR_TEMPORARILY_UNAVAILABLE; indication = DATA_ACCESS_ERROR_TEMPORARILY_UNAVAILABLE;
@ -2163,7 +2161,8 @@ Control_writeAccessControlObject(MmsMapping* self, MmsDomain* domain, char* vari
MmsValue_equals(origin, controlObject->origin) && MmsValue_equals(origin, controlObject->origin) &&
MmsValue_equals(ctlNum, controlObject->ctlNum) && MmsValue_equals(ctlNum, controlObject->ctlNum) &&
(controlObject->interlockCheck == interlockCheck) && (controlObject->interlockCheck == interlockCheck) &&
(controlObject->synchroCheck == synchroCheck) (controlObject->synchroCheck == synchroCheck) &&
(controlObject->testMode == testCondition)
) == false) ) == false)
{ {
indication = DATA_ACCESS_ERROR_TYPE_INCONSISTENT; indication = DATA_ACCESS_ERROR_TYPE_INCONSISTENT;
@ -2191,6 +2190,7 @@ Control_writeAccessControlObject(MmsMapping* self, MmsDomain* domain, char* vari
controlObject->synchroCheck = synchroCheck; controlObject->synchroCheck = synchroCheck;
controlObject->interlockCheck = interlockCheck; controlObject->interlockCheck = interlockCheck;
controlObject->mmsConnection = connection; controlObject->mmsConnection = connection;
controlObject->testMode = testCondition;
CheckHandlerResult checkResult = CONTROL_ACCEPTED; CheckHandlerResult checkResult = CONTROL_ACCEPTED;
if (controlObject->checkHandler != NULL) { /* perform operative tests */ if (controlObject->checkHandler != NULL) { /* perform operative tests */

Loading…
Cancel
Save