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:
33
LogCore.cpp
33
LogCore.cpp
@@ -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 );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user