1 /* 2 * Copyright (c) 2015-2019, Texas Instruments Incorporated 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * * Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * * Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * * Neither the name of Texas Instruments Incorporated nor the names of 17 * its contributors may be used to endorse or promote products derived 18 * from this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 27 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 28 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 30 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 /** ============================================================================ 33 * @file DebugP.h 34 * 35 * @brief Debug support 36 * 37 * The DebugP module allows application to do logging and assert checking. 38 * 39 * DebugP_assert calls can be added into code. If the code 40 * is compiled with the compiler define DebugP_ASSERT_ENABLED set to a 41 * non-zero value, the call is passed onto the underlying assert checking. 42 * If DebugP_ASSERT_ENABLED is zero (or not defined), the calls are 43 * resolved to nothing. 44 * 45 * This module sits on top of the assert checking of the underlying 46 * RTOS. Please refer to the underlying RTOS port implementation for 47 * more details. 48 * 49 * Similarly, DebugP_logN calls can be added into code. If the code 50 * is compiled with the compiler define DebugP_LOG_ENABLED set to a 51 * non-zero value, the call is passed onto the underlying assert checking. 52 * If DebugP_LOG_ENABLED is zero (or not defined), the calls are 53 * resolved to nothing. 54 55 * This module sits on top of the logging of the underlying 56 * RTOS. Please refer to the underlying RTOS port implementation for 57 * more details. 58 * 59 * ============================================================================ 60 */ 61 62 #ifndef ti_dpl_DebugP__include 63 #define ti_dpl_DebugP__include 64 65 #include <stdint.h> 66 #include <stdbool.h> 67 #include <stddef.h> 68 69 #ifdef __cplusplus 70 extern "C" { 71 #endif 72 73 #ifndef DebugP_ASSERT_ENABLED 74 #define DebugP_ASSERT_ENABLED 0 75 #endif 76 77 #ifndef DebugP_LOG_ENABLED 78 #define DebugP_LOG_ENABLED 0 79 #endif 80 81 #if DebugP_ASSERT_ENABLED 82 extern void _DebugP_assert(int expression, const char *file, int line); 83 /*! 84 * @brief Assert checking function 85 * 86 * If the expression is evaluated to true, the API does nothing. 87 * If it is evaluated to false, the underlying RTOS port implementation 88 * handles the assert via its mechanisms. 89 * 90 * @param expression Expression to evaluate 91 */ 92 #define DebugP_assert(expression) (_DebugP_assert(expression, \ 93 __FILE__, __LINE__)) 94 #else 95 #define DebugP_assert(expression) 96 #endif 97 98 #if DebugP_LOG_ENABLED 99 /*! 100 * @brief Debug log function with 0 parameters 101 * 102 * The underlying RTOS port implementation handles the 103 * logging via its mechanisms. 104 * 105 * @param format "printf" format string 106 */ 107 extern void DebugP_log0(const char *format); 108 109 /*! 110 * @brief Debug log function with 1 parameters 111 * 112 * The underlying RTOS port implementation handles the 113 * logging via its mechanisms. 114 * 115 * @param format "printf" format string 116 * @param p1 first parameter to format string 117 */ 118 extern void DebugP_log1(const char *format, uintptr_t p1); 119 120 /*! 121 * @brief Debug log function with 2 parameters 122 * 123 * The underlying RTOS port implementation handles the 124 * logging via its mechanisms. 125 * 126 * @param format "printf" format string 127 * @param p1 first parameter to format string 128 * @param p2 second parameter to format string 129 */ 130 extern void DebugP_log2(const char *format, uintptr_t p1, uintptr_t p2); 131 132 /*! 133 * @brief Debug log function with 3 parameters 134 * 135 * The underlying RTOS port implementation handles the 136 * logging via its mechanisms. 137 * 138 * @param format "printf" format string 139 * @param p1 first parameter to format string 140 * @param p2 second parameter to format string 141 * @param p3 third parameter to format string 142 */ 143 extern void DebugP_log3(const char *format, uintptr_t p1, uintptr_t p2, uintptr_t p3); 144 145 /*! 146 * @brief Debug log function with 4 parameters 147 * 148 * The underlying RTOS port implementation handles the 149 * logging via its mechanisms. 150 * 151 * @param format "printf" format string 152 * @param p1 first parameter to format string 153 * @param p2 second parameter to format string 154 * @param p3 third parameter to format string 155 * @param p4 fourth parameter to format string 156 */ 157 extern void DebugP_log4(const char *format, uintptr_t p1, uintptr_t p2, uintptr_t p3, uintptr_t p4); 158 #else 159 #define DebugP_log0(format) 160 #define DebugP_log1(format, p1) 161 #define DebugP_log2(format, p1, p2) 162 #define DebugP_log3(format, p1, p2, p3) 163 #define DebugP_log4(format, p1, p2, p3, p4) 164 #endif 165 166 #ifdef __cplusplus 167 } 168 #endif 169 170 #endif /* ti_dpl_DebugP__include */ 171