- IEC 61850 server: fixed - control model - peer connection is not always available when control handlers are called (#232)

pull/239/head
Michael Zillgith 5 years ago
parent 7e4e396403
commit d42f96ee97

@ -1336,6 +1336,7 @@ Control_readAccessControlObject(MmsMapping* self, MmsDomain* domain, char* varia
/* opRcvd must not be set here! */ /* opRcvd must not be set here! */
controlObject->addCauseValue = ADD_CAUSE_UNKNOWN; controlObject->addCauseValue = ADD_CAUSE_UNKNOWN;
controlObject->mmsConnection = connection;
if (controlObject->checkHandler != NULL) { /* perform operative tests */ if (controlObject->checkHandler != NULL) { /* perform operative tests */
@ -1552,6 +1553,8 @@ Control_writeAccessControlObject(MmsMapping* self, MmsDomain* domain, char* vari
controlObject->isSelect = 1; controlObject->isSelect = 1;
controlObject->mmsConnection = connection;
checkResult = controlObject->checkHandler((ControlAction) controlObject, checkResult = controlObject->checkHandler((ControlAction) controlObject,
controlObject->checkHandlerParameter, ctlVal, testCondition, interlockCheck); controlObject->checkHandlerParameter, ctlVal, testCondition, interlockCheck);
@ -1584,6 +1587,8 @@ Control_writeAccessControlObject(MmsMapping* self, MmsDomain* domain, char* vari
ControlObject_sendLastApplError(controlObject, connection, "SBOw", 0, ControlObject_sendLastApplError(controlObject, connection, "SBOw", 0,
controlObject->addCauseValue, ctlNum, origin, true); controlObject->addCauseValue, ctlNum, origin, true);
controlObject->mmsConnection = NULL;
if (DEBUG_IED_SERVER) if (DEBUG_IED_SERVER)
printf("IED_SERVER: SBOw - select rejected by application!\n"); printf("IED_SERVER: SBOw - select rejected by application!\n");
} }
@ -1704,7 +1709,7 @@ Control_writeAccessControlObject(MmsMapping* self, MmsDomain* domain, char* vari
} }
if(checkResult == CONTROL_ACCEPTED){ if (checkResult == CONTROL_ACCEPTED) {
initiateControlTask(controlObject); initiateControlTask(controlObject);
setState(controlObject, STATE_WAIT_FOR_ACTIVATION_TIME); setState(controlObject, STATE_WAIT_FOR_ACTIVATION_TIME);
@ -1714,7 +1719,7 @@ Control_writeAccessControlObject(MmsMapping* self, MmsDomain* domain, char* vari
indication = DATA_ACCESS_ERROR_SUCCESS; indication = DATA_ACCESS_ERROR_SUCCESS;
} }
else{ else {
indication = (MmsDataAccessError) checkResult; indication = (MmsDataAccessError) checkResult;
} }
} }
@ -1733,6 +1738,7 @@ Control_writeAccessControlObject(MmsMapping* self, MmsDomain* domain, char* vari
setOpRcvd(controlObject, true); setOpRcvd(controlObject, true);
controlObject->addCauseValue = ADD_CAUSE_UNKNOWN; controlObject->addCauseValue = ADD_CAUSE_UNKNOWN;
controlObject->mmsConnection = connection;
if (controlObject->checkHandler != NULL) { /* perform operative tests */ if (controlObject->checkHandler != NULL) { /* perform operative tests */

Loading…
Cancel
Save