1855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/* 2855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project 3855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * 4855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License"); 5855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * you may not use this file except in compliance with the License. 6855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * You may obtain a copy of the License at 7855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * 8855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * http://www.apache.org/licenses/LICENSE-2.0 9855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * 10855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * Unless required by applicable law or agreed to in writing, software 11855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS, 12855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * See the License for the specific language governing permissions and 14855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * limitations under the License. 15855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi */ 16855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/** 17855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi ************************************************************************ 18855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * @file M4PSW_Trace.c 19855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * @brief Trace function for trace macros 20855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * @note This file gives the implementation of the trace function used 21855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * in the trace instrumentation macros 22855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi ************************************************************************ 23855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi*/ 24855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 25855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 26855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#include <stdio.h> /*for printf */ 27855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#include <stdarg.h> /* ANSI C macros and defs for variable args */ 28855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#include "utils/Log.h" 29855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 30855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#include "M4OSA_Types.h" 31855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#include "M4OSA_Debug.h" 32855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 33855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define NO_FILE /* suppresses the file name print out */ 34855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 35855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define MAX_STRING_SIZE 1024 36855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 37855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/** 38855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi ************************************************************************ 39855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * void M4OSA_Trace(M4OSA_Int32 line, M4OSA_Char* file ,M4OSA_Int32 level, 40855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * M4OSA_Char* format, ...) 41855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * @brief This function implements the trace for debug tests 42855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * @note This implementation uses printf. First the variables are retrieved using 43855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * ANSI C defs and macros which enable to access a variable number of arguments. 44855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * Then the printf is done (with some ornemental adds). 45855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * @param level (IN): the debug level 46855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * @param format (IN): the "printf" formated string 47855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * @param ... (IN): as many parameters as required ... 48855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * @return none 49855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi ************************************************************************ 50855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi*/ 51855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 52855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray KundargiM4OSAL_TRACE_EXPORT_TYPE void M4OSA_Trace(M4OSA_Int32 line, M4OSA_Char* file , 53855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_Int32 level, M4OSA_Char* format, ...) 54855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi{ 55855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_Char message[MAX_STRING_SIZE]; 56855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_Int32 i; 57855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi va_list marker; /* pointer to list of arguments */ 58855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 59855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi /* get the var arguments into the string message to be able to print */ 60855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi va_start(marker,format); /* set ptr to first argument in the list of arguments passed to the function */ 61855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi vsprintf((char *)message, (const char *)format,marker ); /* formats and writes the data into message */ 62855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi va_end(marker); /* reset pointer to NULL */ 63855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 64855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi /* do the actual print */ 65855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#ifdef NO_FILE 66f24e48bbbc93da7655aabe04adf42eff2efcf69eJames Dong __android_log_print(ANDROID_LOG_INFO, "M4OSA_Trace", "%s", (char*)message); 67855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#else /* NO_FILE */ 68f24e48bbbc93da7655aabe04adf42eff2efcf69eJames Dong __android_log_print(ANDROID_LOG_INFO, "M4OSA_Trace", "%s", "%s at %lu in %s", 69855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi (char *)message, line, file); 70855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#endif /* NO_FILE */ 71855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 72855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi} 73855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 74855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray KundargiM4OSAL_TRACE_EXPORT_TYPE M4OSA_Void M4OSA_TRACE_traceFunction(M4OSA_UInt32 line, 75855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_Char* fileName, 76855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_CoreID coreID, 77855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_UInt32 level, 78855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_Char* stringMsg, ...) 79855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi{ 80855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_Char message[MAX_STRING_SIZE]; 81855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_Int32 i; 82855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi va_list marker; /* pointer to list of arguments */ 83855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 84855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi /* get the var arguments into the string message to be able to print */ 85855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi va_start(marker,stringMsg); /* set ptr to first argument in the list of arguments passed to the function */ 86855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi vsprintf((char *)message, (const char *)stringMsg,marker ); /* formats and writes the data into message */ 87855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi va_end(marker); /* reset pointer to NULL */ 88855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 89855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi /* do the actual print */ 90855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#ifdef NO_FILE 91f24e48bbbc93da7655aabe04adf42eff2efcf69eJames Dong __android_log_print(ANDROID_LOG_INFO, "M4OSA_TRACE_traceFunction", "%s", (char*)message); 92855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#else /* NO_FILE */ 93f24e48bbbc93da7655aabe04adf42eff2efcf69eJames Dong __android_log_print(ANDROID_LOG_INFO, "M4OSA_TRACE_traceFunction", "%s", "%s at %lu in %s", 94855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi (char *)message, line, (char*)file); 95855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#endif /* NO_FILE */ 96855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 97855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi} 98855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 99