From 1700bca56b362ff4600ac3c95b8ed5d3ab988b1b Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Wed, 18 Feb 2015 16:59:00 +0100 Subject: [PATCH] - fixed problem with report activation --- config/stack_config.h | 2 +- .../mms_client_example4/mms_client_example4.c | 27 ------------------- src/iec61850/server/mms_mapping/reporting.c | 2 ++ src/iec61850/server/model/model.c | 12 +++++++-- 4 files changed, 13 insertions(+), 30 deletions(-) diff --git a/config/stack_config.h b/config/stack_config.h index 60a4056b..3c8467fe 100644 --- a/config/stack_config.h +++ b/config/stack_config.h @@ -160,7 +160,7 @@ #define MMS_GET_NAME_LIST 1 #define MMS_GET_VARIABLE_ACCESS_ATTRIBUTES 1 #define MMS_DATA_SET_SERVICE 1 -#define MMS_DYNAMIC_DATA_SETS 0 +#define MMS_DYNAMIC_DATA_SETS 1 #define MMS_GET_DATA_SET_ATTRIBUTES 1 #define MMS_STATUS_SERVICE 1 #define MMS_IDENTIFY_SERVICE 1 diff --git a/examples/mms_client_example4/mms_client_example4.c b/examples/mms_client_example4/mms_client_example4.c index 345a2ae4..13a8d225 100644 --- a/examples/mms_client_example4/mms_client_example4.c +++ b/examples/mms_client_example4/mms_client_example4.c @@ -81,33 +81,6 @@ int main(int argc, char** argv) { LinkedList_destroy(nameList); printf("\n"); - -// MmsValue* value; -// -// MmsConnection_getVariableAccessAttributes(con, "SampleIEDDevice1", "MMXU2$MX$TotW"); -// -// value = MmsConnection_readVariable(con, "SampleIEDDevice1", "MMXU2$MX$TotW$mag$f"); -// -// printf("Read variable with value: %f\n", MmsValue_toFloat(value)); -// -// MmsValue_setFloat(value, 1.234f); -// -// MmsConnection_writeVariable(con, "SampleIEDDevice1", "MMXU2$MX$TotW$mag$f", value); -// -// MmsValue_delete(value); -// -// value = MmsConnection_readVariable(con, "SampleIEDDevice1", "MMXU2$MX$TotW$mag$f"); -// -// printf("Read variable with value: %f\n", MmsValue_toFloat(value)); -// -// MmsValue_delete(value); -// -// value = MmsConnection_readVariable(con, "SampleIEDDevice1", "DGEN1$ST$Beh$stVal"); -// -// printf("Read integer variable with value: %i\n", MmsValue_toInt32(value)); -// -// MmsValue_delete(value); - exit: MmsConnection_destroy(con); } diff --git a/src/iec61850/server/mms_mapping/reporting.c b/src/iec61850/server/mms_mapping/reporting.c index 8b82033a..f9383b0d 100644 --- a/src/iec61850/server/mms_mapping/reporting.c +++ b/src/iec61850/server/mms_mapping/reporting.c @@ -1315,6 +1315,7 @@ Reporting_RCBWriteAccessHandler(MmsMapping* self, ReportControl* rc, char* eleme increaseConfRev(rc); } else { + printf("BBBBBB\n"); retVal = DATA_ACCESS_ERROR_OBJECT_VALUE_INVALID; goto exit_function; } @@ -1413,6 +1414,7 @@ Reporting_RCBWriteAccessHandler(MmsMapping* self, ReportControl* rc, char* eleme if (rcbValue != NULL) MmsValue_update(rcbValue, value); else { + printf("AAAAAA\n"); retVal = DATA_ACCESS_ERROR_OBJECT_VALUE_INVALID; goto exit_function; } diff --git a/src/iec61850/server/model/model.c b/src/iec61850/server/model/model.c index ac659020..2a5d5aa8 100644 --- a/src/iec61850/server/model/model.c +++ b/src/iec61850/server/model/model.c @@ -104,11 +104,19 @@ IedModel_lookupDataSet(IedModel* model, const char* dataSetReference /* e.g. ie int ldNameLen = separator - dataSetReference; + char domainName[65]; + + int modelNameLen = strlen(model->name); + + memcpy(domainName, model->name, modelNameLen); + while (dataSet != NULL) { - //TODO use domain name instead of dataSet->logicalDeviceName !? + domainName[modelNameLen] = 0; + + strncat(domainName, dataSet->logicalDeviceName, 64); - if (strncmp(dataSet->logicalDeviceName, dataSetReference, ldNameLen) == 0) { + if (strncmp(domainName, dataSetReference, ldNameLen) == 0) { if (strcmp(dataSet->name, separator + 1) == 0) { return dataSet; }