Important Update:

- SelectableCore:
  - Made GetType() & GetState() public methods
  - Update logs in Input()
- FunctionCore:
  - Add Input/OutputEnabled parameters with Get/Set methods.
  - Update logging in Input() and Output()
  - Check if input/output enabled in Input() and Output()
This commit is contained in:
Charl Wentzel
2017-07-05 10:59:24 +02:00
parent c50d920f94
commit 748b62d235
4 changed files with 88 additions and 48 deletions

View File

@@ -110,7 +110,7 @@ bool CFunctionCore::LoadConfig( CDataTree * pDataTree, const char * pBasePath )
}
//---------------------------------------------------------------------------
TChannel * CFunctionCore::AddChannel( const char * ChannelName )
TChannel * CFunctionCore::AddChannel( const char * ChannelName, const bool pInputEnable, const bool pOutputEnable )
{
TChannel ** Channel = NULL;
@@ -139,6 +139,10 @@ TChannel * CFunctionCore::AddChannel( const char * ChannelName )
if (Log) Log->Message( DebugLevel, dlLow, "%s: Channel '%s' - Created", Name, ChannelName );
}
// Set parameters
(*Channel)->InputEnabled = pInputEnable;
(*Channel)->OutputEnabled = pOutputEnable;
return *Channel;
}
//---------------------------------------------------------------------------
@@ -235,47 +239,47 @@ int CFunctionCore::Input( const char * ChannelName, const char * Data, int MaxLe
if (!ChannelName || !Data) {
return 0;
}
else if (MaxLen == -1) {
MaxLen = strlen( Data );
}
// Get Channel
if (!(Channel = GetChannel( ChannelName )))
{
// Log event
if (!(Channel = GetChannel( ChannelName ))) {
// Channel not found
if (Log) Log->Message( DebugLevel, dlHigh, "%s: Channel '%s' - Input rejected, Channel not found", Name, ChannelName );
return 0;
}
// Log event
if (Log) Log->Output( DebugLevel, dlHigh, OutputDisplay, Data, MaxLen, "%s: Channel '%s' - IN:", Name, ChannelName );
// Return processed bytes
return MaxLen;
else if (!Channel->InputEnabled) {
// Channel disabled
if (Log) Log->Message( DebugLevel, dlHigh, "%s: Channel '%s' - Input rejected, Channel input disabled", Name, ChannelName );
return 0;
}
else {
// Return processed bytes
if (MaxLen == -1) {
MaxLen = strlen( Data );
}
if (Log) Log->Output( DebugLevel, dlHigh, OutputDisplay, Data, MaxLen, "%s: Channel '%s' - IN:", Name, ChannelName );
return MaxLen;
}
}
//---------------------------------------------------------------------------
int CFunctionCore::Output( const char * ChanelName, const char * Data, int Len )
int CFunctionCore::Output( const char * ChannelName, const char * Data, int Len )
{
TChannel * Channel = NULL;
// Validate
if (!ChanelName || !Data) {
if (!ChannelName) {
return 0;
} else if (Len == -1) {
Len = strlen( Data );
}
// Get Channel
if (!(Channel = GetChannel( ChanelName )))
{
// Log Event
if (Log) Log->Message( DebugLevel, dlHigh, "%s: Channel '%s' - Output rejected, Channel not found", Name, ChanelName );
if (!(Channel = GetChannel( ChannelName ))) {
if (Log) Log->Message( DebugLevel, dlHigh, "%s: Channel '%s' - Output rejected, Channel not found", Name, ChannelName );
return 0;
}
// Return processed bytes
return Output( Channel, Data, Len );
else {
// Return processed bytes
return Output( Channel, Data, Len );
}
}
//---------------------------------------------------------------------------
@@ -286,14 +290,21 @@ int CFunctionCore::Output( const TChannel * Channel, const char * Data, int Len
// Validate
if (!Channel || !Data) {
return 0;
} else if (Len == -1) {
Len = strlen( Data );
}
// Check if enabled
if (!Channel->OutputEnabled) {
if (Log) Log->Message( DebugLevel, dlHigh, "%s: Channel '%s' - Output rejected, Channel output disabled", Name, Channel->Name );
return 0;
}
// Log event
if (Log) Log->Output( DebugLevel, dlHigh, OutputDisplay, Data, Len, "%s: Channel '%s' - OUT:", Name, Channel->Name );
// Pass output to all linked inputs
if (Len == -1) {
Len = strlen( Data );
}
OutChannel = Channel->FirstOutput;
while (OutChannel) {
OutChannel->Function->Input( OutChannel->Name, Data, Len );