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:
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user