|
|
|
@ -393,6 +393,17 @@ ControlObject_initialize(ControlObject* self)
|
|
|
|
|
MmsValue_setVisibleString(self->sbo, controlObjectReference);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
char* stSeldName = StringUtils_createStringInBuffer(strBuf, 6, self->mmsDomain->domainName, "/", self->lnName, ".", self->name, ".stSeld");
|
|
|
|
|
|
|
|
|
|
self->stSeld = (DataAttribute*) IedModel_getModelNodeByObjectReference(self->iedServer->model, stSeldName);
|
|
|
|
|
|
|
|
|
|
if ((self->stSeld) && (self->stSeld->type != IEC61850_BOOLEAN)) {
|
|
|
|
|
self->stSeld = NULL;
|
|
|
|
|
|
|
|
|
|
if (DEBUG_IED_SERVER)
|
|
|
|
|
printf("IED_SERVER: ERROR - stSeld of wrong type!\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
self->error = MmsValue_newIntegerFromInt32(0);
|
|
|
|
|
self->addCause = MmsValue_newIntegerFromInt32(0);
|
|
|
|
|
|
|
|
|
@ -488,6 +499,14 @@ ControlObject_getMmsValue(ControlObject* self)
|
|
|
|
|
return self->mmsValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
setStSeld(ControlObject* self, bool value)
|
|
|
|
|
{
|
|
|
|
|
if (self->stSeld) {
|
|
|
|
|
IedServer_updateBooleanAttributeValue(self->iedServer, self->stSeld, value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
selectObject(ControlObject* self, uint64_t selectTime, MmsServerConnection connection)
|
|
|
|
|
{
|
|
|
|
@ -495,9 +514,10 @@ selectObject(ControlObject* self, uint64_t selectTime, MmsServerConnection conne
|
|
|
|
|
printf("IED_SERVER: control %s selected\n", self->ctlObjectName);
|
|
|
|
|
|
|
|
|
|
updateSboTimeoutValue(self);
|
|
|
|
|
self->selected = true;
|
|
|
|
|
|
|
|
|
|
self->selectTime = selectTime;
|
|
|
|
|
self->mmsConnection = connection;
|
|
|
|
|
setStSeld(self, true);
|
|
|
|
|
setState(self, STATE_READY);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -506,6 +526,8 @@ unselectObject(ControlObject* self)
|
|
|
|
|
{
|
|
|
|
|
setState(self, STATE_UNSELECTED);
|
|
|
|
|
|
|
|
|
|
setStSeld(self, false);
|
|
|
|
|
|
|
|
|
|
if (DEBUG_IED_SERVER)
|
|
|
|
|
printf("IED_SERVER: control %s unselected\n", self->ctlObjectName);
|
|
|
|
|
}
|
|
|
|
|