blob: 8f25ed63ca4cbc276470ca8cb5b284aeb09b5b79 [file] [log] [blame]
/*
*
* Copyright 2018 NXP
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef NX_LOG_H
#define NX_LOG_H
#ifdef __cplusplus
extern "C" {
#endif
/*
*
* Overview
* ==========================================
*
* These set of files help control logging levels in
* the applicaiton.
*
* The overall idea is to
* - Control logging at mutiple levels
* - Fine gain control of logging
* - Easy for the devleoper to add log messages
* - Easy for the devleoper to add/remove log components
* - Focus on embedded systems
*
*
* Control logging at mutiple levels
* ==========================================
*
* Each component can log one of the following levels.
* DEBUG - For the developer. Too much verbsity.
* INFO - General Information. Easy for end user to keep track what is happening.
* WARN - Some error occured, but can be handled
* ERROR - Some erro roccured, but no nice way to handle
*
* For each level, the logging APIs, LOG_D, LOG_I, LOG_W, LOG_E are available.
*
*
* Fine gain control of logging
* ==========================================
*
* Each component get's its own logging file.
* e.g. nxLog_SSS.h for SSS Layer, nxLog_UseCase.h for use cases.
* SSS Layer and UseCase layer's source files include these individual files
* and with that they can control logging level.
*
* Common `nxLog_Config.h` can control the logging levels,
* or individual source files can control their logging levels.
*
* Easy for the devleoper to add log messages
* ==========================================
*
* Within the source code, only include the file for the given component, e.g. `nxLog_SSS.h`.
* And only call LOG_D, LOG_E, etc. within that file.
*
*
* Easy for the devleoper to add/remove log components
* ===========================================================================
*
* When not required, the files like `nxLog_SSS.h` can be deleted. And when needed
* the script nxLog_Gen.py can be run:
*
* python nxLog_Gen.py <ComponentName>
*
*
* Focus on embedded systems
* ===========================================================================
*
* Do not take loging level information at run time, but at compile time.
* This enables to reduce the code size.
*
*
**/
#include <stddef.h>
#include <stdint.h>
#define NX_LEVEL_DEBUG 0
#define NX_LEVEL_INFO 1
#define NX_LEVEL_WARN 2
#define NX_LEVEL_ERROR 3
#define NX_LOG_D
#define NX_LOG_I
#define NX_LOG_W
#define NX_LOG_E
void nLog(const char *comp, int level, const char *format, ...);
void nLog_au8(const char *comp, int level, const char *message, const unsigned char *array, size_t array_len);
#ifdef __cplusplus
}
#endif
#endif