blob: b467a56909c0b000cb8160b4b126acee49e8b1a6 [file] [log] [blame]
/* See Project CHIP LICENSE file for licensing information. */
#include <platform/logging/LogV.h>
#include <lib/core/CHIPConfig.h>
#include <platform/CHIPDeviceConfig.h>
#if CHIP_DEVICE_CONFIG_ENABLE_THREAD
#include <openthread/platform/logging.h>
#endif
#include "ti_drivers_config.h"
#include <ti/drivers/UART2.h>
#include <stdio.h>
UART2_Handle sDebugUartHandle;
char sDebugUartBuffer[CHIP_CONFIG_LOG_MESSAGE_MAX_SIZE];
#if MATTER_CC13XX_26XX_PLATFORM_LOG_ENABLED
extern "C" int cc13xx_26xxLogInit(void)
{
UART2_Params uartParams;
UART2_Params_init(&uartParams);
// Most params can be default because we only send data, we don't receive
uartParams.baudRate = 115200;
sDebugUartHandle = UART2_open(CONFIG_UART2_DEBUG, &uartParams);
return 0;
}
extern "C" void cc13xx_26xxVLog(const char * msg, va_list v)
{
int ret;
ret = vsnprintf(sDebugUartBuffer, sizeof(sDebugUartBuffer), msg, v);
if (0 < ret)
{
// PuTTY likes \r\n
size_t len = (ret + 2U) < sizeof(sDebugUartBuffer) ? (ret + 2) : sizeof(sDebugUartBuffer);
sDebugUartBuffer[len - 2] = '\r';
sDebugUartBuffer[len - 1] = '\n';
UART2_write(sDebugUartHandle, sDebugUartBuffer, len, NULL);
}
}
#else
/* log functins defined somewhere else */
extern "C" int cc13xx_26xxLogInit(void);
extern "C" void cc13xx_26xxVLog(const char * msg, va_list v);
#endif // MATTER_CC13XX_26XX_PLATFORM_LOG_ENABLED
namespace chip {
namespace DeviceLayer {
/**
* Called whenever a log message is emitted.
*
* Can be overridden by the device logging file
*/
void __attribute__((weak)) OnLogOutput(void) {}
} // namespace DeviceLayer
} // namespace chip
namespace chip {
namespace Logging {
namespace Platform {
void LogV(const char * module, uint8_t category, const char * msg, va_list v)
{
(void) module;
(void) category;
cc13xx_26xxVLog(msg, v);
chip::DeviceLayer::OnLogOutput();
}
} // namespace Platform
} // namespace Logging
} // namespace chip
#if CHIP_SYSTEM_CONFIG_USE_LWIP
/**
* LwIP log output function.
*/
extern "C" void LwIPLog(const char * msg, ...)
{
va_list v;
va_start(v, msg);
cc13xx_26xxVLog(msg, v);
chip::DeviceLayer::OnLogOutput();
va_end(v);
}
#endif // #if CHIP_SYSTEM_CONFIG_USE_LWIP
/**
* Platform log output function.
*/
extern "C" void cc13xx_26xxLog(const char * msg, ...)
{
va_list v;
va_start(v, msg);
cc13xx_26xxVLog(msg, v);
chip::DeviceLayer::OnLogOutput();
va_end(v);
}
#if CHIP_DEVICE_CONFIG_ENABLE_THREAD
extern "C" void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char * aFormat, ...)
{
va_list v;
(void) aLogLevel;
(void) aLogRegion;
va_start(v, aFormat);
cc13xx_26xxVLog(aFormat, v);
chip::DeviceLayer::OnLogOutput();
va_end(v);
}
#endif // CHIP_DEVICE_CONFIG_ENABLE_THREAD