1 /**
2  ******************************************************************************
3  * @file    dbg_trace.h
4  * @author  MCD Application Team
5  * @brief   Header for dbg_trace.c
6  ******************************************************************************
7  * @attention
8  *
9  * Copyright (c) 2018-2021 STMicroelectronics.
10  * All rights reserved.
11  *
12  * This software is licensed under terms that can be found in the LICENSE file
13  * in the root directory of this software component.
14  * If no LICENSE file comes with this software, it is provided AS-IS.
15  *
16   ******************************************************************************
17  */
18 
19 
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef __DBG_TRACE_H
22 #define __DBG_TRACE_H
23 
24 #ifdef __cplusplus
25 extern "C"
26 {
27 #endif
28 
29 /* Exported types ------------------------------------------------------------*/
30 /* External variables --------------------------------------------------------*/
31 /* Exported macros -----------------------------------------------------------*/
32 #if ( ( CFG_DEBUG_TRACE_FULL != 0 ) || ( CFG_DEBUG_TRACE_LIGHT != 0 ) )
33 #define PRINT_LOG_BUFF_DBG(...) DbgTraceBuffer(__VA_ARGS__)
34 #if ( CFG_DEBUG_TRACE_FULL != 0 )
35 #define PRINT_MESG_DBG(...)     do{printf("\r\n [%s][%s][%d] ", DbgTraceGetFileName(__FILE__),__FUNCTION__,__LINE__);printf(__VA_ARGS__);}while(0);
36 #else
37 #define PRINT_MESG_DBG          printf
38 #endif
39 #else
40 #define PRINT_LOG_BUFF_DBG(...)
41 #define PRINT_MESG_DBG(...)
42 #endif
43 
44 #define PRINT_NO_MESG(...)
45 
46 /* Exported functions ------------------------------------------------------- */
47 
48   /**
49    * @brief Request the user to initialize the peripheral to output traces
50    *
51    * @param  None
52    * @retval None
53    */
54 extern void DbgOutputInit( void );
55 
56 /**
57  * @brief Request the user to sent the traces on the output peripheral
58  *
59  * @param  p_data:  Address of the buffer to be sent
60  * @param  size:    Size of the data to be sent
61  * @param  cb:      Function to be called when the data has been sent
62  * @retval None
63  */
64 extern void DbgOutputTraces(  uint8_t *p_data, uint16_t size, void (*cb)(void) );
65 
66 /**
67  * @brief DbgTraceInit Initialize Logging feature.
68  *
69  * @param:  None
70  * @retval: None
71  */
72 void DbgTraceInit( void );
73 
74 /**********************************************************************************************************************/
75 /** This function outputs into the log the buffer (in hex) and the provided format string and arguments.
76  ***********************************************************************************************************************
77  *
78  * @param pBuffer Buffer to be output into the logs.
79  * @param u32Length Length of the buffer, in bytes.
80  * @param strFormat The format string in printf() style.
81  * @param ... Arguments of the format string.
82  *
83  **********************************************************************************************************************/
84 void DbgTraceBuffer( const void *pBuffer , uint32_t u32Length , const char *strFormat , ... );
85 
86 const char *DbgTraceGetFileName( const char *fullpath );
87 
88 /**
89  * @brief Override the standard lib function to redirect printf to USART.
90  * @param handle output handle (STDIO, STDERR...)
91  * @param buf buffer to write
92  * @param bufsize buffer size
93  * @retval Number of elements written
94  */
95 size_t DbgTraceWrite(int handle, const unsigned char * buf, size_t bufSize);
96 
97 #ifdef __cplusplus
98 }
99 #endif
100 
101 #endif /*__DBG_TRACE_H */
102 
103