From 01ec1071b1d0951f33f51b6397e92283fa44d5fd Mon Sep 17 00:00:00 2001 From: Charl Wentzel Date: Mon, 22 Apr 2019 10:29:52 +0200 Subject: [PATCH] Important Update: - Save reference to process config in Function Core - Moved from DeviceCore to here as common feature - "Config" : object Allow additional config to be stored in application definition - "Config" : string Name reference to config object in main JSON file - Remove from Device Core --- DeviceCore.cpp | 8 -------- DeviceCore.h | 1 - FunctionCore.cpp | 8 ++++++++ FunctionCore.h | 3 +++ 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/DeviceCore.cpp b/DeviceCore.cpp index 5beb5f9..056ec7a 100644 --- a/DeviceCore.cpp +++ b/DeviceCore.cpp @@ -69,7 +69,6 @@ CDeviceCore::~CDeviceCore() bool CDeviceCore::Init( CDataMember * FunctionConfig ) { char * PersistFile = NULL; - char * ConfigName = NULL; CDataMember * PollConfig = NULL; int IntVal1; int IntVal2; @@ -86,13 +85,6 @@ bool CDeviceCore::Init( CDataMember * FunctionConfig ) if (!(EventChannel = GetChannel( "Event" ))) EventChannel = AddChannel( "Event", true, true ); - // Get configuration - if ((Config = FunctionConfig->GetChild( "Config", true )) && Config->isString()) { - ConfigName = (char*)FunctionConfig->GetChStr( "Config" ); - Config = Application->Config->GetChild( ConfigName, true ); - } - if (Config->isNull()) Config->SetObject(); - // Load Polling configuration PollConfig = Config->GetChild( "Polling", true ); if (PollConfig->isNull()) PollConfig->SetObject(); diff --git a/DeviceCore.h b/DeviceCore.h index 9f43f95..427243a 100644 --- a/DeviceCore.h +++ b/DeviceCore.h @@ -121,7 +121,6 @@ class CDeviceCore : public CFunctionCore { protected: // Configuration - CDataMember * Config = NULL; CDataMember * ConfigTypes = NULL; CDataMember * ValueTree = NULL; CJSONparse * JSONparse = NULL; diff --git a/FunctionCore.cpp b/FunctionCore.cpp index b8da187..a778ead 100644 --- a/FunctionCore.cpp +++ b/FunctionCore.cpp @@ -95,6 +95,7 @@ bool CFunctionCore::Init( CDataMember * FunctionConfig ) CDataMember * ChannelConfig; EDebugLevel pLogLevel; int pLogOutput; + char * ConfigName = NULL; // Validate if (!FunctionConfig ) @@ -118,6 +119,13 @@ bool CFunctionCore::Init( CDataMember * FunctionConfig ) ChannelConfig = ChannelConfig->GetNextPeer(); } + // Get main configuration + if ((Config = FunctionConfig->GetChild( "Config", true )) && Config->isString()) { + ConfigName = (char*)FunctionConfig->GetChStr( "Config" ); + Config = Application->Config->GetChild( ConfigName, true ); + } + if (Config->isNull()) Config->SetObject(); + return true; } //--------------------------------------------------------------------------- diff --git a/FunctionCore.h b/FunctionCore.h index b04266a..11177af 100644 --- a/FunctionCore.h +++ b/FunctionCore.h @@ -62,6 +62,9 @@ protected: char * Name = NULL; bool WaitToTerminate = false; + // JSON Config + CDataMember * Config = NULL; + // Channels TChannel * FirstChannel = NULL;