|
|
|
@ -8,48 +8,57 @@ |
|
|
|
#include <stdarg.h> |
|
|
|
#include <string.h> |
|
|
|
#include <string> |
|
|
|
#include <algorithm> |
|
|
|
|
|
|
|
#include "LogCommand.hpp" |
|
|
|
|
|
|
|
|
|
|
|
void log_debug(const char * format, int nargs, ...) { |
|
|
|
void log_debug(const char * logger_name, const char * format, int nargs, ...) { |
|
|
|
va_list args; |
|
|
|
va_start(args, nargs); |
|
|
|
push_command(new LogCommand(format, args, LOG_LEVEL_DEBUG)); |
|
|
|
push_command(new LogCommand(logger_name, format, args, LOG_LEVEL_DEBUG)); |
|
|
|
va_end(args); |
|
|
|
} |
|
|
|
|
|
|
|
void log_info(const char * format, int nargs, ...) { |
|
|
|
void log_info(const char * logger_name, const char * format, int nargs, ...) { |
|
|
|
va_list args; |
|
|
|
va_start(args, nargs); |
|
|
|
push_command(new LogCommand(format, args, LOG_LEVEL_INFO)); |
|
|
|
push_command(new LogCommand(logger_name, format, args, LOG_LEVEL_INFO)); |
|
|
|
va_end(args); |
|
|
|
} |
|
|
|
|
|
|
|
void log_warning(const char * format, int nargs, ...) { |
|
|
|
void log_warning(const char * logger_name, const char * format, int nargs, ...) { |
|
|
|
va_list args; |
|
|
|
va_start(args, nargs); |
|
|
|
push_command(new LogCommand(format, args, LOG_LEVEL_WARNING)); |
|
|
|
push_command(new LogCommand(logger_name, format, args, LOG_LEVEL_WARNING)); |
|
|
|
va_end(args); |
|
|
|
} |
|
|
|
|
|
|
|
void log_error(const char * format, int nargs, ...) { |
|
|
|
void log_error(const char * logger_name, const char * format, int nargs, ...) { |
|
|
|
va_list args; |
|
|
|
va_start(args, nargs); |
|
|
|
push_command(new LogCommand(format, args, LOG_LEVEL_ERROR)); |
|
|
|
push_command(new LogCommand(logger_name, format, args, LOG_LEVEL_ERROR)); |
|
|
|
va_end(args); |
|
|
|
} |
|
|
|
|
|
|
|
LogCommand::LogCommand( |
|
|
|
const char * logger_name, |
|
|
|
const char * format, |
|
|
|
va_list args, |
|
|
|
LoggingLevel logging_level) : Notification() { |
|
|
|
|
|
|
|
uint16_t max_payload_size = NOTIFICATION_COMMAND_FREE_BUFFER - this->get_payload_size(); |
|
|
|
|
|
|
|
uint8_t logger_name_length = std::min(30, (int)strlen(logger_name)); |
|
|
|
|
|
|
|
this->payload_ptr[0] = logging_level; |
|
|
|
this->payload_ptr[1] = logger_name_length; |
|
|
|
|
|
|
|
char * name = (char *)(this->payload_ptr + 2); |
|
|
|
char * message = (char *)(this->payload_ptr + 2 + logger_name_length); |
|
|
|
uint16_t message_length = max_payload_size - 2 - logger_name_length; |
|
|
|
|
|
|
|
char * message = (char *)(this->payload_ptr + 1); |
|
|
|
vsnprintf(message, max_payload_size - 1, format, args); |
|
|
|
this->add_to_payload_size(strlen(message) + 1); |
|
|
|
memcpy(name, logger_name, logger_name_length); |
|
|
|
vsnprintf(message, message_length, format, args); |
|
|
|
this->add_to_payload_size(strlen(message) + 2 + logger_name_length); |
|
|
|
} |
|
|
|
|