Major Update:

- Updated all Logged messages, standardised DebugLevel:
  - dlNone   - Show startup and stop
  - dlLow    - Show creation/destruction of Function Blocks and Local IO
  - dlMedium - Show connection events, eg. open/close
  - dlHigh   - Show data flow events
-LogCore:
  - LogMessage and ShowOutput uses va_list
    only run printf if DebugLevel correct
  - Remove global LogStr[] variable
- SelectableCore:
  - Implemented Auto-management of handles
    auto open on startup/fail/close
  - Changed simple Open/Close/Read/Write methods to inline
  - Do not set Select Write trigger for server socket
  - Memory leak, setting address twice on RemoteClient
  - Bug fix, only send handle out data if DebugLevel = dlHigh
  - Bug fix, do not Read/ProcessBuffer if no InputBuffer
This commit is contained in:
Charl Wentzel
2016-05-27 13:32:54 +02:00
parent c01c8f5e9b
commit b4073a166a
7 changed files with 127 additions and 183 deletions

View File

@@ -13,6 +13,7 @@
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
//---------------------------------------------------------------------------
@@ -22,10 +23,12 @@ char LogStr[1000]; // Temporary var to create log messages,
//---------------------------------------------------------------------------
bool LogMessage( const char * Heading, EDebugLevel Level, const char *Message )
bool LogMessage( EDebugLevel Level, const char * Format, ... )
{
va_list ArgPtr;
// Validate values
if (!Message)
if (!Format || !*Format)
return false;
// Check debug level
@@ -34,20 +37,20 @@ bool LogMessage( const char * Heading, EDebugLevel Level, const char *Message )
}
// Show normal output
if (!Heading) {
printf( "%s\n", Message );
}
else {
printf( "%s: %s\n", Heading, Message );
}
va_start( ArgPtr, Format );
vprintf( Format, ArgPtr );
printf( "\r\n" );
va_end( ArgPtr );
return true;
}
//---------------------------------------------------------------------------
bool ShowOutput( const char * Heading, EDebugLevel Level, const short Show, const char * Buffer, int Len )
bool ShowOutput( EDebugLevel Level, const short Show, const char * Buffer, int Len, const char * Format, ... )
{
va_list ArgPtr;
// Validate values
if (!Buffer)
if (!Buffer || !(Show & (OUT_HEX | OUT_NORMAL)))
return false;
if (Len == -1)
Len = strlen( Buffer );
@@ -57,9 +60,16 @@ bool ShowOutput( const char * Heading, EDebugLevel Level, const short Show, cons
return true;
}
// Show Lead
if (Format && *Format) {
va_start( ArgPtr, Format );
vprintf( Format, ArgPtr );
va_end( ArgPtr );
}
printf( "[%d] ", Len );
// Show Hex output
if (Show & OUT_HEX) {
printf( "%s [%d]: ", Heading, Len );
for (int i=0; i<Len; i++) {
printf( "%02X ", Buffer[i] );
}
@@ -68,7 +78,6 @@ bool ShowOutput( const char * Heading, EDebugLevel Level, const short Show, cons
// Show normal output
if (Show & OUT_NORMAL) {
printf( "%s [%d]: ", Heading, Len );
if (Show & OUT_ASIS) {
printf( "%s", Buffer );
}