- 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;
}
void
ControlObjectClient_setCtlNum(ControlObjectClient self, uint8_t ctlNum)
{
self->ctlNum = ctlNum;
}
void
controlObjectClient_invokeCommandTerminationHandler(ControlObjectClient self)
{

@ -2231,6 +2231,12 @@ ControlObjectClient_enableInterlockCheck(ControlObjectClient self);
LIB61850_API DEPRECATED void
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
*

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

Loading…
Cancel
Save