~aleteoryx/muditaos

3e57a07b43561d3a787eebc46c17d685a3a66d73 — Adam Dobrowolski 4 years ago 5e74577
[EGD-7495] Fixed log use on Linux to be the same as on Rt1051

- Log headers were incomplete
- Log filtering was broken on linux
M module-os/board/linux/port.c => module-os/board/linux/port.c +6 -0
@@ 915,3 915,9 @@ unsigned long ulPortGetTimerValue( void )
     */
    return ( unsigned long ) xTimes.tms_utime;
}


BaseType_t xPortIsInsideInterrupt(void)
{
    return pdFALSE;
}

M module-os/board/linux/portmacro.h => module-os/board/linux/portmacro.h +2 -0
@@ 180,6 180,8 @@ extern void vPortAddTaskHandle( void *pxTaskHandle );
#define SIG_TICK					SIGPROF
#define TIMER_TYPE					ITIMER_PROF */

BaseType_t xPortIsInsideInterrupt(void);

#ifdef __cplusplus
}
#endif

M module-utils/board/linux/log_linux.cpp => module-utils/board/linux/log_linux.cpp +0 -24
@@ 9,30 9,6 @@

namespace Log
{
    void Logger::addLogHeader(logger_level level, const char *file, int line, const char *function)
    {
        loggerBufferCurrentPos += snprintf(&loggerBuffer[loggerBufferCurrentPos],
                                           LOGGER_BUFFER_SIZE - loggerBufferCurrentPos,
                                           "%d ms ",
                                           cpp_freertos::Ticks::TicksToMs(cpp_freertos::Ticks::GetTicks()));

        loggerBufferCurrentPos += snprintf(&loggerBuffer[loggerBufferCurrentPos],
                                           LOGGER_BUFFER_SIZE - loggerBufferCurrentPos,
                                           "%s%-5s %s%s:%s:%d:%s ",
                                           logColors->levelColors[level].data(),
                                           levelNames[level],
                                           logColors->callerInfoColor.data(),
                                           file,
                                           function,
                                           line,
                                           logColors->resetColor.data());
    }

    bool Logger::filterLogs(logger_level _level)
    {
        return _level >= level;
    }

    void Logger::logToDevice(const char *, va_list)
    {
        assert(false && "Not implemented");

M module-utils/board/rt1051/log_rt1051.cpp => module-utils/board/rt1051/log_rt1051.cpp +0 -37
@@ 9,45 9,8 @@
#include <SEGGER_RTT.h>
#include <ticks.hpp>

/// get string description:
/// - in critical seciton - return CRIT
/// - in interrupt return - IRQ
/// - else return thread name
static inline const char *getTaskDesc()
{
    return xTaskGetCurrentTaskHandle() == nullptr
               ? Log::Logger::CRIT_STR
               : xPortIsInsideInterrupt() ? Log::Logger::IRQ_STR : pcTaskGetName(xTaskGetCurrentTaskHandle());
}

namespace Log
{
    void Logger::addLogHeader(logger_level level, const char *file, int line, const char *function)
    {
        loggerBufferCurrentPos += snprintf(&loggerBuffer[loggerBufferCurrentPos],
                                           loggerBufferSizeLeft(),
                                           "%lu ms ",
                                           cpp_freertos::Ticks::TicksToMs(cpp_freertos::Ticks::GetTicks()));

        loggerBufferCurrentPos += snprintf(&loggerBuffer[loggerBufferCurrentPos],
                                           loggerBufferSizeLeft(),
                                           "%s%-5s %s[%s] %s%s:%s:%d:%s ",
                                           logColors->levelColors[level].data(),
                                           levelNames[level],
                                           logColors->serviceNameColor.data(),
                                           getTaskDesc(),
                                           logColors->callerInfoColor.data(),
                                           file,
                                           function,
                                           line,
                                           logColors->resetColor.data());
    }

    bool Logger::filterLogs(logger_level level)
    {
        return getLogLevel(getTaskDesc()) <= level;
    }

    void Logger::logToDevice(const char *fmt, va_list args)
    {
        loggerBufferCurrentPos = 0;

M module-utils/log/Logger.cpp => module-utils/log/Logger.cpp +36 -0
@@ 7,6 7,8 @@
#include "LockGuard.hpp"
#include <Logger.hpp>
#include <module-utils/Utils.hpp>
#include <portmacro.h>
#include <ticks.hpp>
#include "macros.h"

namespace Log


@@ 213,4 215,38 @@ namespace Log
    {
        file << application;
    }

    const char *getTaskDesc()
    {
        return xTaskGetCurrentTaskHandle() == nullptr ? Log::Logger::CRIT_STR
               : xPortIsInsideInterrupt()             ? Log::Logger::IRQ_STR
                                                      : pcTaskGetName(xTaskGetCurrentTaskHandle());
    }

    bool Logger::filterLogs(logger_level level)
    {
        return getLogLevel(getTaskDesc()) <= level;
    }

    void Logger::addLogHeader(logger_level level, const char *file, int line, const char *function)
    {
        loggerBufferCurrentPos += snprintf(&loggerBuffer[loggerBufferCurrentPos],
                                           LOGGER_BUFFER_SIZE - loggerBufferCurrentPos,
                                           "%" PRIu32 " ms ",
                                           cpp_freertos::Ticks::TicksToMs(cpp_freertos::Ticks::GetTicks()));

        loggerBufferCurrentPos += snprintf(&loggerBuffer[loggerBufferCurrentPos],
                                           LOGGER_BUFFER_SIZE - loggerBufferCurrentPos,
                                           "%s%-5s %s[%s] %s%s:%s:%d:%s ",
                                           logColors->levelColors[level].data(),
                                           levelNames[level],
                                           logColors->serviceNameColor.data(),
                                           getTaskDesc(),
                                           logColors->callerInfoColor.data(),
                                           file,
                                           function,
                                           line,
                                           logColors->resetColor.data());
    }

} // namespace Log

M module-utils/log/Logger.hpp => module-utils/log/Logger.hpp +2 -0
@@ 94,4 94,6 @@ namespace Log
        static const char *levelNames[];
        static std::map<std::string, logger_level> filtered;
    };

    const char *getTaskDesc();
} // namespace Log