1 /*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 /**
17 ************************************************************************
18 * @file M4PSW_DebugTrace.c
19 * @brief Default trace function for debugging macros
20 * @note This file gives the default implementation of the trace function
21 * used in the debug instrumentation macros, based on printf.
22 * Application writers are strongly encouraged to implement their
23 * own "M4OSA_DebugTrace".
24 ************************************************************************
25 */
26
27
28 #include <stdio.h> /*for printf */
29
30 #include "M4OSA_Types.h"
31 #include "M4OSA_Error.h"
32
33 /*#define NO_FILE */ /* suppresses the file name print out */
34
35
36 /**
37 ************************************************************************
38 * void M4OSA_DebugTrace(M4OSA_Int32 line, char* file, M4OSA_Int32 level,
39 * M4OSA_Char* cond, char* msg, M4OSA_ERR err)
40 * @brief This function implements the trace for debug tests
41 * @note This function is to be called in the debug macros only.
42 * This implementation uses printf.
43 * @param line (IN): the line number in the source file
44 * @param file (IN): the source file name
45 * @param level (IN): the debug level
46 * @param msg (IN): the error message
47 * @param err (IN): the return value (error code)
48 * @return none
49 ************************************************************************
50 */
51
M4OSA_DebugTrace(M4OSA_Int32 line,M4OSA_Char * file,M4OSA_Int32 level,M4OSA_Char * cond,M4OSA_Char * msg,M4OSA_ERR err)52 M4OSAL_TRACE_EXPORT_TYPE void M4OSA_DebugTrace(M4OSA_Int32 line,
53 M4OSA_Char* file,
54 M4OSA_Int32 level,
55 M4OSA_Char* cond,
56 M4OSA_Char* msg,
57 M4OSA_ERR err)
58 {
59 M4OSA_Int32 i;
60
61 /* try to "indent" the resulting traces depending on the level */
62 for (i =0 ; i < level; i ++)
63 {
64 printf(" ");
65 }
66
67 #ifdef NO_FILE
68 printf("Error: %li, on %s: %s\n",err,cond,msg);
69 #else /* NO_FILE */
70 printf("Error: %li, on %s: %s Line %lu in: %s\n",err,cond,msg,line,file);
71 #endif /* NO_FILE */
72
73 }
74
M4OSA_DEBUG_traceFunction(M4OSA_UInt32 line,M4OSA_Char * fileName,M4OSA_UInt32 level,M4OSA_Char * stringCondition,M4OSA_Char * message,M4OSA_ERR returnedError)75 M4OSAL_TRACE_EXPORT_TYPE M4OSA_Void M4OSA_DEBUG_traceFunction(M4OSA_UInt32 line,
76 M4OSA_Char* fileName,
77 M4OSA_UInt32 level,
78 M4OSA_Char* stringCondition,
79 M4OSA_Char* message,
80 M4OSA_ERR returnedError)
81 {
82 M4OSA_DebugTrace(line, fileName, level, stringCondition, message, returnedError);
83 }
84
85