1d304a9843714775d59b5682a4c255c8b411e7037Dante Russo/* Copyright (c) 2011-2016 The Linux Foundation. All rights reserved. 2e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * 3e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * Redistribution and use in source and binary forms, with or without 4e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * modification, are permitted provided that the following conditions are 5e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * met: 6e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * * Redistributions of source code must retain the above copyright 7e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * notice, this list of conditions and the following disclaimer. 8e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * * Redistributions in binary form must reproduce the above 9e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * copyright notice, this list of conditions and the following 10e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * disclaimer in the documentation and/or other materials provided 11e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * with the distribution. 12e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * * Neither the name of The Linux Foundation nor the names of its 13e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * contributors may be used to endorse or promote products derived 14e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * from this software without specific prior written permission. 15e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * 16e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 17e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 19e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 20e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 23e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 26e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * 28e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti */ 29e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 30e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifndef __LOG_UTIL_H__ 31e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define __LOG_UTIL_H__ 32e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 33e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifndef USE_GLIB 34e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <utils/Log.h> 35e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif /* USE_GLIB */ 36e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 37e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifdef USE_GLIB 38e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 39e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <stdio.h> 40e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <sys/types.h> 41e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <unistd.h> 42e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 43e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifndef LOG_TAG 44e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOG_TAG "GPS_UTILS" 45e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 46e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif // LOG_TAG 47e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 48e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif /* USE_GLIB */ 49e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 50e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifdef __cplusplus 51e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern "C" 52e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 53e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif 54e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*============================================================================= 55e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * 56e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * LOC LOGGER TYPE DECLARATION 57e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * 58e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *============================================================================*/ 59e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/* LOC LOGGER */ 60e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletitypedef struct loc_logger_s 61e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 62e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti unsigned long DEBUG_LEVEL; 63e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti unsigned long TIMESTAMP; 64e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} loc_logger_s_type; 65e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 66e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*============================================================================= 67e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * 68e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * EXTERNAL DATA 69e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * 70e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *============================================================================*/ 71e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern loc_logger_s_type loc_logger; 72e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 73e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// Logging Improvements 74e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern const char *loc_logger_boolStr[]; 75e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 76e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern const char *boolStr[]; 77e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern const char VOID_RET[]; 78e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern const char FROM_AFW[]; 79e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern const char TO_MODEM[]; 80e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern const char FROM_MODEM[]; 81e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern const char TO_AFW[]; 82e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern const char EXIT_TAG[]; 83e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern const char ENTRY_TAG[]; 84e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern const char EXIT_ERROR_TAG[]; 85e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 86e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*============================================================================= 87e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * 88e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * MODULE EXPORTED FUNCTIONS 89e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * 90e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *============================================================================*/ 91e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern void loc_logger_init(unsigned long debug, unsigned long timestamp); 92e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern char* get_timestamp(char* str, unsigned long buf_size); 93e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 94e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifndef DEBUG_DMN_LOC_API 95e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 96e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/* LOGGING MACROS */ 97e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*loc_logger.DEBUG_LEVEL is initialized to 0xff in loc_cfg.cpp 98e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti if that value remains unchanged, it means gps.conf did not 99e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti provide a value and we default to the initial value to use 100e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti Android's logging levels*/ 101e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define IF_LOC_LOGE if((loc_logger.DEBUG_LEVEL >= 1) && (loc_logger.DEBUG_LEVEL <= 5)) 102e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 103e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define IF_LOC_LOGW if((loc_logger.DEBUG_LEVEL >= 2) && (loc_logger.DEBUG_LEVEL <= 5)) 104e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 105e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define IF_LOC_LOGI if((loc_logger.DEBUG_LEVEL >= 3) && (loc_logger.DEBUG_LEVEL <= 5)) 106e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 107e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define IF_LOC_LOGD if((loc_logger.DEBUG_LEVEL >= 4) && (loc_logger.DEBUG_LEVEL <= 5)) 108e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 109e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define IF_LOC_LOGV if((loc_logger.DEBUG_LEVEL >= 5) && (loc_logger.DEBUG_LEVEL <= 5)) 110e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 111e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOC_LOGE(...) \ 112e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiIF_LOC_LOGE { ALOGE("E/" __VA_ARGS__); } \ 113e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletielse if (loc_logger.DEBUG_LEVEL == 0xff) { ALOGE("E/" __VA_ARGS__); } 114e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 115e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOC_LOGW(...) \ 116e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiIF_LOC_LOGW { ALOGE("W/" __VA_ARGS__); } \ 117e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletielse if (loc_logger.DEBUG_LEVEL == 0xff) { ALOGW("W/" __VA_ARGS__); } 118e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 119e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOC_LOGI(...) \ 120e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiIF_LOC_LOGI { ALOGE("I/" __VA_ARGS__); } \ 121e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletielse if (loc_logger.DEBUG_LEVEL == 0xff) { ALOGI("I/" __VA_ARGS__); } 122e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 123e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOC_LOGD(...) \ 124e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiIF_LOC_LOGD { ALOGE("D/" __VA_ARGS__); } \ 125e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletielse if (loc_logger.DEBUG_LEVEL == 0xff) { ALOGD("D/" __VA_ARGS__); } 126e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 127e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOC_LOGV(...) \ 128e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiIF_LOC_LOGV { ALOGE("V/" __VA_ARGS__); } \ 129e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletielse if (loc_logger.DEBUG_LEVEL == 0xff) { ALOGV("V/" __VA_ARGS__); } 130e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 131e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#else /* DEBUG_DMN_LOC_API */ 132e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 133e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOC_LOGE(...) ALOGE("E/" __VA_ARGS__) 134e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 135e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOC_LOGW(...) ALOGW("W/" __VA_ARGS__) 136e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 137e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOC_LOGI(...) ALOGI("I/" __VA_ARGS__) 138e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 139e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOC_LOGD(...) ALOGD("D/" __VA_ARGS__) 140e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 141e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOC_LOGV(...) ALOGV("V/" __VA_ARGS__) 142e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 143e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif /* DEBUG_DMN_LOC_API */ 144e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 145e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*============================================================================= 146e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * 147e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * LOGGING IMPROVEMENT MACROS 148e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * 149e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *============================================================================*/ 150e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOG_(LOC_LOG, ID, WHAT, SPEC, VAL) \ 151e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti do { \ 152e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti if (loc_logger.TIMESTAMP) { \ 153e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti char ts[32]; \ 154e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_LOG("[%s] %s %s line %d " #SPEC, \ 155e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti get_timestamp(ts, sizeof(ts)), ID, WHAT, __LINE__, VAL); \ 156e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } else { \ 157e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_LOG("%s %s line %d " #SPEC, \ 158e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ID, WHAT, __LINE__, VAL); \ 159e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } \ 160e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } while(0) 161e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 162d304a9843714775d59b5682a4c255c8b411e7037Dante Russo#define LOC_LOG_HEAD(tag,fmt) "%s:%d][" tag "] " fmt "\n" 163d304a9843714775d59b5682a4c255c8b411e7037Dante Russo#define LOC_LOGv(tag,fmt,...) LOC_LOGV(LOC_LOG_HEAD(tag,fmt), __func__, __LINE__, ##__VA_ARGS__) 164d304a9843714775d59b5682a4c255c8b411e7037Dante Russo#define LOC_LOGw(tag,fmt,...) LOC_LOGW(LOC_LOG_HEAD(tag,fmt), __func__, __LINE__, ##__VA_ARGS__) 165d304a9843714775d59b5682a4c255c8b411e7037Dante Russo#define LOC_LOGd(tag,fmt,...) LOC_LOGD(LOC_LOG_HEAD(tag,fmt), __func__, __LINE__, ##__VA_ARGS__) 166d304a9843714775d59b5682a4c255c8b411e7037Dante Russo#define LOC_LOGe(tag,fmt,...) LOC_LOGE(LOC_LOG_HEAD(tag,fmt), __func__, __LINE__, ##__VA_ARGS__) 167d304a9843714775d59b5682a4c255c8b411e7037Dante Russo 168e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOG_I(ID, WHAT, SPEC, VAL) LOG_(LOC_LOGI, ID, WHAT, SPEC, VAL) 169e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOG_V(ID, WHAT, SPEC, VAL) LOG_(LOC_LOGV, ID, WHAT, SPEC, VAL) 170e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOG_E(ID, WHAT, SPEC, VAL) LOG_(LOC_LOGE, ID, WHAT, SPEC, VAL) 171e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 172e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define ENTRY_LOG() LOG_V(ENTRY_TAG, __func__, %s, "") 173e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define EXIT_LOG(SPEC, VAL) LOG_V(EXIT_TAG, __func__, SPEC, VAL) 174e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define EXIT_LOG_WITH_ERROR(SPEC, VAL) \ 175e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti if (VAL != 0) { \ 176e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOG_E(EXIT_ERROR_TAG, __func__, SPEC, VAL); \ 177e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } else { \ 178e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOG_V(EXIT_TAG, __func__, SPEC, VAL); \ 179e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 180e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 181e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 182e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// Used for logging callflow from Android Framework 183e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define ENTRY_LOG_CALLFLOW() LOG_I(FROM_AFW, __func__, %s, "") 184e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// Used for logging callflow to Modem 185e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define EXIT_LOG_CALLFLOW(SPEC, VAL) LOG_I(TO_MODEM, __func__, SPEC, VAL) 186e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// Used for logging callflow from Modem(TO_MODEM, __func__, %s, "") 187e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define MODEM_LOG_CALLFLOW(SPEC, VAL) LOG_I(FROM_MODEM, __func__, SPEC, VAL) 188e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// Used for logging callflow to Android Framework 189e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define CALLBACK_LOG_CALLFLOW(CB, SPEC, VAL) LOG_I(TO_AFW, CB, SPEC, VAL) 190e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 191e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifdef __cplusplus 192e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 193e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif 194e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 195e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif // __LOG_UTIL_H__ 196