- fixed data set handling problem when using functional naming (ldName) (LIB61850-160)

v1.6_develop_rgoose_sntp
Michael Zillgith 3 years ago
parent 0a1ddb7ca9
commit e02b85f147

@ -3978,10 +3978,21 @@ MmsMapping_stopEventWorkerThread(MmsMapping* self)
DataSet*
MmsMapping_createDataSetByNamedVariableList(MmsMapping* self, MmsNamedVariableList variableList)
{
DataSet* dataSet = (DataSet*) GLOBAL_MALLOC(sizeof(DataSet));
DataSet* dataSet = (DataSet*) GLOBAL_CALLOC(1, sizeof(DataSet));
if (variableList->domain != NULL)
dataSet->logicalDeviceName = MmsDomain_getName(variableList->domain) + strlen(self->model->name);
if (dataSet) {
if (variableList->domain != NULL) {
LogicalDevice* ld = IedModel_getDevice(self->model, MmsDomain_getName(variableList->domain));
if (ld) {
dataSet->logicalDeviceName = ld->name;
}
else {
if (DEBUG_IED_SERVER)
printf("IED_SERVER: LD lookup error!");
}
}
else
dataSet->logicalDeviceName = NULL; /* name is not relevant for association specific data sets */
@ -3995,10 +4006,16 @@ MmsMapping_createDataSetByNamedVariableList(MmsMapping* self, MmsNamedVariableLi
while (element != NULL) {
MmsAccessSpecifier* listEntry = (MmsAccessSpecifier*) element->data;
LogicalDevice* entryLd = IedModel_getDevice(self->model, MmsDomain_getName(listEntry->domain));
if (entryLd) {
DataSetEntry* dataSetEntry = (DataSetEntry*) GLOBAL_MALLOC(sizeof(DataSetEntry));
if (dataSetEntry) {
/* use variable name part of domain name as logicalDeviceName */
dataSetEntry->logicalDeviceName = MmsDomain_getName(listEntry->domain) + strlen(self->model->name);
dataSetEntry->logicalDeviceName = entryLd->name;
dataSetEntry->variableName = listEntry->variableName;
dataSetEntry->index = listEntry->arrayIndex;
dataSetEntry->componentName = listEntry->componentName;
@ -4055,9 +4072,16 @@ MmsMapping_createDataSetByNamedVariableList(MmsMapping* self, MmsNamedVariableLi
}
lastDataSetEntry = dataSetEntry;
}
}
else {
if (DEBUG_IED_SERVER)
printf("IED_SERVER: LD lookup error!\n");
}
element = LinkedList_getNext(element);
}
}
return dataSet;
}

@ -721,7 +721,21 @@ updateReportDataset(MmsMapping* mapping, ReportControl* rc, MmsValue* newDatSet,
char externalVisibleName[256];
/* Construct external visible name */
LogicalDevice* ld = IedModel_getDeviceByInst(mapping->model, dataSetLdName);
if (ld == NULL) {
success = false;
goto exit_function;
}
if (ld->ldName) {
StringUtils_copyStringMax(externalVisibleName, 256, ld->ldName);
}
else {
StringUtils_concatString(externalVisibleName, 256, mapping->model->name, dataSetLdName);
}
StringUtils_appendString(externalVisibleName, 256, "/");
StringUtils_appendString(externalVisibleName, 256, dataSetName);

@ -39,9 +39,11 @@ MmsDomain_create(char* domainName)
{
MmsDomain* self = (MmsDomain*) GLOBAL_CALLOC(1, sizeof(MmsDomain));
if (self) {
self->domainName = StringUtils_copyString(domainName);
self->namedVariableLists = LinkedList_create();
self->journals = NULL;
}
return self;
}

Loading…
Cancel
Save