diff --git a/src/iec61850/inc/iec61850_model.h b/src/iec61850/inc/iec61850_model.h index 052ba95a..6e3c66a0 100644 --- a/src/iec61850/inc/iec61850_model.h +++ b/src/iec61850/inc/iec61850_model.h @@ -84,6 +84,8 @@ typedef struct sSVControlBlock SVControlBlock; typedef struct sLogControlBlock LogControlBlock; +typedef struct sLog Log; + typedef enum { IEC61850_BOOLEAN = 0,/* int */ IEC61850_INT8 = 1, /* int8_t */ @@ -167,6 +169,8 @@ struct sIedModel { GSEControlBlock* gseCBs; SVControlBlock* svCBs; SettingGroupControlBlock* sgcbs; + LogControlBlock* lcbs; + Log* logs; void (*initializer) (void); }; @@ -268,6 +272,16 @@ struct sLogControlBlock { uint8_t trgOps; /* TrgOps - trigger conditions */ uint8_t options; /* OptFlds */ uint32_t intPeriod; /* IntgPd - integrity period */ + + LogControlBlock* sibling; /* next control block in list or NULL if this is the last entry */ +}; + +struct sLog { + LogicalNode* parent; + + char* name; + + Log* sibling; /* next log instance in list or NULL if this is the last entry */ }; struct sSettingGroupControlBlock { diff --git a/src/iec61850/inc_private/mms_mapping_internal.h b/src/iec61850/inc_private/mms_mapping_internal.h index ef09bb24..367d0e4a 100644 --- a/src/iec61850/inc_private/mms_mapping_internal.h +++ b/src/iec61850/inc_private/mms_mapping_internal.h @@ -1,7 +1,7 @@ /* * mms_mapping_internal.h * - * Copyright 2013, 2015 Michael Zillgith + * Copyright 2013-2016 Michael Zillgith * * This file is part of libIEC61850. * @@ -35,6 +35,10 @@ struct sMmsMapping { MmsServer mmsServer; LinkedList reportControls; +#if (CONFIG_IEC61850_LOG_SERVICE == 1) + LinkedList* logControls; +#endif + #if (CONFIG_INCLUDE_GOOSE_SUPPORT == 1) LinkedList gseControls; const char* gooseInterfaceId; diff --git a/src/iec61850/server/mms_mapping/logging.c b/src/iec61850/server/mms_mapping/logging.c index a7fddee5..46632d88 100644 --- a/src/iec61850/server/mms_mapping/logging.c +++ b/src/iec61850/server/mms_mapping/logging.c @@ -23,6 +23,7 @@ #include "libiec61850_platform_includes.h" #include "stack_config.h" +#include "mms_mapping.h" #include "logging.h" diff --git a/src/iec61850/server/mms_mapping/mms_mapping.c b/src/iec61850/server/mms_mapping/mms_mapping.c index fdb430a9..3b1b1425 100644 --- a/src/iec61850/server/mms_mapping/mms_mapping.c +++ b/src/iec61850/server/mms_mapping/mms_mapping.c @@ -1193,6 +1193,10 @@ MmsMapping_create(IedModel* model) self->reportControls = LinkedList_create(); #endif +#if (CONFIG_IEC61850_LOG_SERVICE == 1) + self->logControls = LinkedList_create(); +#endif + #if (CONFIG_INCLUDE_GOOSE_SUPPORT == 1) self->gseControls = LinkedList_create(); self->gooseInterfaceId = NULL; diff --git a/src/iec61850/server/mms_mapping/reporting.c b/src/iec61850/server/mms_mapping/reporting.c index 03d29fd3..22163fcd 100644 --- a/src/iec61850/server/mms_mapping/reporting.c +++ b/src/iec61850/server/mms_mapping/reporting.c @@ -31,10 +31,10 @@ #include "simple_allocator.h" #include "mem_alloc_linked_list.h" -#include "stack_config.h" #include "mms_mapping_internal.h" #include "mms_value_internal.h" #include "conversions.h" +#include "reporting.h" #include #ifndef DEBUG_IED_SERVER diff --git a/src/mms/iso_mms/server/mms_journal.c b/src/mms/iso_mms/server/mms_journal.c index 48758333..2f2f91df 100644 --- a/src/mms/iso_mms/server/mms_journal.c +++ b/src/mms/iso_mms/server/mms_journal.c @@ -21,7 +21,9 @@ * See COPYING file for the complete license text. */ +#include "libiec61850_platform_includes.h" #include "mms_device_model.h" +#include "mms_server_internal.h" MmsJournal MmsJournal_create(const char* name)