/************************************************************************************** * Copyright (c) 2016-2017, ARM Limited or its affiliates. All rights reserved * * * * This file and the related binary are licensed under the following license: * * * * ARM Object Code and Header Files License, v1.0 Redistribution. * * * * Redistribution and use of object code, header files, and documentation, without * * modification, are permitted provided that the following conditions are met: * * * * 1) Redistributions must reproduce the above copyright notice and the * * following disclaimer in the documentation and/or other materials * * provided with the distribution. * * * * 2) Unless to the extent explicitly permitted by law, no reverse * * engineering, decompilation, or disassembly of is permitted. * * * * 3) Redistribution and use is permitted solely for the purpose of * * developing or executing applications that are targeted for use * * on an ARM-based product. * * * * DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND * * CONTRIBUTORS "AS IS." ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, * * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * **************************************************************************************/ #ifndef _SSI_PAL_LOG_H_ #define _SSI_PAL_LOG_H_ #include "ssi_pal_types.h" /*! @file @brief This file contains the PAL layer log definitions, by default the log is disabled. @defgroup ssi_pal_log CryptoCell PAL logging APIs and definitions @{ @ingroup ssi_pal */ /* PAL log levels (to be used in SASI_PAL_logLevel) */ /*! PAL log level - disabled. */ #define SASI_PAL_LOG_LEVEL_NULL -1 /*!< \internal Disable logging */ /*! PAL log level - error. */ #define SASI_PAL_LOG_LEVEL_ERR 0 /*! PAL log level - warning. */ #define SASI_PAL_LOG_LEVEL_WARN 1 /*! PAL log level - info. */ #define SASI_PAL_LOG_LEVEL_INFO 2 /*! PAL log level - debug. */ #define SASI_PAL_LOG_LEVEL_DEBUG 3 /*! PAL log level - trace. */ #define SASI_PAL_LOG_LEVEL_TRACE 4 /*! PAL log level - data. */ #define SASI_PAL_LOG_LEVEL_DATA 5 #ifndef SASI_PAL_LOG_CUR_COMPONENT /* Setting default component mask in case caller did not define */ /* (a mask that is always on for every log mask value but full masking) */ /*! Default log debugged component.*/ #define SASI_PAL_LOG_CUR_COMPONENT 0xFFFFFFFF #endif #ifndef SASI_PAL_LOG_CUR_COMPONENT_NAME /*! Default log component name.*/ #define SASI_PAL_LOG_CUR_COMPONENT_NAME "Dx" #endif /* Select compile time log level (default if not explicitly specified by caller) */ #ifndef SASI_PAL_MAX_LOG_LEVEL /* Can be overriden by external definition of this constant */ #ifdef DEBUG /*! Default debug log level (when debug is set to on).*/ #define SASI_PAL_MAX_LOG_LEVEL SASI_PAL_LOG_LEVEL_ERR /*SASI_PAL_LOG_LEVEL_DEBUG*/ #else /* Disable logging */ /*! Default debug log level (when debug is set to off).*/ #define SASI_PAL_MAX_LOG_LEVEL SASI_PAL_LOG_LEVEL_NULL #endif #endif /*SASI_PAL_MAX_LOG_LEVEL*/ /*! Evaluate SASI_PAL_MAX_LOG_LEVEL in case provided by caller */ #define __SASI_PAL_LOG_LEVEL_EVAL(level) level /*! Maximal log level defintion.*/ #define _SASI_PAL_MAX_LOG_LEVEL __SASI_PAL_LOG_LEVEL_EVAL(SASI_PAL_MAX_LOG_LEVEL) #ifdef ARM_DSM //not support ARM DSM log feature /*! Log init function. */ #define SaSi_PalLogInit() do {} while (0) /*! Log set level function - sets the level of logging in case of debug. */ #define SaSi_PalLogLevelSet(setLevel) do {} while (0) /*! Log set mask function - sets the component masking in case of debug. */ #define SaSi_PalLogMaskSet(setMask) do {} while (0) /*! Log log funtion based on various platform */ #define SaSi_PalLogPlatsampan(level, msg) do {} while (0) #else #if _SASI_PAL_MAX_LOG_LEVEL > SASI_PAL_LOG_LEVEL_NULL /*! Log init function. */ void SaSi_PalLogInit(void); /*! Log set level function - sets the level of logging in case of debug. */ void SaSi_PalLogLevelSet(int setLevel); /*! Log set mask function - sets the component masking in case of debug. */ void SaSi_PalLogMaskSet(uint32_t setMask); /*! Log log funtion based on various platform */ void SaSi_PalLogPlat(uint32_t level, const char *msg); /*! Global variable for log level */ extern int SaSi_PAL_logLevel; /*! Global variable for log mask */ extern uint32_t SaSi_PAL_logMask; #else /* No log */ /*! Log init function. */ #define SaSi_PalLogInit() do {} while (0) /*! Log set level function - sets the level of logging in case of debug. */ #define SaSi_PalLogLevelSet(setLevel) do {} while (0) /*! Log set mask function - sets the component masking in case of debug. */ #define SaSi_PalLogMaskSet(setMask) do {} while (0) /*! Log log funtion based on various platform */ #define SaSi_PalLogPlat(level, msg) do {} while (0) #endif #endif /*! Filter logging based on logMask and dispatch to platform specific logging mechanism */ #define _SASI_PAL_LOG(level, msg) \ if (SaSi_PAL_logMask & SASI_PAL_LOG_CUR_COMPONENT) \ SaSi_PalLogPlat(SASI_PAL_LOG_LEVEL_ ## level, msg ) #if (_SASI_PAL_MAX_LOG_LEVEL >= SASI_PAL_LOG_LEVEL_ERR) /*! Log messages according to log level.*/ #define SASI_PAL_LOG_ERR(msg) \ _SASI_PAL_LOG(ERR, msg) #else /*! Log messages according to log level.*/ #define SASI_PAL_LOG_ERR( ... ) do {} while (0) #endif #if (_SASI_PAL_MAX_LOG_LEVEL >= SASI_PAL_LOG_LEVEL_WARN) /*! Log messages according to log level.*/ #define SASI_PAL_LOG_WARN(msg) \ if (SaSi_PAL_logLevel >= SASI_PAL_LOG_LEVEL_WARN) \ _SASI_PAL_LOG(WARN, msg) #else /*! Log messages according to log level.*/ #define SASI_PAL_LOG_WARN( ... ) do {} while (0) #endif #if (_SASI_PAL_MAX_LOG_LEVEL >= SASI_PAL_LOG_LEVEL_INFO) /*! Log messages according to log level.*/ #define SASI_PAL_LOG_INFO(msg) \ if (SaSi_PAL_logLevel >= SASI_PAL_LOG_LEVEL_INFO) \ _SASI_PAL_LOG(INFO, msg) #else /*! Log messages according to log level.*/ #define SASI_PAL_LOG_INFO( ... ) do {} while (0) #endif #if (_SASI_PAL_MAX_LOG_LEVEL >= SASI_PAL_LOG_LEVEL_DEBUG) /*! Log messages according to log level.*/ #define SASI_PAL_LOG_DEBUG(msg) \ if (SaSi_PAL_logLevel >= SASI_PAL_LOG_LEVEL_DEBUG) \ _SASI_PAL_LOG(DEBUG, msg) /*! Log message buffer.*/ #define SASI_PAL_LOG_DUMP_BUF(msg, buf, size) \ do { \ int i; \ uint8_t *pData = (uint8_t*)buf; \ \ PRINTF("%s (%d):\n", msg, size); \ for (i = 0; i < size; i++) { \ PRINTF("0x%02X ", pData[i]); \ if ((i & 0xF) == 0xF) { \ PRINTF("\n"); \ } \ } \ PRINTF("\n"); \ } while (0) #else /*! Log debug messages.*/ #define SASI_PAL_LOG_DEBUG( ... ) do {} while (0) /*! Log debug buffer.*/ #define SASI_PAL_LOG_DUMP_BUF(msg, buf, size) do {} while (0) #endif #if (_SASI_PAL_MAX_LOG_LEVEL >= SASI_PAL_LOG_LEVEL_TRACE) /*! Log debug trace.*/ #define SASI_PAL_LOG_TRACE(msg) \ if (SaSi_PAL_logLevel >= SASI_PAL_LOG_LEVEL_TRACE) \ _SASI_PAL_LOG(TRACE, format, msg) #else /*! Log debug trace.*/ #define SASI_PAL_LOG_TRACE(...) do {} while (0) #endif #if (_SASI_PAL_MAX_LOG_LEVEL >= SASI_PAL_LOG_LEVEL_TRACE) /*! Log debug data.*/ #define SASI_PAL_LOG_DATA(msg) \ if (SaSi_PAL_logLevel >= SASI_PAL_LOG_LEVEL_TRACE) \ _SASI_PAL_LOG(DATA, format, msg) #else /*! Log debug data.*/ #define SASI_PAL_LOG_DATA( ...) do {} while (0) #endif /** @} */ #endif /*_SSI_PAL_LOG_H_*/