NucleoTNC/TNC/Log.cpp

72 wiersze
1.4 KiB
C++
Czysty Zwykły widok Historia

2018-07-30 02:34:53 +00:00
// Copyright 2015 Rob RIggs <rob@mobilinkd.com>
// All rights reserved.
#include <Log.h>
#include "PortInterface.hpp"
2021-07-09 00:51:38 +00:00
#include <cstdlib>
#include <cstdio>
2018-07-30 02:34:53 +00:00
void log_(int level, const char* fmt, ...)
{
if (level < mobilinkd::tnc::log().level_) return;
if (!mobilinkd::tnc::ioport) return;
va_list args;
va_start(args, fmt);
char* buffer = 0;
int len = vasiprintf(&buffer, fmt, args);
va_end(args);
if (len >= 0) {
mobilinkd::tnc::ioport->write((uint8_t*)buffer, len, 7, 10);
2018-07-30 02:34:53 +00:00
free(buffer);
} else {
mobilinkd::tnc::ioport->write((uint8_t*) "Allocation Error\r\n", 18, 7, 10);
2018-07-30 02:34:53 +00:00
}
}
namespace mobilinkd { namespace tnc {
#ifdef KISS_LOGGING
Log& log(void) {
static Log log(Log::Level::debug);
return log;
}
#endif
2021-07-09 00:51:38 +00:00
#ifdef NUCLEOTNC
2018-07-30 02:34:53 +00:00
void Log::log(Level level, const char* fmt, ...) {
if (level < level_) return;
va_list args;
va_start(args, fmt);
char* buffer = 0;
int len = vasiprintf(&buffer, fmt, args);
va_end(args);
if (len >= 0) {
ioport->write((uint8_t*)buffer, len, 10);
free(buffer);
} else {
ioport->write((uint8_t*) "Allocation Error\r\n", 18, 10);
}
}
#else
void Log::log(Level level, const char* fmt, ...) {
if (level < level_) return;
va_list args;
va_start(args, fmt);
vprintf(fmt, args);
va_end(args);
printf("\r\n");
}
#endif
}} // mobilinkd::tnc