- IED server: avoid dynamic memory allocation in control module

pull/179/head
Michael Zillgith 6 years ago
parent f0df571f42
commit 28e2acbd33

@ -984,26 +984,27 @@ ControlObject_sendCommandTerminationPositive(ControlObject* self)
if (DEBUG_IED_SERVER) if (DEBUG_IED_SERVER)
printf("IED_SERVER: send CommandTermination+: %s\n", itemId); printf("IED_SERVER: send CommandTermination+: %s\n", itemId);
char* domainId = MmsDomain_getName(self->mmsDomain);
MmsVariableAccessSpecification varSpec; MmsVariableAccessSpecification varSpec;
varSpec.itemId = itemId; varSpec.itemId = itemId;
varSpec.domainId = domainId; varSpec.domainId = MmsDomain_getName(self->mmsDomain);
LinkedList varSpecList = LinkedList_create(); struct sLinkedList _varSpecList1;
LinkedList values = LinkedList_create(); _varSpecList1.next = NULL;
struct sLinkedList _varSpecList;
_varSpecList.data = NULL;
_varSpecList.next = &_varSpecList1;
if ((varSpecList != NULL) && (values != NULL)) struct sLinkedList _values1;
{ _values1.next = NULL;
LinkedList_add(varSpecList, &varSpec); struct sLinkedList _values;
LinkedList_add(values, self->oper); _values.data = NULL;
_values.next = &_values1;
MmsServerConnection_sendInformationReportListOfVariables(self->mmsConnection, varSpecList, values, false); _varSpecList1.data = &varSpec;
_values1.data = self->oper;
LinkedList_destroyStatic(varSpecList); MmsServerConnection_sendInformationReportListOfVariables(self->mmsConnection, &_varSpecList, &_values, false);
LinkedList_destroyStatic(values);
}
} }
void void
@ -1011,6 +1012,22 @@ ControlObject_sendCommandTerminationNegative(ControlObject* self)
{ {
/* create LastApplError */ /* create LastApplError */
struct sLinkedList _varSpecList2;
_varSpecList2.next = NULL;
struct sLinkedList _varSpecList1;
_varSpecList1.next = &_varSpecList2;
struct sLinkedList _varSpecList;
_varSpecList.data = NULL;
_varSpecList.next = &_varSpecList1;
struct sLinkedList _values2;
_values2.next = NULL;
struct sLinkedList _values1;
_values1.next = &_values2;
struct sLinkedList _values;
_values.data = NULL;
_values.next = &_values1;
MmsValue lastApplErrorMemory; MmsValue lastApplErrorMemory;
MmsValue* lastApplError = &lastApplErrorMemory; MmsValue* lastApplError = &lastApplErrorMemory;
@ -1061,24 +1078,18 @@ ControlObject_sendCommandTerminationNegative(ControlObject* self)
operVarSpec.itemId = itemId; operVarSpec.itemId = itemId;
operVarSpec.domainId = domainId; operVarSpec.domainId = domainId;
/* create response */ /* create response */
if (DEBUG_IED_SERVER) if (DEBUG_IED_SERVER)
printf("IED_SERVER: send CommandTermination-: %s\n", itemId); printf("IED_SERVER: send CommandTermination-: %s\n", itemId);
LinkedList varSpecList = LinkedList_create(); _varSpecList1.data = &lastApplErrorVarSpec;
LinkedList values = LinkedList_create(); _varSpecList2.data = &operVarSpec;
LinkedList_add(varSpecList, &lastApplErrorVarSpec);
LinkedList_add(varSpecList, &operVarSpec);
LinkedList_add(values, lastApplError);
LinkedList_add(values, self->oper);
MmsServerConnection_sendInformationReportListOfVariables(self->mmsConnection, varSpecList, values, false); _values1.data = lastApplError;
_values2.data = self->oper;
LinkedList_destroyStatic(varSpecList); MmsServerConnection_sendInformationReportListOfVariables(self->mmsConnection, &_varSpecList, &_values, false);
LinkedList_destroyStatic(values);
} /* ControlObject_sendCommandTerminationNegative() */ } /* ControlObject_sendCommandTerminationNegative() */

Loading…
Cancel
Save