963 lines
38 KiB
C
963 lines
38 KiB
C
/*
|
|
* Copyright (c) @CompanyNameMagicTag 2018-2020. All rights reserved.
|
|
* Description: log printf interface
|
|
* Author: @CompanyNameTag
|
|
* Create: 2018-12-01
|
|
*/
|
|
|
|
/*
|
|
* log example:
|
|
*
|
|
* #define MUX_PRINT_INFO(log_id, fmt, count, args...) \
|
|
* BASE_PRINT_INFO(CONNECT(LOG_OS_MUTEX, log_id), fmt, count, ##args)
|
|
*
|
|
* coding: there must be a param for the count of % in fmt
|
|
* MUX_PRINT_INFO(log_num, "this is an example %d", ONE_ARG, __LINE__);
|
|
*
|
|
*/
|
|
#ifndef LOG_PRINTF_H
|
|
#define LOG_PRINTF_H
|
|
|
|
#include <stdarg.h>
|
|
#include <stdint.h>
|
|
#include "common_def.h"
|
|
#include "chip_definitions.h"
|
|
#include "log_types.h"
|
|
#include "platform_types.h"
|
|
#if (defined (BUILD_APPLICATION_STANDARD) || defined (TEST_SUITE) || CORE == CONTROL_CORE)
|
|
#ifdef SUPPORT_IPC
|
|
#include "ipc_actions.h"
|
|
#endif
|
|
#include "core.h"
|
|
#endif
|
|
|
|
/**
|
|
* @defgroup connectivity_libs_log LOG
|
|
* @ingroup connectivity_libs
|
|
* @{
|
|
*/
|
|
#define BTC_MAGIC_LOG_CODE 0xCBCBA
|
|
#define CONNECT(log_mod, log_id) (((log_mod) << 10) | (log_id))
|
|
|
|
enum log_args_number {
|
|
NO_ARG,
|
|
ONE_ARG,
|
|
TWO_ARG,
|
|
THREE_ARG,
|
|
FOUR_ARG,
|
|
FIVE_ARG,
|
|
SIX_ARG,
|
|
SEVEN_ARG,
|
|
};
|
|
|
|
typedef struct {
|
|
uint32_t log_id : 10;
|
|
uint32_t sub_module : 6;
|
|
uint32_t module : 4;
|
|
uint32_t domain : 4;
|
|
uint32_t reserved : 8;
|
|
} compress_log_code_t;
|
|
|
|
/*
|
|
* + 4 Bits + 4 Bits + 6 Bits +
|
|
* +------------+------------+----------------+
|
|
* | domain | module | sub module |
|
|
* +------------+------------+----------------+
|
|
*/
|
|
#define LOG_DOMAIN_MAX 12 // each core 4 domains
|
|
#define LIB_LOG_MODULE_MAX 16
|
|
#define LOG_SUB_MODULE_MAX 32
|
|
#define log_sub_module_base(domain, module) (((uint32_t)(domain) << 10) | ((uint32_t)(module) << 6))
|
|
|
|
enum log_domain_e {
|
|
LOG_DOMAIN_ACORE_BEGIN = 0,
|
|
LOG_DOMAIN_ACORE_PLT = LOG_DOMAIN_ACORE_BEGIN,
|
|
LOG_DOMAIN_ACORE_DEV,
|
|
LOG_DOMAIN_ACORE_APP,
|
|
LOG_DOMAIN_ACORE_END,
|
|
|
|
LOG_DOMAIN_BCORE_BEGIN = 4,
|
|
LOG_DOMAIN_BCORE_PLT = LOG_DOMAIN_BCORE_BEGIN,
|
|
LOG_DOMAIN_BCORE_BTH,
|
|
LOG_DOMAIN_BCORE_BTC,
|
|
LOG_DOMAIN_BCORE_BTS,
|
|
LOG_DOMAIN_BCORE_END,
|
|
|
|
LOG_DOMAIN_DCORE_BEGIN = 8,
|
|
LOG_DOMAIN_DCORE_END,
|
|
};
|
|
|
|
/* --------------------- module enums --------------------- */
|
|
enum log_domain_acore_plt_module_e {
|
|
LOG_DOMAIN_ACORE_PLT_MODULE_OS,
|
|
LOG_DOMAIN_ACORE_PLT_MODULE_BSP_COMMON,
|
|
LOG_DOMAIN_ACORE_PLT_MODULE_BSP_DRIVER,
|
|
LOG_DOMAIN_ACORE_PLT_MODULE_BSP_LIB,
|
|
LOG_DOMAIN_ACORE_PLT_MODULE_FWK,
|
|
LOG_DOMAIN_ACORE_PLT_MODULE_UTILS,
|
|
LOG_DOMAIN_ACORE_PLT_MODULE_FS,
|
|
LOG_DOMAIN_ACORE_PLT_MODULE_HAUI,
|
|
LOG_DOMAIN_ACORE_PLT_MODULE_MAX,
|
|
};
|
|
|
|
enum log_domain_acore_dev_module_e {
|
|
LOG_DOMAIN_ACORE_DEV_MODULE_AUDIO,
|
|
LOG_DOMAIN_ACORE_DEV_MODULE_BT,
|
|
LOG_DOMAIN_ACORE_DEV_MODULE_SENSORS,
|
|
LOG_DOMAIN_ACORE_DEV_MODULE_MAX,
|
|
};
|
|
|
|
enum log_domain_acore_app_module_e {
|
|
LOG_DOMAIN_ACORE_APP_MODULE_UX,
|
|
LOG_DOMAIN_ACORE_APP_MODULE_MANU,
|
|
LOG_DOMAIN_ACORE_APP_MODULE_FOTA,
|
|
LOG_DOMAIN_ACORE_APP_MODULE_MT,
|
|
LOG_DOMAIN_ACORE_APP_MODULE_POWER,
|
|
LOG_DOMAIN_ACORE_APP_MODULE_LPC,
|
|
LOG_DOMAIN_ACORE_APP_MODULE_SENSORS,
|
|
LOG_DOMAIN_ACORE_APP_MODULE_MAX,
|
|
};
|
|
|
|
enum log_domain_bcore_plt_module_e {
|
|
LOG_DOMAIN_BCORE_PLT_MODULE_DRIVER,
|
|
LOG_DOMAIN_BCORE_PLT_MODULE_LIB,
|
|
LOG_DOMAIN_BCORE_PLT_MODULE_INFO,
|
|
LOG_DOMAIN_BCORE_PLT_MODULE_LPM,
|
|
LOG_DOMAIN_BCORE_PLT_MODULE_MAX,
|
|
};
|
|
|
|
enum log_domain_bcore_bth_module_e {
|
|
LOG_DOMAIN_BCORE_BTH_MODULE_TL_ADAPTER,
|
|
LOG_DOMAIN_BCORE_BTH_MODULE_STACK,
|
|
LOG_DOMAIN_BCORE_BTH_MODULE_STACK_ADAPTER,
|
|
LOG_DOMAIN_BCORE_BTH_MODULE_SERVICE,
|
|
LOG_DOMAIN_BCORE_BTH_MODULE_MAX,
|
|
};
|
|
|
|
enum log_domain_bcore_btc_module_e {
|
|
LOG_DOMAIN_BCORE_BTC_MODULE_NORMAL,
|
|
LOG_DOMAIN_BCORE_BTC_MODULE_STATE,
|
|
LOG_DOMAIN_BCORE_BTC_MODULE_MESG,
|
|
LOG_DOMAIN_BCORE_BTC_MODULE_MAX,
|
|
};
|
|
|
|
enum log_domain_bcore_bts_module_e {
|
|
LOG_DOMAIN_BCORE_BTS_MODULE_WEAR,
|
|
LOG_DOMAIN_BCORE_BTS_MODULE_MAX,
|
|
};
|
|
|
|
/* --------------------- sub module enums --------------------- */
|
|
enum log_domain_acore_plt_module_os_sub_mudole_e {
|
|
LOG_ACORE_PLT_OS_BEGIN = log_sub_module_base(LOG_DOMAIN_ACORE_PLT, LOG_DOMAIN_ACORE_PLT_MODULE_OS),
|
|
LOG_OS_TASK = LOG_ACORE_PLT_OS_BEGIN,
|
|
LOG_OS_TIMER,
|
|
LOG_OS_MUTEX,
|
|
LOG_OS_SEM,
|
|
LOG_OS_MAIL,
|
|
LOG_OS_MEM,
|
|
LOG_ACORE_PLT_OS_END,
|
|
};
|
|
|
|
enum log_domain_acore_plt_module_bsp_common_sub_mudole_e {
|
|
LOG_ACORE_PLT_BSP_COMMON_BEGIN = log_sub_module_base(LOG_DOMAIN_ACORE_PLT, LOG_DOMAIN_ACORE_PLT_MODULE_BSP_COMMON),
|
|
LOG_ACORE_PLT_BSP = LOG_ACORE_PLT_BSP_COMMON_BEGIN,
|
|
LOG_ACORE_PLT_BSP_COMMON_END,
|
|
};
|
|
|
|
enum log_domain_acore_plt_module_bsp_driver_sub_mudole_e {
|
|
LOG_ACORE_PLT_BSP_DRIVER_BEGIN = log_sub_module_base(LOG_DOMAIN_ACORE_PLT, LOG_DOMAIN_ACORE_PLT_MODULE_BSP_DRIVER),
|
|
LOG_ACORE_PLT_BSP_DRIVER_CLOCK = LOG_ACORE_PLT_BSP_DRIVER_BEGIN,
|
|
LOG_ACORE_PLT_BSP_DRIVER_DMA,
|
|
LOG_ACORE_PLT_BSP_DRIVER_EFLASH,
|
|
LOG_ACORE_PLT_BSP_DRIVER_I2C,
|
|
LOG_ACORE_PLT_BSP_DRIVER_SPI,
|
|
LOG_ACORE_PLT_BSP_DRIVER_UART,
|
|
LOG_ACORE_PLT_BSP_DRIVER_XIP,
|
|
LOG_ACORE_PLT_BSP_DRIVER_ADC,
|
|
LOG_ACORE_PLT_BSP_DRIVER_CAPSENSOR,
|
|
LOG_ACORE_PLT_BSP_DRIVER_GPIO,
|
|
LOG_ACORE_PLT_BSP_DRIVER_IPC,
|
|
LOG_ACORE_PLT_BSP_DRIVER_LPC,
|
|
LOG_ACORE_PLT_BSP_DRIVER_MEM,
|
|
LOG_ACORE_PLT_BSP_DRIVER_MPU,
|
|
LOG_ACORE_PLT_BSP_DRIVER_OTP,
|
|
LOG_ACORE_PLT_BSP_DRIVER_PMU,
|
|
LOG_ACORE_PLT_BSP_DRIVER_PWM,
|
|
LOG_ACORE_PLT_BSP_DRIVER_QSPI,
|
|
LOG_ACORE_PLT_BSP_DRIVER_REBOOT,
|
|
LOG_ACORE_PLT_BSP_DRIVER_RTC,
|
|
LOG_ACORE_PLT_BSP_DRIVER_SYSSTATUS,
|
|
LOG_ACORE_PLT_BSP_DRIVER_SYSTICK,
|
|
LOG_ACORE_PLT_BSP_DRIVER_TCXO,
|
|
LOG_ACORE_PLT_BSP_DRIVER_TIMER,
|
|
LOG_ACORE_PLT_BSP_DRIVER_TSENSOR,
|
|
LOG_ACORE_PLT_BSP_DRIVER_WATCHDOG,
|
|
LOG_ACORE_PLT_BSP_DRIVER_END,
|
|
};
|
|
|
|
enum log_domain_acore_plt_module_bsp_lib_sub_mudole_e {
|
|
LOG_ACORE_PLT_BSP_LIB_BEGIN = log_sub_module_base(LOG_DOMAIN_ACORE_PLT, LOG_DOMAIN_ACORE_PLT_MODULE_BSP_LIB),
|
|
LOG_ACORE_PLT_BSP_LIB_LOG = LOG_ACORE_PLT_BSP_LIB_BEGIN,
|
|
LOG_ACORE_PLT_BSP_LIB_CHR,
|
|
LOG_ACORE_PLT_BSP_LIB_RPC,
|
|
LOG_ACORE_PLT_BSP_LIB_UTILS,
|
|
LOG_ACORE_PLT_BSP_LIB_CONNECTIVITY,
|
|
LOG_ACORE_PLT_BSP_INFO_STACK,
|
|
LOG_ACORE_PLT_BSP_INFO_HEAP,
|
|
LOG_ACORE_PLT_BSP_LPM_SLEEP,
|
|
LOG_ACORE_PLT_BSP_LPM_VETO,
|
|
LOG_ACORE_PLT_BSP_LPM_SWITCH_CLK,
|
|
LOG_ACORE_PLT_BSP_LPM_WFI,
|
|
LOG_ACORE_PLT_BSP_LIB_END,
|
|
};
|
|
|
|
enum log_domain_acore_plt_module_fwk_sub_mudole_e {
|
|
LOG_ACORE_PLT_FWK_BEGIN = log_sub_module_base(LOG_DOMAIN_ACORE_PLT, LOG_DOMAIN_ACORE_PLT_MODULE_FWK),
|
|
LOG_FWK_COMMON = LOG_ACORE_PLT_FWK_BEGIN,
|
|
LOG_FWK_COMMU,
|
|
LOG_FWK_AM,
|
|
LOG_FWK_DM,
|
|
LOG_FWK_MISC_DEV,
|
|
LOG_FWK_MISC_SYS,
|
|
LOG_FWK_FDT_GPIO,
|
|
LOG_ACORE_PLT_FWK_END,
|
|
};
|
|
|
|
enum log_domain_acore_plt_module_utils_sub_mudole_e {
|
|
LOG_ACORE_PLT_UTILS_BEGIN = log_sub_module_base(LOG_DOMAIN_ACORE_PLT, LOG_DOMAIN_ACORE_PLT_MODULE_UTILS),
|
|
LOG_ACORE_PLT_UTILS_COMMON = LOG_ACORE_PLT_UTILS_BEGIN,
|
|
LOG_ACORE_PLT_UTILS_HELP_CODE,
|
|
LOG_ACORE_PLT_UTILS_INICONFIG,
|
|
LOG_ACORE_PLT_UTILS_PROPERTY,
|
|
LOG_ACORE_PLT_UTILS_DAEMON,
|
|
LOG_ACORE_PLT_UTILS_SHELL,
|
|
LOG_ACORE_PLT_UTILS_CIRCLE_QUEUE,
|
|
LOG_ACORE_PLT_UTILS_FILE_EXTEND,
|
|
LOG_ACORE_PLT_UTILS_FLASH_EXTEND,
|
|
LOG_ACORE_PLT_UTILS_EFUSE_EXTEND,
|
|
LOG_ACORE_PLT_UTILS_SAFE_MODE,
|
|
LOG_ACORE_PLT_UTILS_KVFS,
|
|
LOG_ACORE_PLT_UTILS_FDT,
|
|
LOG_ACORE_PLT_UTILS_END,
|
|
};
|
|
|
|
enum log_domain_acore_plt_module_fs_sub_mudole_e {
|
|
LOG_ACORE_PLT_FS_BEGIN = log_sub_module_base(LOG_DOMAIN_ACORE_PLT, LOG_DOMAIN_ACORE_PLT_MODULE_FS),
|
|
LOG_ACORE_PLT_FS = LOG_ACORE_PLT_FS_BEGIN,
|
|
LOG_ACORE_PLT_FS_END,
|
|
};
|
|
|
|
enum log_domain_acore_plt_module_haui_sub_mudole_e {
|
|
LOG_ACORE_PLT_HAUI_BEGIN = log_sub_module_base(LOG_DOMAIN_ACORE_PLT, LOG_DOMAIN_ACORE_PLT_MODULE_HAUI),
|
|
LOG_ACORE_PLT_HAUI_SECURE = LOG_ACORE_PLT_HAUI_BEGIN,
|
|
LOG_ACORE_PLT_HAUI_AES,
|
|
LOG_ACORE_PLT_HAUI_END,
|
|
};
|
|
|
|
enum log_domain_acore_dev_module_audio_sub_mudole_e {
|
|
LOG_ACORE_DEV_AUDIO_BEGIN = log_sub_module_base(LOG_DOMAIN_ACORE_DEV, LOG_DOMAIN_ACORE_DEV_MODULE_AUDIO),
|
|
LOG_ACORE_DRV = LOG_ACORE_DEV_AUDIO_BEGIN,
|
|
LOG_ACORE_DEV_AUDIO_END,
|
|
};
|
|
|
|
enum log_domain_acore_dev_module_bt_sub_mudole_e {
|
|
LOG_ACORE_DEV_BT_BEGIN = log_sub_module_base(LOG_DOMAIN_ACORE_DEV, LOG_DOMAIN_ACORE_DEV_MODULE_BT),
|
|
LOG_ACORE_DRV_BT,
|
|
LOG_ACORE_DEV_BT_END,
|
|
};
|
|
|
|
enum log_domain_acore_dev_module_sensors_sub_mudole_e {
|
|
LOG_ACORE_DEV_SENSORS_BEGIN = log_sub_module_base(LOG_DOMAIN_ACORE_DEV, LOG_DOMAIN_ACORE_DEV_MODULE_SENSORS),
|
|
LOG_ACORE_DRV_SENSORS = LOG_ACORE_DEV_SENSORS_BEGIN,
|
|
LOG_ACORE_DRV_GSENSOR,
|
|
LOG_ACORE_DRV_PSENSOR,
|
|
LOG_ACORE_DRV_CAPSENSOR,
|
|
LOG_ACORE_DRV_VKSENSOR,
|
|
LOG_ACORE_DRV_CAPPRESSSENSOR,
|
|
LOG_ACORE_DEV_SENSORS_END,
|
|
};
|
|
|
|
enum log_domain_acore_app_module_ux_sub_mudole_e {
|
|
LOG_ACORE_APP_UX_BEGIN = log_sub_module_base(LOG_DOMAIN_ACORE_APP, LOG_DOMAIN_ACORE_APP_MODULE_UX),
|
|
LOG_ACORE_APP_UX_COMMON = LOG_ACORE_APP_UX_BEGIN,
|
|
LOG_ACORE_APP_UX_AUDIO,
|
|
LOG_ACORE_APP_UX_BT,
|
|
LOG_ACORE_APP_UX_CONFIG,
|
|
LOG_ACORE_APP_UX_MANAGER,
|
|
LOG_ACORE_APP_UX_BOX,
|
|
LOG_ACORE_APP_UX_CHARGE,
|
|
LOG_ACORE_APP_UX_SENSOR,
|
|
LOG_ACORE_APP_UX_SPP,
|
|
LOG_ACORE_APP_UX_SECURE,
|
|
LOG_ACORE_APP_UX_MULTIPLE_DEVICE,
|
|
LOG_ACORE_APP_UX_END,
|
|
};
|
|
|
|
enum log_domain_acore_app_module_manu_sub_mudole_e {
|
|
LOG_ACORE_APP_MANU_BEGIN = log_sub_module_base(LOG_DOMAIN_ACORE_APP, LOG_DOMAIN_ACORE_APP_MODULE_MANU),
|
|
LOG_ACORE_APP_MANU_COMMON = LOG_ACORE_APP_MANU_BEGIN,
|
|
LOG_ACORE_APP_MANU_AT_TEST,
|
|
LOG_ACORE_APP_MANU_AGE_TEST,
|
|
LOG_ACORE_APP_MANU_PLAFTORM_TEST,
|
|
LOG_ACORE_APP_MANU_END,
|
|
};
|
|
|
|
enum log_domain_acore_app_module_fota_sub_mudole_e {
|
|
LOG_ACORE_APP_FOTA_BEGIN = log_sub_module_base(LOG_DOMAIN_ACORE_APP, LOG_DOMAIN_ACORE_APP_MODULE_FOTA),
|
|
LOG_ACORE_APP_FOTA_COMMON = LOG_ACORE_APP_FOTA_BEGIN,
|
|
LOG_FOTA_MAIN,
|
|
LOG_FOTA_MBB,
|
|
LOG_FOTA_PACKAGE,
|
|
LOG_FOTA_LINKER,
|
|
LOG_FOTA_SIGN,
|
|
LOG_FOTA_NOTIF,
|
|
LOG_FOTA_PORT,
|
|
LOG_FOTA_TRANSPROT,
|
|
LOG_ACORE_APP_FOTA_END,
|
|
};
|
|
|
|
enum log_domain_acore_app_module_mt_sub_mudole_e {
|
|
LOG_ACORE_APP_MT_BEGIN = log_sub_module_base(LOG_DOMAIN_ACORE_APP, LOG_DOMAIN_ACORE_APP_MODULE_MT),
|
|
LOG_ACORE_APP_MT_COMMON = LOG_ACORE_APP_MT_BEGIN,
|
|
LOG_ACORE_APP_MT_LOG_CONFIG,
|
|
LOG_ACORE_APP_MT_MASTER,
|
|
LOG_ACORE_APP_MT_SLAVE,
|
|
LOG_ACORE_APP_MT_BOX,
|
|
LOG_ACORE_APP_MASS_UPLOAD,
|
|
LOG_ACORE_APP_FILE_TRANS,
|
|
LOG_ACORE_APP_MT_END,
|
|
};
|
|
|
|
enum log_domain_acore_app_module_power_sub_mudole_e {
|
|
LOG_ACORE_APP_POWER_BEGIN = log_sub_module_base(LOG_DOMAIN_ACORE_APP, LOG_DOMAIN_ACORE_APP_MODULE_POWER),
|
|
LOG_ACORE_APP_POWER = LOG_ACORE_APP_POWER_BEGIN,
|
|
LOG_ACORE_APP_POWER_CHARGER,
|
|
LOG_ACORE_APP_POWER_FUELGAUGE,
|
|
LOG_ACORE_APP_POWER_BATTERY,
|
|
LOG_ACORE_APP_POWER_END,
|
|
};
|
|
|
|
enum log_domain_acore_app_module_lpc_sub_mudole_e {
|
|
LOG_ACORE_APP_LPC_BEGIN = log_sub_module_base(LOG_DOMAIN_ACORE_APP, LOG_DOMAIN_ACORE_APP_MODULE_LPC),
|
|
LOG_ACORE_APP_LPC = LOG_ACORE_APP_LPC_BEGIN,
|
|
LOG_ACORE_APP_LPC_END,
|
|
};
|
|
|
|
enum log_domain_acore_app_module_sensors_sub_mudole_e {
|
|
LOG_ACORE_APP_SENSORS_BEGIN = log_sub_module_base(LOG_DOMAIN_ACORE_APP, LOG_DOMAIN_ACORE_APP_MODULE_SENSORS),
|
|
LOG_ACORE_APP_BASIC_SENSORS = LOG_ACORE_APP_SENSORS_BEGIN,
|
|
LOG_ACORE_APP_GESTURE,
|
|
LOG_ACORE_APP_WEAR,
|
|
LOG_ACORE_APP_PRESS,
|
|
LOG_ACORE_APP_SENSORS_END,
|
|
};
|
|
|
|
enum log_domain_bcore_plt_module_driver_sub_mudole_e {
|
|
LOG_BCORE_PLT_DRIVER_BEGIN = log_sub_module_base(LOG_DOMAIN_BCORE_PLT, LOG_DOMAIN_BCORE_PLT_MODULE_DRIVER),
|
|
LOG_BCORE_PLT = LOG_BCORE_PLT_DRIVER_BEGIN,
|
|
LOG_BCORE_PLT_DRIVER_CLOCK,
|
|
LOG_BCORE_PLT_DRIVER_DMA,
|
|
LOG_BCORE_PLT_DRIVER_EFLASH,
|
|
LOG_BCORE_PLT_DRIVER_I2C,
|
|
LOG_BCORE_PLT_DRIVER_SPI,
|
|
LOG_BCORE_PLT_DRIVER_UART,
|
|
LOG_BCORE_PLT_DRIVER_XIP,
|
|
LOG_BCORE_PLT_DRIVER_ADC,
|
|
LOG_BCORE_PLT_DRIVER_CAPSENSOR,
|
|
LOG_BCORE_PLT_DRIVER_GPIO,
|
|
LOG_BCORE_PLT_DRIVER_IPC,
|
|
LOG_BCORE_PLT_DRIVER_LPC,
|
|
LOG_BCORE_PLT_DRIVER_MEM,
|
|
LOG_BCORE_PLT_DRIVER_MPU,
|
|
LOG_BCORE_PLT_DRIVER_OTP,
|
|
LOG_BCORE_PLT_DRIVER_PMU,
|
|
LOG_BCORE_PLT_DRIVER_PWM,
|
|
LOG_BCORE_PLT_DRIVER_QSPI,
|
|
LOG_BCORE_PLT_DRIVER_REBOOT,
|
|
LOG_BCORE_PLT_DRIVER_RTC,
|
|
LOG_BCORE_PLT_DRIVER_SYSSTATUS,
|
|
LOG_BCORE_PLT_DRIVER_SYSTICK,
|
|
LOG_BCORE_PLT_DRIVER_TCXO,
|
|
LOG_BCORE_PLT_DRIVER_TIMER,
|
|
LOG_BCORE_PLT_DRIVER_TSENSOR,
|
|
LOG_BCORE_PLT_DRIVER_WATCHDOG,
|
|
LOG_BCORE_PLT_DRIVER_IR,
|
|
LOG_BCORE_PLT_DRIVER_END,
|
|
};
|
|
|
|
enum log_domain_bcore_plt_module_lib_sub_mudole_e {
|
|
LOG_BCORE_PLT_LIB_BEGIN = log_sub_module_base(LOG_DOMAIN_BCORE_PLT, LOG_DOMAIN_BCORE_PLT_MODULE_LIB),
|
|
LOG_BCORE_PLT_LIB_LOG = LOG_BCORE_PLT_LIB_BEGIN,
|
|
LOG_BCORE_PLT_LIB_RPC,
|
|
LOG_BCORE_PLT_LIB_UTILS,
|
|
LOG_BCORE_PLT_LIB_CONNECTIVITY,
|
|
LOG_BCORE_PLT_LIB_PANIC,
|
|
LOG_BCORE_PLT_LIB_END,
|
|
};
|
|
|
|
enum log_domain_bcore_plt_module_info_sub_mudole_e {
|
|
LOG_BCORE_PLT_INFO_BEGIN = log_sub_module_base(LOG_DOMAIN_BCORE_PLT, LOG_DOMAIN_BCORE_PLT_MODULE_LPM),
|
|
LOG_BCORE_PLT_INFO_STACK = LOG_BCORE_PLT_INFO_BEGIN,
|
|
LOG_BCORE_PLT_INFO_HEAP,
|
|
LOG_BCORE_PLT_INFO_TRACE,
|
|
LOG_BCORE_PLT_INFO_CPU_CLK,
|
|
LOG_BCORE_PLT_INFO_CODEC_REG,
|
|
LOG_BCORE_PLT_INFO_RST,
|
|
LOG_BCORE_PLT_INFO_OS,
|
|
LOG_BCORE_PLT_INFO_SYS,
|
|
LOG_BCORE_PLT_INFO_END,
|
|
};
|
|
|
|
enum log_domain_bcore_plt_module_lpm_sub_mudole_e {
|
|
LOG_BCORE_PLT_LPM_BEGIN = log_sub_module_base(LOG_DOMAIN_BCORE_PLT, LOG_DOMAIN_BCORE_PLT_MODULE_LPM),
|
|
LOG_BCORE_PLT_LPM = LOG_BCORE_PLT_LPM_BEGIN,
|
|
LOG_BCORE_PLT_LPM_SLEEP,
|
|
LOG_BCORE_PLT_LPM_VETO,
|
|
LOG_BCORE_PLT_LPM_SWITCH_CLK,
|
|
LOG_BCORE_PLT_LPM_WFI,
|
|
LOG_BCORE_PLT_LPM_CODEC_POWER,
|
|
LOG_BCORE_PLT_LPM_DSP_POWER,
|
|
LOG_BCORE_PLT_LPM_CLK0_OUTPUT,
|
|
LOG_BCORE_PLT_LPM_I2S_CLK,
|
|
LOG_BCORE_PLT_LPM_MAX,
|
|
LOG_BCORE_PLT_LPM_END,
|
|
};
|
|
|
|
enum log_domain_bcore_bth_module_tl_adapter_sub_mudole_e {
|
|
LOG_BTH_TL_ADAPTER_BEGIN = log_sub_module_base(LOG_DOMAIN_BCORE_BTH, LOG_DOMAIN_BCORE_BTH_MODULE_TL_ADAPTER),
|
|
LOG_BTH_H2C = LOG_BTH_TL_ADAPTER_BEGIN,
|
|
LOG_BTH_C2H,
|
|
LOG_BTH_TL_ADAPTER_END,
|
|
};
|
|
|
|
enum log_domain_bcore_bth_module_stack_sub_mudole_e {
|
|
LOG_BTH_STACK_BEGIN = log_sub_module_base(LOG_DOMAIN_BCORE_BTH, LOG_DOMAIN_BCORE_BTH_MODULE_STACK),
|
|
LOG_BTH_STACK_GAP = LOG_BTH_STACK_BEGIN,
|
|
LOG_BTH_STACK_SDP,
|
|
LOG_BTH_STACK_SMP,
|
|
LOG_BTH_STACK_A2DP,
|
|
LOG_BTH_STACK_HFP,
|
|
LOG_BTH_STACK_AVRCP,
|
|
LOG_BTH_STACK_SPP,
|
|
LOG_BTH_STACK_GATT,
|
|
LOG_BTH_STACK_AVDTP,
|
|
LOG_BTH_STACK_AVCTP,
|
|
LOG_BTH_STACK_RFCOMM,
|
|
LOG_BTH_STACK_L2CAP,
|
|
LOG_BTH_STACK_HCI,
|
|
LOG_BTH_STACK_ASCP,
|
|
LOG_BTH_STACK_ASMP,
|
|
LOG_BTH_STACK_JITWS,
|
|
LOG_BTH_STACK_SOCTWS,
|
|
LOG_BTH_STACK_DADP,
|
|
LOG_BTH_STACK_FSM,
|
|
LOG_BTH_STACK_COMMON,
|
|
LOG_BTH_STACK_END,
|
|
};
|
|
|
|
enum log_domain_bcore_bth_module_stack_adapter_sub_mudole_e {
|
|
LOG_BTH_STACK_ADPATER_BEGIN = log_sub_module_base(LOG_DOMAIN_BCORE_BTH, LOG_DOMAIN_BCORE_BTH_MODULE_STACK_ADAPTER),
|
|
LOG_BTH_GAP_ADAPTER = LOG_BTH_STACK_ADPATER_BEGIN,
|
|
LOG_BTH_A2DP_ADAPTER,
|
|
LOG_BTH_HFP_ADAPTER,
|
|
LOG_BTH_AVRCP_ADAPTER,
|
|
LOG_BTH_SPP_ADAPTER,
|
|
LOG_BTH_SOCTWS_ADAPTER,
|
|
LOG_BTH_JITWS_ADAPTER,
|
|
LOG_BTH_STACK_ADPATER_END,
|
|
};
|
|
|
|
enum log_domain_bcore_bth_module_service_sub_mudole_e {
|
|
LOG_BTH_SERVICE_BEGIN = log_sub_module_base(LOG_DOMAIN_BCORE_BTH, LOG_DOMAIN_BCORE_BTH_MODULE_SERVICE),
|
|
LOG_BTH_SERVICE_GAP_SERVICE = LOG_BTH_SERVICE_BEGIN,
|
|
LOG_BTH_SERVICE_PROFILE_SERVICE,
|
|
LOG_BTH_SERVICE_CONN_MGR,
|
|
LOG_BTH_SERVICE_SOCTWS_MGR,
|
|
LOG_BTH_SERVICE_JITWS_MGR,
|
|
LOG_BTH_SERVICE_TWS_MGR,
|
|
LOG_BTH_SERVICE_DTS_MGR,
|
|
LOG_BTH_SERVICE_DATA_MGR,
|
|
LOG_BTH_SERVICE_UX_ADPATER,
|
|
LOG_BTH_SERVICE_NEARBY,
|
|
LOG_BTH_SERVICE_ICARRY,
|
|
LOG_BTH_SERVICE_SPA,
|
|
LOG_BTH_SERVICE_IPC,
|
|
LOG_BTH_SERVICE_FACTORY,
|
|
LOG_BTH_SERVICE_GATT_MGR,
|
|
LOG_BTH_SERVICE_END,
|
|
};
|
|
|
|
enum log_domain_bcore_btc_module_normal_sub_mudole_e {
|
|
LOG_BTC_NORMAL_BEGIN = log_sub_module_base(LOG_DOMAIN_BCORE_BTC, LOG_DOMAIN_BCORE_BTC_MODULE_NORMAL),
|
|
LOG_BCORE_BTC = LOG_BTC_NORMAL_BEGIN,
|
|
LOG_BTC_BT_COMMON,
|
|
LOG_BTC_BLE,
|
|
LOG_BTC_ACL,
|
|
LOG_BTC_WLCOEX,
|
|
LOG_BTC_SCO,
|
|
LOG_BTC_WBS,
|
|
LOG_BTC_RS,
|
|
LOG_BTC_SNIFF,
|
|
LOG_BTC_IRQ,
|
|
LOG_BTC_DATA,
|
|
LOG_BTC_SLEEP,
|
|
LOG_BTC_CLOSEME,
|
|
LOG_BTC_CHNLSCAN,
|
|
LOG_BTC_EA,
|
|
LOG_BTC_NORMAL_END,
|
|
};
|
|
|
|
enum log_domain_bcore_btc_module_state_sub_mudole_e {
|
|
LOG_BTC_STATE_BEGIN = log_sub_module_base(LOG_DOMAIN_BCORE_BTC, LOG_DOMAIN_BCORE_BTC_MODULE_STATE),
|
|
BT_STATE_GET_ID = LOG_BTC_STATE_BEGIN,
|
|
BT_STATE_SET_ID,
|
|
BT_SAVED_STATE_ID,
|
|
LOG_BTC_STATE_END,
|
|
};
|
|
|
|
enum log_domain_bcore_btc_module_mesg_sub_mudole_e {
|
|
LOG_BTC_MESG_BEGIN = log_sub_module_base(LOG_DOMAIN_BCORE_BTC, LOG_DOMAIN_BCORE_BTC_MODULE_MESG),
|
|
BTC_BT_MESGID = LOG_BTC_MESG_BEGIN,
|
|
BTC_BT_HCI_EVT,
|
|
BTC_BT_HCI_CMD,
|
|
BTC_BT_SC_CHK,
|
|
BTC_BT_FEAT_GET,
|
|
BTC_BT_LMP_RX_NOR,
|
|
BTC_BT_LMP_RX_EXT,
|
|
BTC_BT_LMP_TX_NOR,
|
|
BTC_BT_LMP_TX_EXT,
|
|
BTC_BT_ACC_GET,
|
|
BTC_BT_ACC_NOT_GET,
|
|
BTC_BT_ACC_EXT_GET,
|
|
BTC_BT_ACC_NOT_EXT_GET,
|
|
BTC_BT_TX_CFM_OP_GET,
|
|
BTC_BT_TX_CFM_EXTOP_GET,
|
|
BTC_BLE_HCI_EVENT,
|
|
BTC_BLE_LLD_RX,
|
|
BTC_BLE_LLCP_RX,
|
|
BTC_BLE_LLCP_TX,
|
|
BTC_BT_CIRCLE_COUNT,
|
|
BTC_BT_CIRCLE_COUNT2,
|
|
LOG_BTC_MESG_END,
|
|
};
|
|
|
|
enum log_domain_bcore_bts_module_wear_sub_mudole_e {
|
|
LOG_BTS_WEAR_BEGIN = log_sub_module_base(LOG_DOMAIN_BCORE_BTS, LOG_DOMAIN_BCORE_BTS_MODULE_WEAR),
|
|
BTS_WEAR_HFP = LOG_BTS_WEAR_BEGIN,
|
|
BTS_WEAR_DEV,
|
|
BTS_WEAR_GDK,
|
|
BTS_WEAR_CONFIG,
|
|
BTS_WEAR_COMMON,
|
|
BTS_WEAR_MPC,
|
|
BTS_WEAR_PBAP,
|
|
BTS_WEAR_A2DP,
|
|
BTS_WEAR_AVRCP,
|
|
BTS_WEAR_SPP,
|
|
BTS_WEAR_IAP,
|
|
BTS_WEAR_IOT,
|
|
BTS_WEAR_BR_SAIS,
|
|
BTS_WEAR_VENDOR,
|
|
BTS_WEAR_BR_CONN_MGR,
|
|
BTS_WEAR_PERIPHERAL_MGR,
|
|
BTS_WEAR_DATA_ROUTE,
|
|
BTS_WEAR_ADV,
|
|
BTS_WEAR_BLE_CONN_MGR,
|
|
BTS_WEAR_BLE_SAIS,
|
|
BTS_WEAR_ALIPAY,
|
|
BTS_WEAR_ANCS,
|
|
BTS_WEAR_AMS,
|
|
BTS_WEAR_HID,
|
|
BTS_WEAR_SOCECHO_SRV,
|
|
BTS_WEAR_BTIF,
|
|
LOG_BTS_WEAR_END,
|
|
};
|
|
|
|
uint32_t get_chr_basegmt_s(void);
|
|
void set_chr_basegmt_s(uint32_t t);
|
|
uint64_t get_log_basetime_ms(void);
|
|
|
|
#if (defined (BUILD_APPLICATION_STANDARD) || defined (TEST_SUITE))
|
|
#if CORE == APPS
|
|
void set_log_time(uint32_t rtc_time_s);
|
|
#else
|
|
#ifdef IPC_NEW
|
|
#else
|
|
bool set_log_time_action_handler(ipc_action_t message, const volatile ipc_payload *payload_p, cores_t src, uint32_t id);
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#if (USE_COMPRESS_LOG_INSTEAD_OF_SDT_LOG == YES)
|
|
/*
|
|
* + 4 Bits + 4 Bits + 6 Bits + 10 Bits + 4 Bits + 4 Bits +
|
|
* +--------------+--------------+------------------+----------+-------------+--------------+
|
|
* | log_domain | log_module | log_sub_module | log_id | | |
|
|
* |--------------+--------------+------------------+----------| log_lvl | args_count |
|
|
* | log_code<24 Bits> | | |
|
|
* +-----------------------------------------------------------+-------------+--------------+
|
|
*/
|
|
#define press_params(log_code, log_lvl, args_count) \
|
|
(((uint32_t)(log_code) << 8) | ((uint32_t)(log_lvl) << 4) | (uint32_t)(args_count))
|
|
#define get_log_code(log_header) (((log_header) >> 8) & 0xFFFFFF)
|
|
#define get_log_domain(log_header) (((log_header) >> 28) & 0xF)
|
|
#define get_log_module(log_header) (((log_header) >> 24) & 0xF)
|
|
#define get_log_sub_module(log_header) (((log_header) >> 18) & 0x3F)
|
|
#define get_log_id(log_header) (((log_header) >> 8) & 0x3FF)
|
|
#define get_log_lvl(log_header) (((log_header) >> 4) & 0xF)
|
|
#define get_log_args_cnt(log_header) ((log_header) & 0xF)
|
|
|
|
#define link_line(text1, text2) (text1##text2)
|
|
#define str_name(text) (link_line(text, __LINE__))
|
|
|
|
#ifndef BUILD_IN_ROM
|
|
#define BASE_PRINT_WITH_MODULE(log_mod, log_id, log_lvl, fmt, args_count, args...) \
|
|
do {__attribute__((used, section(".logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_params(CONNECT(log_mod, log_id), log_lvl, args_count), ##args); \
|
|
} while (0)
|
|
#define BASE_PRINT(log_code, log_lvl, fmt, args_count, args...) \
|
|
do {__attribute__((used, section(".logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_params(log_code, log_lvl, args_count), ##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_NON_COMPRESS(log_code, log_lvl, fmt, args_count, args...)
|
|
#define BASE_PRINT_ERR(log_code, fmt, args_count, args...) \
|
|
do {__attribute__((used, section(".logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_params(log_code, LOG_LEVEL_ERROR, args_count), ##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_WARN(log_code, fmt, args_count, args...) \
|
|
do {__attribute__((used, section(".logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_params(log_code, LOG_LEVEL_WARNING, args_count), ##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_INFO(log_code, fmt, args_count, args...) \
|
|
do {__attribute__((used, section(".logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_params(log_code, LOG_LEVEL_INFO, args_count), ##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_DEBUG(log_code, fmt, args_count, args...) \
|
|
do {__attribute__((used, section(".logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_params(log_code, LOG_LEVEL_DBG, args_count), ##args); \
|
|
} while (0)
|
|
|
|
#define BASE_PRINT_BTC_INFO0(fmt, args...) \
|
|
do {__attribute__((used, section(".logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_btc_info0((uint32_t)(uintptr)str_name(LOGSTR), ##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_BTC_INFO1(fmt, args...) \
|
|
do {__attribute__((used, section(".logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_btc_info1((uint32_t)(uintptr)str_name(LOGSTR), ##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_BTC_INFO2(fmt, args...) \
|
|
do {__attribute__((used, section(".logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_btc_info2((uint32_t)(uintptr)str_name(LOGSTR), ##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_BTC_INFO3(fmt, args...) \
|
|
do {__attribute__((used, section(".logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_btc_info3((uint32_t)(uintptr)str_name(LOGSTR), ##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_BTC_INFO4(fmt, args...) \
|
|
do {__attribute__((used, section(".logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_btc_info4((uint32_t)(uintptr)str_name(LOGSTR), ##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_BTC_WARN0(fmt, args...) \
|
|
do {__attribute__((used, section(".logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_btc_warn0((uint32_t)(uintptr)str_name(LOGSTR), ##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_BTC_WARN1(fmt, args...) \
|
|
do {__attribute__((used, section(".logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_btc_warn1((uint32_t)(uintptr)str_name(LOGSTR), ##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_BTC_WARN2(fmt, args...) \
|
|
do {__attribute__((used, section(".logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_btc_warn2((uint32_t)(uintptr)str_name(LOGSTR), ##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_BTC_WARN3(fmt, args...) \
|
|
do {__attribute__((used, section(".logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_btc_warn3((uint32_t)(uintptr)str_name(LOGSTR), ##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_BTC_WARN4(fmt, args...) \
|
|
do {__attribute__((used, section(".logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_btc_warn4((uint32_t)(uintptr)str_name(LOGSTR), ##args); \
|
|
} while (0)
|
|
|
|
#endif /* BUILD_IN_ROM */
|
|
/**
|
|
* @brief Compression log printing function
|
|
*/
|
|
void compress_printf(uint32_t log_addr, uint32_t log_header, ...);
|
|
|
|
/*
|
|
* + 16 Bits + 10 Bits + 4 Bits + 4 Bits +
|
|
* +--------------+--------------+------------------+----------+-------------+--------------+
|
|
* | log_module | log_id | | |
|
|
* |--------------+--------------+------------------+----------| log_lvl | args_count |
|
|
* | LOG_BCORE_BTC | 0 | | |
|
|
* +-----------------------------------------------------------+-------------+--------------+
|
|
*/
|
|
void compress_printf_btc_info0(uint32_t log_addr, ...);
|
|
void compress_printf_btc_info1(uint32_t log_addr, ...);
|
|
void compress_printf_btc_info2(uint32_t log_addr, ...);
|
|
void compress_printf_btc_info3(uint32_t log_addr, ...);
|
|
void compress_printf_btc_info4(uint32_t log_addr, ...);
|
|
void compress_printf_btc_warn0(uint32_t log_addr, ...);
|
|
void compress_printf_btc_warn1(uint32_t log_addr, ...);
|
|
void compress_printf_btc_warn2(uint32_t log_addr, ...);
|
|
void compress_printf_btc_warn3(uint32_t log_addr, ...);
|
|
void compress_printf_btc_warn4(uint32_t log_addr, ...);
|
|
/**
|
|
* @brief Initialization of the compression log threshold
|
|
*/
|
|
void compress_log_init(void);
|
|
/**
|
|
* @brief Set the compression log threshold
|
|
* Used for the external interface function of the wear product
|
|
*/
|
|
void set_compress_log_count_threshold(uint32_t threshold);
|
|
/**
|
|
* @brief Check whether the log printing is within the threshold
|
|
* return true:within the threshold, return false:exceeded the threshold
|
|
*/
|
|
bool check_compress_log_printf_threshold(void);
|
|
|
|
/**
|
|
* @brief Query the log module switch
|
|
* @param domain domain enum value
|
|
* @param module module enum value
|
|
* @return true:on, false:off
|
|
*/
|
|
bool log_switch_is_open(uint16_t domain, uint16_t module);
|
|
|
|
/**
|
|
* @brief Switch log on or off
|
|
* @param domain domain enum value
|
|
* @param module module enum value
|
|
* @param op true:on, false:off
|
|
* @return result SUCC or ERR
|
|
*/
|
|
int16_t set_log_switch(uint16_t domain, uint16_t module, bool op);
|
|
|
|
/**
|
|
* @brief Reset log switch to all on or off
|
|
* @param op true:all on, false:all off
|
|
* @return None
|
|
*/
|
|
void reset_log_switch(bool op);
|
|
|
|
/**
|
|
* @brief Called by core APP to remote config bt and hifi.
|
|
* @param dst dest core enum
|
|
* @param domain
|
|
* @param module
|
|
* @param op true:all on, false:all off
|
|
* @return enum ipc_status_t
|
|
*/
|
|
uint16_t remote_config_log_switch(cores_t dst, uint16_t domain, uint16_t module, bool op);
|
|
|
|
/**
|
|
* @brief Set the log switch action handler object
|
|
* @param message
|
|
* @param payload_p see struct log_switch_cmd_t
|
|
* @param src
|
|
* @param id
|
|
* @return should always true
|
|
*/
|
|
bool set_log_switch_action_handler(ipc_action_t message, const volatile ipc_payload *payload_p,
|
|
cores_t src, uint32_t id);
|
|
|
|
#else /* USE_COMPRESS_LOG_INSTEAD_OF_SDT_LOG == NO */
|
|
|
|
/*
|
|
* + 10 Bits + 14 Bits + 4 Bits + 4 Bits +
|
|
* +-------------+-------------+-------------+--------------+
|
|
* | file_id | log_line | log_lvl | args_count |
|
|
* +-------------+-------------+-------------+--------------+
|
|
*/
|
|
#define press_params(log_lvl, file_id, log_line, args_count) \
|
|
(((uint32_t)(file_id) << 22) | ((uint32_t)(log_line) << 8) | ((uint32_t)(log_lvl) << 4) | (uint32_t)(args_count))
|
|
#define get_file_id(log_header) (((log_header) >> 22) & 0x3FF)
|
|
#define get_log_line(log_header) (((log_header) >> 8) & 0x3FFF)
|
|
#define get_log_lvl(log_header) (((log_header) >> 4) & 0xF)
|
|
#define get_log_args_cnt(log_header) ((log_header) & 0xF)
|
|
|
|
#define get_log_domain(log_code) (((log_code) >> 20) & 0xF)
|
|
#define get_log_module(log_code) (((log_code) >> 16) & 0xF)
|
|
#define get_log_sub_module(log_code) (((log_code) >> 10) & 0x3F)
|
|
|
|
#ifndef BUILD_IN_ROM
|
|
#define BASE_PRINT_WITH_MODULE(log_mod, log_id, log_lvl, fmt, args_count, args...) \
|
|
do { compress_printf(press_params(log_lvl, THIS_FILE_ID, __LINE__, args_count), ##args); \
|
|
} while (0)
|
|
#ifdef BT_ATE
|
|
#define BASE_PRINT(log_code, log_lvl, fmt, args_count, args...)
|
|
#else
|
|
#define BASE_PRINT(log_code, log_lvl, fmt, args_count, args...) \
|
|
do { compress_printf(press_params(log_lvl, THIS_FILE_ID, __LINE__, args_count), ##args); \
|
|
} while (0)
|
|
#endif
|
|
#define BASE_PRINT_NON_COMPRESS(log_code, log_lvl, fmt, args_count, args...) \
|
|
do { compress_printf(press_params(log_lvl, THIS_FILE_ID, __LINE__, args_count), ##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_ERR(log_code, fmt, args_count, args...) \
|
|
do { compress_printf(press_params(LOG_LEVEL_ERROR, THIS_FILE_ID, __LINE__, args_count), ##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_WARN(log_code, fmt, args_count, args...) \
|
|
do { compress_printf(press_params(LOG_LEVEL_WARNING, THIS_FILE_ID, __LINE__, args_count), ##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_INFO(log_code, fmt, args_count, args...) \
|
|
do { compress_printf(press_params(LOG_LEVEL_INFO, THIS_FILE_ID, __LINE__, args_count), ##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_DEBUG(log_code, fmt, args_count, args...) \
|
|
do { compress_printf(press_params(LOG_LEVEL_DBG, THIS_FILE_ID, __LINE__, args_count), ##args); \
|
|
} while (0)
|
|
#endif /* BUILD_IN_ROM */
|
|
|
|
void compress_printf(uint32_t log_header, ...);
|
|
#endif /* USE_COMPRESS_LOG_INSTEAD_OF_SDT_LOG */
|
|
|
|
#ifdef BUILD_IN_ROM
|
|
#define press_user_params(log_code, log_lvl, args_count) \
|
|
(((uint32_t)(log_code) << 8) | ((uint32_t)(log_lvl) << 4) | (uint32_t)(args_count))
|
|
|
|
#define press_eng_params(log_lvl, file_id, log_line, args_count) \
|
|
(((uint32_t)(file_id) << 22) | ((uint32_t)(log_line) << 8) | ((uint32_t)(log_lvl) << 4) | (uint32_t)(args_count))
|
|
|
|
#define link_line(text1, text2) (text1##text2)
|
|
#define str_name(text) (link_line(text, __LINE__))
|
|
|
|
#define BASE_PRINT_WITH_MODULE(log_mod, log_id, log_lvl, fmt, args_count, args...) \
|
|
do {__attribute__((used, section(".rom_logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_in_rom((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_user_params(CONNECT(log_mod, log_id), log_lvl, args_count), \
|
|
press_eng_params(log_lvl, THIS_FILE_ID, __LINE__, args_count), \
|
|
##args); \
|
|
} while (0)
|
|
#define BASE_PRINT(log_code, log_lvl, fmt, args_count, args...) \
|
|
do {__attribute__((used, section(".rom_logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_in_rom((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_user_params(log_code, log_lvl, args_count), \
|
|
press_eng_params(log_lvl, THIS_FILE_ID, __LINE__, args_count), \
|
|
##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_NON_COMPRESS(log_code, log_lvl, fmt, args_count, args...) \
|
|
do {__attribute__((used, section(".rom_logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_log_no_print_in_rom((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_user_params(log_code, log_lvl, args_count), \
|
|
press_eng_params(log_lvl, THIS_FILE_ID, __LINE__, args_count), \
|
|
##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_ERR(log_code, fmt, args_count, args...) \
|
|
do {__attribute__((used, section(".rom_logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_in_rom((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_user_params(log_code, LOG_LEVEL_ERROR, args_count), \
|
|
press_eng_params(LOG_LEVEL_ERROR, THIS_FILE_ID, __LINE__, args_count), \
|
|
##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_WARN(log_code, fmt, args_count, args...) \
|
|
do {__attribute__((used, section(".rom_logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_in_rom((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_user_params(log_code, LOG_LEVEL_WARNING, args_count), \
|
|
press_eng_params(LOG_LEVEL_WARNING, THIS_FILE_ID, __LINE__, args_count), \
|
|
##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_INFO(log_code, fmt, args_count, args...) \
|
|
do {__attribute__((used, section(".rom_logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_in_rom((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_user_params(log_code, LOG_LEVEL_INFO, args_count), \
|
|
press_eng_params(LOG_LEVEL_INFO, THIS_FILE_ID, __LINE__, args_count), \
|
|
##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_DEBUG(log_code, fmt, args_count, args...) \
|
|
do {__attribute__((used, section(".rom_logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_in_rom((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_user_params(log_code, LOG_LEVEL_DBG, args_count), \
|
|
press_eng_params(LOG_LEVEL_DBG, THIS_FILE_ID, __LINE__, args_count), \
|
|
##args); \
|
|
} while (0)
|
|
|
|
#define BASE_PRINT_BTC_INFO0(fmt, args...) \
|
|
do {__attribute__((used, section(".rom_logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_in_rom((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_user_params(CONNECT((0 + LOG_BCORE_BTC), 0), LOG_LEVEL_INFO, NO_ARG), \
|
|
press_eng_params(LOG_LEVEL_INFO, THIS_FILE_ID, __LINE__, NO_ARG), \
|
|
##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_BTC_INFO1(fmt, args...) \
|
|
do {__attribute__((used, section(".rom_logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_in_rom((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_user_params(CONNECT((0 + LOG_BCORE_BTC), 0), LOG_LEVEL_INFO, ONE_ARG), \
|
|
press_eng_params(LOG_LEVEL_INFO, THIS_FILE_ID, __LINE__, ONE_ARG), \
|
|
##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_BTC_INFO2(fmt, args...) \
|
|
do {__attribute__((used, section(".rom_logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_in_rom((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_user_params(CONNECT((0 + LOG_BCORE_BTC), 0), LOG_LEVEL_INFO, TWO_ARG), \
|
|
press_eng_params(LOG_LEVEL_INFO, THIS_FILE_ID, __LINE__, TWO_ARG), \
|
|
##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_BTC_INFO3(fmt, args...) \
|
|
do {__attribute__((used, section(".rom_logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_in_rom((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_user_params(CONNECT((0 + LOG_BCORE_BTC), 0), LOG_LEVEL_INFO, THREE_ARG), \
|
|
press_eng_params(LOG_LEVEL_INFO, THIS_FILE_ID, __LINE__, THREE_ARG), \
|
|
##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_BTC_INFO4(fmt, args...) \
|
|
do {__attribute__((used, section(".rom_logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_in_rom((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_user_params(CONNECT((0 + LOG_BCORE_BTC), 0), LOG_LEVEL_INFO, FOUR_ARG), \
|
|
press_eng_params(LOG_LEVEL_INFO, THIS_FILE_ID, __LINE__, FOUR_ARG), \
|
|
##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_BTC_WARN0(fmt, args...) \
|
|
do {__attribute__((used, section(".rom_logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_in_rom((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_user_params(CONNECT((0 + LOG_BCORE_BTC), 0), LOG_LEVEL_WARNING, NO_ARG), \
|
|
press_eng_params(LOG_LEVEL_WARNING, THIS_FILE_ID, __LINE__, NO_ARG), \
|
|
##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_BTC_WARN1(fmt, args...) \
|
|
do {__attribute__((used, section(".rom_logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_in_rom((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_user_params(CONNECT((0 + LOG_BCORE_BTC), 0), LOG_LEVEL_WARNING, ONE_ARG), \
|
|
press_eng_params(LOG_LEVEL_WARNING, THIS_FILE_ID, __LINE__, ONE_ARG), \
|
|
##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_BTC_WARN2(fmt, args...) \
|
|
do {__attribute__((used, section(".rom_logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_in_rom((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_user_params(CONNECT((0 + LOG_BCORE_BTC), 0), LOG_LEVEL_WARNING, TWO_ARG), \
|
|
press_eng_params(LOG_LEVEL_WARNING, THIS_FILE_ID, __LINE__, TWO_ARG), \
|
|
##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_BTC_WARN3(fmt, args...) \
|
|
do {__attribute__((used, section(".rom_logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_in_rom((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_user_params(CONNECT((0 + LOG_BCORE_BTC), 0), LOG_LEVEL_WARNING, THREE_ARG), \
|
|
press_eng_params(LOG_LEVEL_WARNING, THIS_FILE_ID, __LINE__, THREE_ARG), \
|
|
##args); \
|
|
} while (0)
|
|
#define BASE_PRINT_BTC_WARN4(fmt, args...) \
|
|
do {__attribute__((used, section(".rom_logstr"))) static char str_name(LOGSTR)[] = fmt; \
|
|
compress_printf_in_rom((uint32_t)(uintptr)str_name(LOGSTR), \
|
|
press_user_params(CONNECT((0 + LOG_BCORE_BTC), 0), LOG_LEVEL_WARNING, FOUR_ARG), \
|
|
press_eng_params(LOG_LEVEL_WARNING, THIS_FILE_ID, __LINE__, FOUR_ARG), \
|
|
##args); \
|
|
} while (0)
|
|
|
|
#endif /* BUILD_IN_ROM */
|
|
|
|
void compress_printf_in_rom(uint32_t log_addr, uint32_t log_header_user, uint32_t log_header_eng, ...);
|
|
void compress_printf_rom_callback(uint32_t log_addr, uint32_t log_header_user, uint32_t log_header_eng, va_list args);
|
|
void compress_log_no_print_in_rom(uint32_t log_addr, uint32_t log_header_user, uint32_t log_header_eng, ...);
|
|
void compress_log_no_print_rom_callback(uint32_t log_addr, uint32_t log_header_user,
|
|
uint32_t log_header_eng, va_list args);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
#endif
|