From 9a55687379980304c6bd9a9e9b351c2d27057fa8 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Mon, 23 May 2016 09:41:34 +0200 Subject: [PATCH] - added missing resources - fixed bug (seg fault) in unbuffered reporting --- demos/beaglebone/beagle_demo.iid | 331 ++++++++++++++++++++ src/iec61850/server/mms_mapping/reporting.c | 3 +- src/logging/log_storage.c | 65 ++++ 3 files changed, 398 insertions(+), 1 deletion(-) create mode 100644 demos/beaglebone/beagle_demo.iid create mode 100644 src/logging/log_storage.c diff --git a/demos/beaglebone/beagle_demo.iid b/demos/beaglebone/beagle_demo.iid new file mode 100644 index 00000000..32b1946c --- /dev/null +++ b/demos/beaglebone/beagle_demo.iid @@ -0,0 +1,331 @@ + + +
+
+ + + Station bus + 10 + +
+

10.0.0.2

+

255.255.255.0

+

10.0.0.1

+

0001

+

00000001

+

0001

+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + direct-with-normal-security + + + + + direct-with-normal-security + + + + + direct-with-normal-security + + + + + direct-with-normal-security + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + EXT:2015 + + + + + + + + + + + + + + + + + + + + + + direct-with-normal-security + + + + + + + + + + + + + + + + + + + + + + status-only + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + on + blocked + test + test/blocked + off + + + + Ok + Warning + Alarm + + + + unknown + forward + backward + both + + + + status-only + direct-with-normal-security + + + + not-supported + bay-control + station-control + remote-control + automatic-bay + automatic-station + automatic-remote + maintenance + process + + +
diff --git a/src/iec61850/server/mms_mapping/reporting.c b/src/iec61850/server/mms_mapping/reporting.c index b232d0d3..a94d59da 100644 --- a/src/iec61850/server/mms_mapping/reporting.c +++ b/src/iec61850/server/mms_mapping/reporting.c @@ -602,7 +602,8 @@ updateReportDataset(MmsMapping* mapping, ReportControl* rc, MmsValue* newDatSet, success = true; - rc->isBuffering = true; + if (rc->buffered) + rc->isBuffering = true; goto exit_function; } diff --git a/src/logging/log_storage.c b/src/logging/log_storage.c new file mode 100644 index 00000000..e7847e4a --- /dev/null +++ b/src/logging/log_storage.c @@ -0,0 +1,65 @@ +/* + * log_storage.c + * + * Copyright 2016 Michael Zillgith + * + * This file is part of libIEC61850. + * + * libIEC61850 is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * libIEC61850 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with libIEC61850. If not, see . + * + * See COPYING file for the complete license text. + */ + +#include "logging_api.h" + +uint64_t +LogStorage_addEntry(LogStorage self, uint64_t timestamp) +{ + return self->addEntry(self, timestamp); +} + +bool +LogStorage_addEntryData(LogStorage self, uint64_t entryID, const char* dataRef, uint8_t* data, int dataSize, uint8_t reasonCode) +{ + return self->addEntryData(self, entryID, dataRef, data, dataSize, reasonCode); +} + +bool +LogStorage_getEntries(LogStorage self, uint64_t startingTime, uint64_t endingTime, + LogEntryCallback entryCallback, LogEntryDataCallback entryDataCallback, void* parameter) +{ + return self->getEntries(self, startingTime, endingTime, entryCallback, entryDataCallback, parameter); +} + +bool +LogStorage_getEntriesAfter(LogStorage self, uint64_t startingTime, uint64_t entryID, + LogEntryCallback entryCallback, LogEntryDataCallback entryDataCallback, void* parameter) +{ + return self->getEntriesAfter(self, startingTime, entryID, entryCallback, entryDataCallback, parameter); +} + +void +LogStorage_destroy(LogStorage self) +{ + self->destroy(self); +} + + +bool +LogStorage_getOldestAndNewestEntries(LogStorage self, uint64_t* newEntry, uint64_t* newEntryTime, + uint64_t* oldEntry, uint64_t* oldEntryTime) +{ + return self->getOldestAndNewestEntries(self, newEntry, newEntryTime, oldEntry, oldEntryTime); +} +