From e75936f2d1f9c5c27bfa1154014cc10569f37c06 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Tue, 22 Mar 2016 15:53:25 +0100 Subject: [PATCH] - for testing --- config/stack_config.h | 2 +- src/iec61850/server/impl/ied_server.c | 2 +- src/iec61850/server/mms_mapping/mms_mapping.c | 1 + src/iec61850/server/mms_mapping/reporting.c | 21 ++++++++++++------- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/config/stack_config.h b/config/stack_config.h index a72ee180..3e900e11 100644 --- a/config/stack_config.h +++ b/config/stack_config.h @@ -159,7 +159,7 @@ #define CONFIG_DEFAULT_MMS_REVISION "0.9.1" /* MMS virtual file store base path - where file services are looking for files */ -#define CONFIG_VIRTUAL_FILESTORE_BASEPATH "/home/root/vmd-filestore/" +#define CONFIG_VIRTUAL_FILESTORE_BASEPATH "./vmd-filestore/" /* Maximum number of open file per MMS connection (for MMS file read service) */ #define CONFIG_MMS_MAX_NUMBER_OF_OPEN_FILES_PER_CONNECTION 5 diff --git a/src/iec61850/server/impl/ied_server.c b/src/iec61850/server/impl/ied_server.c index 199e1082..f18bebd8 100644 --- a/src/iec61850/server/impl/ied_server.c +++ b/src/iec61850/server/impl/ied_server.c @@ -491,7 +491,7 @@ singleThreadedServerThread(void* parameter) IedServer_performPeriodicTasks(self); - //Thread_sleep(1); + Thread_sleep(1); running = mmsMapping->reportThreadRunning; } diff --git a/src/iec61850/server/mms_mapping/mms_mapping.c b/src/iec61850/server/mms_mapping/mms_mapping.c index 70841ef3..fdb430a9 100644 --- a/src/iec61850/server/mms_mapping/mms_mapping.c +++ b/src/iec61850/server/mms_mapping/mms_mapping.c @@ -2773,6 +2773,7 @@ eventWorkerThread(MmsMapping* self) self->reportThreadFinished = false; while (running) { + processPeriodicTasks(self); Thread_sleep(1); /* hand-over control to other threads */ diff --git a/src/iec61850/server/mms_mapping/reporting.c b/src/iec61850/server/mms_mapping/reporting.c index 2ee7173f..e97ebc4e 100644 --- a/src/iec61850/server/mms_mapping/reporting.c +++ b/src/iec61850/server/mms_mapping/reporting.c @@ -389,7 +389,6 @@ sendReport(ReportControl* self, bool isIntegrity, bool isGI) } } - /* add data set value elements */ DataSetEntry* dataSetEntry = self->dataSet->fcdas; @@ -1634,6 +1633,8 @@ printReportId(ReportBufferEntry* report) static void removeAllGIReportsFromReportBuffer(ReportBuffer* reportBuffer) { + printf("removeAllGIReportsFromReportBuffer\n"); + ReportBufferEntry* currentReport = reportBuffer->oldestReport; ReportBufferEntry* lastReport = NULL; @@ -1737,7 +1738,8 @@ enqueueReport(ReportControl* reportControl, bool isIntegrity, bool isGI, uint64_ uint8_t* entryBufPos = NULL; uint8_t* entryStartPos; - if (DEBUG_IED_SERVER) printf("IED_SERVER: number of buffered reports:%i\n", buffer->reportsCount); + //if (DEBUG_IED_SERVER) + printf("IED_SERVER: number of buffered reports:%i\n", buffer->reportsCount); if (buffer->lastEnqueuedReport == NULL) { /* buffer is empty - we start at the beginning of the memory block */ entryBufPos = buffer->memoryBlock; @@ -2027,11 +2029,11 @@ sendNextReportEntry(ReportControl* self) ReportBufferEntry* report = self->reportBuffer->nextToTransmit; -#if (DEBUG_IED_SERVER == 1) +//#if (DEBUG_IED_SERVER == 1) printf("IED_SERVER: SEND NEXT REPORT: "); - printReportId(report); + //printReportId(report); printf(" size: %i\n", report->entryLength); -#endif +//#endif MmsValue* entryIdValue = MmsValue_getElement(self->rcbValues, 11); MmsValue_setOctetString(entryIdValue, (uint8_t*) report->entryId, 8); @@ -2380,7 +2382,7 @@ processEventsForReport(ReportControl* rc, uint64_t currentTimeInMs) if (rc->triggerOps & TRG_OPT_GI) { if (rc->gi) { - + printf("rc->gi\n"); /* send current events in event buffer before GI report */ if (rc->triggered) { if (rc->buffered) @@ -2406,9 +2408,12 @@ processEventsForReport(ReportControl* rc, uint64_t currentTimeInMs) if (rc->intgPd > 0) { if (currentTimeInMs >= rc->nextIntgReportTime) { - + printf("integrity\n"); /* send current events in event buffer before integrity report */ if (rc->triggered) { + + printf("intg check triggered\n"); + if (rc->buffered) enqueueReport(rc, false, false, currentTimeInMs); else @@ -2432,6 +2437,8 @@ processEventsForReport(ReportControl* rc, uint64_t currentTimeInMs) if (rc->triggered) { if (currentTimeInMs >= rc->reportTime) { + printf("triggered\n"); + if (rc->buffered) enqueueReport(rc, false, false, currentTimeInMs); else