- some code cleanup

pull/476/head
Michael Zillgith 2 years ago
parent 87ba6b0514
commit 37453fd3c1

@ -1,7 +1,7 @@
/* /*
* dynamic_model.c * dynamic_model.c
* *
* Copyright 2014-2022 Michael Zillgith * Copyright 2014-2023 Michael Zillgith
* *
* This file is part of libIEC61850. * This file is part of libIEC61850.
* *
@ -202,12 +202,15 @@ LogicalDevice_create(const char* name, IedModel* parent)
{ {
LogicalDevice* self = (LogicalDevice*) GLOBAL_CALLOC(1, sizeof(LogicalDevice)); LogicalDevice* self = (LogicalDevice*) GLOBAL_CALLOC(1, sizeof(LogicalDevice));
self->name = StringUtils_copyString(name); if (self)
self->modelType = LogicalDeviceModelType; {
self->parent = (ModelNode*) parent; self->name = StringUtils_copyString(name);
self->sibling = NULL; self->modelType = LogicalDeviceModelType;
self->parent = (ModelNode*) parent;
self->sibling = NULL;
IedModel_addLogicalDevice(parent, self); IedModel_addLogicalDevice(parent, self);
}
return self; return self;
} }
@ -268,7 +271,6 @@ LogicalNode_getLastDataObject(LogicalNode* self)
} }
return lastNode; return lastNode;
} }
static void static void
@ -296,11 +298,14 @@ Log_create(const char* name, LogicalNode* parent)
{ {
Log* self = (Log*) GLOBAL_MALLOC(sizeof(Log)); Log* self = (Log*) GLOBAL_MALLOC(sizeof(Log));
self->name = StringUtils_copyString(name); if (self)
self->parent = parent; {
self->sibling = NULL; self->name = StringUtils_copyString(name);
self->parent = parent;
self->sibling = NULL;
LogicalNode_addLog(parent, self); LogicalNode_addLog(parent, self);
}
return self; return self;
} }
@ -319,26 +324,29 @@ LogControlBlock_create(const char* name, LogicalNode* parent, const char* dataSe
{ {
LogControlBlock* self = (LogControlBlock*) GLOBAL_MALLOC(sizeof(LogControlBlock)); LogControlBlock* self = (LogControlBlock*) GLOBAL_MALLOC(sizeof(LogControlBlock));
self->name = StringUtils_copyString(name); if (self)
self->parent = parent; {
self->sibling = NULL; self->name = StringUtils_copyString(name);
self->parent = parent;
self->sibling = NULL;
if (dataSetName) if (dataSetName)
self->dataSetName = StringUtils_copyString(dataSetName); self->dataSetName = StringUtils_copyString(dataSetName);
else else
self->dataSetName = NULL; self->dataSetName = NULL;
if (logRef) if (logRef)
self->logRef = StringUtils_copyString(logRef); self->logRef = StringUtils_copyString(logRef);
else else
self->logRef = NULL; self->logRef = NULL;
self->trgOps = trgOps; self->trgOps = trgOps;
self->intPeriod = intPeriod; self->intPeriod = intPeriod;
self->logEna = logEna; self->logEna = logEna;
self->reasonCode = reasonCode; self->reasonCode = reasonCode;
LogicalNode_addLogControlBlock(parent, self); LogicalNode_addLogControlBlock(parent, self);
}
return self; return self;
} }
@ -357,30 +365,33 @@ ReportControlBlock_create(const char* name, LogicalNode* parent, const char* rpt
{ {
ReportControlBlock* self = (ReportControlBlock*) GLOBAL_MALLOC(sizeof(ReportControlBlock)); ReportControlBlock* self = (ReportControlBlock*) GLOBAL_MALLOC(sizeof(ReportControlBlock));
self->name = StringUtils_copyString(name); if (self)
self->parent = parent; {
self->name = StringUtils_copyString(name);
self->parent = parent;
if (rptId) if (rptId)
self->rptId = StringUtils_copyString(rptId); self->rptId = StringUtils_copyString(rptId);
else else
self->rptId = NULL; self->rptId = NULL;
self->buffered = isBuffered; self->buffered = isBuffered;
if (dataSetName) if (dataSetName)
self->dataSetName = StringUtils_copyString(dataSetName); self->dataSetName = StringUtils_copyString(dataSetName);
else else
self->dataSetName = NULL; self->dataSetName = NULL;
self->confRef = confRef; self->confRef = confRef;
self->trgOps = trgOps; self->trgOps = trgOps;
self->options = options; self->options = options;
self->bufferTime = bufTm; self->bufferTime = bufTm;
self->intPeriod = intgPd; self->intPeriod = intgPd;
self->sibling = NULL; self->sibling = NULL;
self->clientReservation[0] = 0; /* no pre-configured client */ self->clientReservation[0] = 0; /* no pre-configured client */
LogicalNode_addReportControlBlock(parent, self); LogicalNode_addReportControlBlock(parent, self);
}
return self; return self;
} }
@ -436,13 +447,16 @@ SettingGroupControlBlock_create(LogicalNode* parent, uint8_t actSG, uint8_t numO
SettingGroupControlBlock* self = (SettingGroupControlBlock*) GLOBAL_MALLOC(sizeof(SettingGroupControlBlock)); SettingGroupControlBlock* self = (SettingGroupControlBlock*) GLOBAL_MALLOC(sizeof(SettingGroupControlBlock));
self->parent = parent; if (self)
self->actSG = actSG; {
self->numOfSGs = numOfSGs; self->parent = parent;
self->sibling = NULL; self->actSG = actSG;
self->editSG = 0; self->numOfSGs = numOfSGs;
self->sibling = NULL;
self->editSG = 0;
LogicalNode_addSettingGroupControlBlock(parent, self); LogicalNode_addSettingGroupControlBlock(parent, self);
}
return self; return self;
} }
@ -462,30 +476,33 @@ GSEControlBlock_create(const char* name, LogicalNode* parent, const char* appId,
{ {
GSEControlBlock* self = (GSEControlBlock*) GLOBAL_MALLOC(sizeof(GSEControlBlock)); GSEControlBlock* self = (GSEControlBlock*) GLOBAL_MALLOC(sizeof(GSEControlBlock));
self->name = StringUtils_copyString(name); if (self)
self->parent = parent; {
self->name = StringUtils_copyString(name);
self->parent = parent;
if (appId) if (appId)
self->appId = StringUtils_copyString(appId); self->appId = StringUtils_copyString(appId);
else else
self->appId = NULL; self->appId = NULL;
if (dataSet) if (dataSet)
self->dataSetName = StringUtils_copyString(dataSet); self->dataSetName = StringUtils_copyString(dataSet);
else else
self->dataSetName = NULL; self->dataSetName = NULL;
self->confRev = confRef; self->confRev = confRef;
self->fixedOffs = fixedOffs; self->fixedOffs = fixedOffs;
self->minTime = minTime; self->minTime = minTime;
self->maxTime = maxTime; self->maxTime = maxTime;
self->address = NULL; self->address = NULL;
self->sibling = NULL; self->sibling = NULL;
if (parent != NULL) if (parent != NULL)
LogicalNode_addGSEControlBlock(parent, self); LogicalNode_addGSEControlBlock(parent, self);
}
return self; return self;
} }
@ -504,29 +521,32 @@ SVControlBlock_create(const char* name, LogicalNode* parent, const char* svID, c
{ {
SVControlBlock* self = (SVControlBlock*) GLOBAL_MALLOC(sizeof(SVControlBlock)); SVControlBlock* self = (SVControlBlock*) GLOBAL_MALLOC(sizeof(SVControlBlock));
self->name = StringUtils_copyString(name); if (self)
self->parent = parent; {
self->name = StringUtils_copyString(name);
self->parent = parent;
self->svId = StringUtils_copyString(svID); /* Is there a default value? */ self->svId = StringUtils_copyString(svID); /* Is there a default value? */
if (dataSet) if (dataSet)
self->dataSetName = StringUtils_copyString(dataSet); self->dataSetName = StringUtils_copyString(dataSet);
else else
self->dataSetName = NULL; self->dataSetName = NULL;
self->confRev = confRev; self->confRev = confRev;
self->smpMod = smpMod; self->smpMod = smpMod;
self->smpRate = smpRate; self->smpRate = smpRate;
self->optFlds = optFlds; self->optFlds = optFlds;
self->isUnicast = isUnicast; self->isUnicast = isUnicast;
self->dstAddress = NULL; self->dstAddress = NULL;
self->sibling = NULL; self->sibling = NULL;
if (parent) if (parent)
LogicalNode_addSMVControlBlock(parent, self); LogicalNode_addSMVControlBlock(parent, self);
}
return self; return self;
} }
@ -548,11 +568,14 @@ PhyComAddress_create(uint8_t vlanPriority, uint16_t vlanId, uint16_t appId, uint
{ {
PhyComAddress* self = (PhyComAddress*) GLOBAL_MALLOC(sizeof(PhyComAddress)); PhyComAddress* self = (PhyComAddress*) GLOBAL_MALLOC(sizeof(PhyComAddress));
self->vlanPriority = vlanPriority; if (self)
self->vlanId = vlanId; {
self->appId = appId; self->vlanPriority = vlanPriority;
self->vlanId = vlanId;
self->appId = appId;
memcpy(self->dstAddress, dstAddress, 6); memcpy(self->dstAddress, dstAddress, 6);
}
return self; return self;
} }
@ -589,17 +612,20 @@ DataObject_create(const char* name, ModelNode* parent, int arrayElements)
{ {
DataObject* self = (DataObject*) GLOBAL_MALLOC(sizeof(DataObject)); DataObject* self = (DataObject*) GLOBAL_MALLOC(sizeof(DataObject));
self->name = StringUtils_copyString(name); if (self)
self->modelType = DataObjectModelType; {
self->elementCount = arrayElements; self->name = StringUtils_copyString(name);
self->firstChild = NULL; self->modelType = DataObjectModelType;
self->parent = parent; self->elementCount = arrayElements;
self->sibling = NULL; self->firstChild = NULL;
self->parent = parent;
if (parent->modelType == LogicalNodeModelType) self->sibling = NULL;
LogicalNode_addDataObject((LogicalNode*) parent, self);
else if (parent->modelType == DataObjectModelType) if (parent->modelType == LogicalNodeModelType)
DataObject_addChild((DataObject*) parent, (ModelNode*) self); LogicalNode_addDataObject((LogicalNode*) parent, self);
else if (parent->modelType == DataObjectModelType)
DataObject_addChild((DataObject*) parent, (ModelNode*) self);
}
return self; return self;
} }
@ -637,22 +663,25 @@ DataAttribute_create(const char* name, ModelNode* parent, DataAttributeType type
{ {
DataAttribute* self = (DataAttribute*) GLOBAL_MALLOC(sizeof(DataAttribute)); DataAttribute* self = (DataAttribute*) GLOBAL_MALLOC(sizeof(DataAttribute));
self->name = StringUtils_copyString(name); if (self)
self->elementCount = arrayElements; {
self->modelType = DataAttributeModelType; self->name = StringUtils_copyString(name);
self->type = type; self->elementCount = arrayElements;
self->fc = fc; self->modelType = DataAttributeModelType;
self->firstChild = NULL; self->type = type;
self->mmsValue = NULL; self->fc = fc;
self->parent = parent; self->firstChild = NULL;
self->sibling = NULL; self->mmsValue = NULL;
self->triggerOptions = triggerOptions; self->parent = parent;
self->sAddr = sAddr; self->sibling = NULL;
self->triggerOptions = triggerOptions;
if (parent->modelType == DataObjectModelType) self->sAddr = sAddr;
DataObject_addChild((DataObject*) parent, (ModelNode*) self);
else if (parent->modelType == DataAttributeModelType) if (parent->modelType == DataObjectModelType)
DataAttribute_addChild((DataAttribute*) parent, (ModelNode*) self); DataObject_addChild((DataObject*) parent, (ModelNode*) self);
else if (parent->modelType == DataAttributeModelType)
DataAttribute_addChild((DataAttribute*) parent, (ModelNode*) self);
}
return self; return self;
} }
@ -691,15 +720,18 @@ DataSet_create(const char* name, LogicalNode* parent)
{ {
DataSet* self = (DataSet*) GLOBAL_MALLOC(sizeof(DataSet)); DataSet* self = (DataSet*) GLOBAL_MALLOC(sizeof(DataSet));
LogicalDevice* ld = (LogicalDevice*) parent->parent; if (self)
{
LogicalDevice* ld = (LogicalDevice*) parent->parent;
self->name = StringUtils_createString(3, parent->name, "$", name); self->name = StringUtils_createString(3, parent->name, "$", name);
self->elementCount = 0; self->elementCount = 0;
self->sibling = NULL; self->sibling = NULL;
self->logicalDeviceName = ld->name; self->logicalDeviceName = ld->name;
self->fcdas = NULL; self->fcdas = NULL;
IedModel_addDataSet((IedModel*) ld->parent, self); IedModel_addDataSet((IedModel*) ld->parent, self);
}
return self; return self;
} }
@ -755,37 +787,40 @@ DataSetEntry_create(DataSet* dataSet, const char* variable, int index, const cha
{ {
DataSetEntry* self = (DataSetEntry*) GLOBAL_MALLOC(sizeof(DataSetEntry)); DataSetEntry* self = (DataSetEntry*) GLOBAL_MALLOC(sizeof(DataSetEntry));
char variableName[130]; if (self)
{
char variableName[130];
StringUtils_copyStringMax(variableName, 130, variable); StringUtils_copyStringMax(variableName, 130, variable);
char* separator = strchr(variableName, '/'); char* separator = strchr(variableName, '/');
if (separator != NULL) { if (separator != NULL) {
*separator = 0; *separator = 0;
self->variableName = StringUtils_copyString(separator + 1); self->variableName = StringUtils_copyString(separator + 1);
self->logicalDeviceName = StringUtils_copyString(variableName); self->logicalDeviceName = StringUtils_copyString(variableName);
self->isLDNameDynamicallyAllocated = true; self->isLDNameDynamicallyAllocated = true;
} }
else { else {
self->variableName = StringUtils_copyString(variable); self->variableName = StringUtils_copyString(variable);
self->logicalDeviceName = dataSet->logicalDeviceName; self->logicalDeviceName = dataSet->logicalDeviceName;
self->isLDNameDynamicallyAllocated = false; self->isLDNameDynamicallyAllocated = false;
} }
if (component != NULL) if (component != NULL)
self->componentName = StringUtils_copyString(component); self->componentName = StringUtils_copyString(component);
else else
self->componentName = NULL; self->componentName = NULL;
self->index = index; self->index = index;
self->sibling = NULL; self->sibling = NULL;
self->value = NULL; self->value = NULL;
DataSet_addEntry(dataSet, self); DataSet_addEntry(dataSet, self);
}
return self; return self;
} }

Loading…
Cancel
Save