Major Update:

- DataTreeCore:
  - Merge TDataMember and CDataTree into => CDataMember
  - Each node, incl root is now CDataMember object
  - Modified function to not require BaseMember (Object is basemember)
  - Split/duplicat most functions to require, or not require child path
  - Added isNull/Object/Array/Sting() etc methods
  - Many other methods removed or restructured
- Updated DataTree usage in: JSONparseCore,
  ApplicationCore, FunctionCore, SelectableCore, WatchdogCore
This commit is contained in:
Charl Wentzel
2018-11-17 19:10:59 +02:00
parent d36bf3230b
commit f2a1ca950a
10 changed files with 472 additions and 488 deletions

View File

@@ -113,14 +113,14 @@ CFunctionCore::~CFunctionCore()
bool CFunctionCore::LoadConfigData()
{
TDataMember * TempMember;
CDataMember * TempMember;
EDebugLevel pLogLevel;
int pLogOutput;
char * TempStr;
// Get debug level
pLogLevel = dlNone;
TempStr = (char*)DataTree->GetStr( ConfigMember, "Log/Level", "Medium", true );
TempStr = (char*)ConfigMember->GetChildStr( "Log/Level", "Medium", true );
if (TempStr)
{
if (!strcasecmp( TempStr, "Low" ))
@@ -133,44 +133,47 @@ bool CFunctionCore::LoadConfigData()
// Set debug output
pLogOutput = 0;
TempMember = DataTree->GetFirstChild( ConfigMember, "Log/Output", true );
while (TempMember)
if ((TempMember = ConfigMember->GetMember( "Log/Output", true )))
{
if (TempMember->Value)
TempMember = TempMember->GetFirstChild();
while (TempMember)
{
if (!strcasecmp( TempMember->Value, "Normal"))
pLogOutput |= OUT_NORMAL;
else if (!strcasecmp( TempMember->Value, "Bin"))
pLogOutput |= OUT_BIN;
else if (!strcasecmp( TempMember->Value, "Hex"))
pLogOutput |= OUT_HEX;
else if (!strcasecmp( TempMember->Value, "Count"))
pLogOutput |= OUT_COUNT;
else if (!strcasecmp( TempMember->Value, "AsIs"))
pLogOutput |= OUT_ASIS;
else if (!strcasecmp( TempMember->Value, "CRLF"))
pLogOutput |= OUT_CRLF;
}
if ((TempStr = (char*)TempMember->GetStr()))
{
if (!strcasecmp( TempStr, "Normal"))
pLogOutput |= OUT_NORMAL;
else if (!strcasecmp( TempStr, "Bin"))
pLogOutput |= OUT_BIN;
else if (!strcasecmp( TempStr, "Hex"))
pLogOutput |= OUT_HEX;
else if (!strcasecmp( TempStr, "Count"))
pLogOutput |= OUT_COUNT;
else if (!strcasecmp( TempStr, "AsIs"))
pLogOutput |= OUT_ASIS;
else if (!strcasecmp( TempStr, "CRLF"))
pLogOutput |= OUT_CRLF;
}
// Next
TempMember = DataTree->GetNextChild( TempMember );
// Next
TempMember = TempMember->GetNextPeer();
}
}
// Set Logging
SetLogParam( pLogLevel, pLogOutput );
// Load Channels
TempMember = DataTree->GetFirstChild( ConfigMember, "Channels" );
TempMember = ConfigMember->GetFirstChild( "Channels" );
while (TempMember)
{
if (TempMember->Name) {
AddChannel( TempMember->Name,
DataTree->GetBool( TempMember, "InputEnabled", true, true ),
DataTree->GetBool( TempMember, "OutputEnabled", false, true ));
if (TempMember->GetName()) {
AddChannel( TempMember->GetName(),
TempMember->GetChildBool( "InputEnabled", true, true ),
TempMember->GetChildBool( "OutputEnabled", false, true ));
}
// Next
TempMember = DataTree->GetNextChild( TempMember );
TempMember = TempMember->GetNextPeer();
}
return true;
@@ -180,29 +183,29 @@ bool CFunctionCore::LoadConfigData()
bool CFunctionCore::LoadChannelLinkData()
{
TChannel * Channel;
TDataMember * ChannelMember;
TDataMember * FunctionMember;
CDataMember * ChannelMember;
CDataMember * FunctionMember;
// Process each Channel
ChannelMember = DataTree->GetFirstChild( LinkConfigMember );
ChannelMember = LinkConfigMember->GetFirstChild();
while (ChannelMember)
{
if ((Channel = GetChannel( ChannelMember->Name )))
if ((Channel = GetChannel( ChannelMember->GetName() )))
{
FunctionMember = DataTree->GetFirstChild( ChannelMember );
FunctionMember = ChannelMember->GetFirstChild();
while (FunctionMember)
{
// Get Parameters
LinkOutputChannel( Channel->Name,
DataTree->GetStr( FunctionMember, "Function" ),
DataTree->GetStr( FunctionMember, "Channel" ),
DataTree->GetBool( FunctionMember, "Bidirectional" ) );
FunctionMember->GetChildStr( "Function" ),
FunctionMember->GetChildStr( "Channel" ),
FunctionMember->GetChildBool( "Bidirectional" ) );
// Next
FunctionMember = DataTree->GetNextChild( FunctionMember );
FunctionMember = FunctionMember->GetNextPeer();
}
}
// Next
ChannelMember = DataTree->GetNextChild( ChannelMember );
ChannelMember = ChannelMember->GetNextPeer();
}
return true;
@@ -221,7 +224,7 @@ bool CFunctionCore::Init()
bool CFunctionCore::InitConfig( const char * pConfigPath )
{
// Validate
if (!DataTree || !(ConfigMember = DataTree->GetMember( NULL, pConfigPath, true )))
if (!DataTree || !(ConfigMember = DataTree->GetMember( pConfigPath, true )))
return false;
// Load configuration
@@ -232,7 +235,7 @@ bool CFunctionCore::InitConfig( const char * pConfigPath )
}
//---------------------------------------------------------------------------
bool CFunctionCore::InitConfig( TDataMember * pBaseMember )
bool CFunctionCore::InitConfig( CDataMember * pBaseMember )
{
// Validate
if (!DataTree || !(ConfigMember = pBaseMember ))
@@ -249,7 +252,7 @@ bool CFunctionCore::InitConfig( TDataMember * pBaseMember )
bool CFunctionCore::InitChannelLinks( const char * pLinkConfigPath )
{
// Validate
if (!DataTree || !(LinkConfigMember = DataTree->GetMember( NULL, pLinkConfigPath, true )))
if (!DataTree || !(LinkConfigMember = DataTree->GetMember( pLinkConfigPath, true )))
return false;
// Load configuration
@@ -259,7 +262,7 @@ bool CFunctionCore::InitChannelLinks( const char * pLinkConfigPath )
}
//---------------------------------------------------------------------------
bool CFunctionCore::InitChannelLinks( TDataMember *pLinkConfigMember )
bool CFunctionCore::InitChannelLinks( CDataMember *pLinkConfigMember )
{
// Validate
if (!DataTree || !(LinkConfigMember = pLinkConfigMember))