/*
 * 构建配置检测头文件
 * 用于在代码中区分 Debug/Release 构建和串口使用模式
 *
 * 日志：Release 由 menuconfig（LOG_DEFAULT_LEVEL_WARN、ESP_CONSOLE_NONE）裁掉 ESP_LOGI/D；
 *       BLE Release 的 W/E 转发见 link_ble.c。勿在本头文件再包一层 LOG_* 宏。
 */

#ifndef BUILD_CONFIG_H
#define BUILD_CONFIG_H

#include "sdkconfig.h"

/* ========================
 * 编译优化级别检测
 * ======================== */

#if defined(CONFIG_ROBO_APP_FW_RELEASE)
    #define BUILD_IS_RELEASE        1
    #define BUILD_IS_DEBUG          0
    #define BUILD_OPTIMIZATION        "Os"
#else
    #define BUILD_IS_RELEASE        0
    #define BUILD_IS_DEBUG          1
    #define BUILD_OPTIMIZATION        "Og"
#endif

/* ========================
 * 串口模式（精简：Release 走通信，Debug 走调试）
 * ======================== */
#if BUILD_IS_RELEASE
    #define UART_MODE_COMMUNICATION 1
    #define UART_MODE_DEBUG         0
#else
    #define UART_MODE_COMMUNICATION 0
    #define UART_MODE_DEBUG         1
#endif

#ifdef __cplusplus
extern "C" {
#endif

static inline const char *build_get_type(void)
{
    return BUILD_IS_RELEASE ? "Release" : "Debug";
}

static inline const char *build_get_uart_mode(void)
{
    return UART_MODE_COMMUNICATION ? "Communication" : "Debug";
}

#ifdef __cplusplus
}
#endif

#endif /* BUILD_CONFIG_H */
