1 /** 2 * Copyright (C) 2022 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 #ifndef IMS_MEDIA_TRACE_H_INCLUDED 18 #define IMS_MEDIA_TRACE_H_INCLUDED 19 #include <stdint.h> 20 21 enum IM_LOG_MODE 22 { 23 kLogEnableUnknown = 0, 24 kLogEnableVerbose, 25 kLogEnableDebug, 26 kLogEnableInfo, 27 kLogEnableWarning, 28 kLogEnableError, 29 }; 30 31 enum IM_PACKET_LOG_TYPE 32 { 33 IM_PACKET_LOG_SOCKET = 1 << 0, 34 IM_PACKET_LOG_AUDIO = 1 << 1, 35 IM_PACKET_LOG_VIDEO = 1 << 2, 36 IM_PACKET_LOG_TEXT = 1 << 3, 37 IM_PACKET_LOG_RTP = 1 << 4, 38 IM_PACKET_LOG_PH = 1 << 5, 39 IM_PACKET_LOG_JITTER = 1 << 6, 40 IM_PACKET_LOG_RTCP = 1 << 7, 41 IM_PACKET_LOG_RTPSTACK = 1 << 8 42 }; 43 44 #define IMLOGD_PACKET0(type, format) \ 45 ImsMediaTrace::IMLOGD_PACKET_ARG( \ 46 type, "[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__) 47 #define IMLOGD_PACKET1(type, format, a) \ 48 ImsMediaTrace::IMLOGD_PACKET_ARG(type, "[%s:%d] " format, \ 49 ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__, a) 50 #define IMLOGD_PACKET2(type, format, a, b) \ 51 ImsMediaTrace::IMLOGD_PACKET_ARG(type, "[%s:%d] " format, \ 52 ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__, a, b) 53 #define IMLOGD_PACKET3(type, format, a, b, c) \ 54 ImsMediaTrace::IMLOGD_PACKET_ARG(type, "[%s:%d] " format, \ 55 ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__, a, b, c) 56 #define IMLOGD_PACKET4(type, format, a, b, c, d) \ 57 ImsMediaTrace::IMLOGD_PACKET_ARG(type, "[%s:%d] " format, \ 58 ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__, a, b, c, d) 59 #define IMLOGD_PACKET5(type, format, a, b, c, d, e) \ 60 ImsMediaTrace::IMLOGD_PACKET_ARG(type, "[%s:%d] " format, \ 61 ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__, a, b, c, d, e) 62 #define IMLOGD_PACKET6(type, format, a, b, c, d, e, f) \ 63 ImsMediaTrace::IMLOGD_PACKET_ARG(type, "[%s:%d] " format, \ 64 ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__, a, b, c, d, e, f) 65 #define IMLOGD_PACKET7(type, format, a, b, c, d, e, f, g) \ 66 ImsMediaTrace::IMLOGD_PACKET_ARG(type, "[%s:%d] " format, \ 67 ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__, a, b, c, d, e, f, g) 68 #define IMLOGD_PACKET8(type, format, a, b, c, d, e, f, g, h) \ 69 ImsMediaTrace::IMLOGD_PACKET_ARG(type, "[%s:%d] " format, \ 70 ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__, a, b, c, d, e, f, g, h) 71 72 #define IMLOGI0(format) \ 73 ImsMediaTrace::IMLOGI_ARG( \ 74 "[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__) 75 #define IMLOGI1(format, a) \ 76 ImsMediaTrace::IMLOGI_ARG( \ 77 "[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__, a) 78 #define IMLOGI2(format, a, b) \ 79 ImsMediaTrace::IMLOGI_ARG( \ 80 "[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__, a, b) 81 #define IMLOGI3(format, a, b, c) \ 82 ImsMediaTrace::IMLOGI_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 83 __LINE__, a, b, c) 84 #define IMLOGI4(format, a, b, c, d) \ 85 ImsMediaTrace::IMLOGI_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 86 __LINE__, a, b, c, d) 87 #define IMLOGI5(format, a, b, c, d, e) \ 88 ImsMediaTrace::IMLOGI_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 89 __LINE__, a, b, c, d, e) 90 #define IMLOGI6(format, a, b, c, d, e, f) \ 91 ImsMediaTrace::IMLOGI_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 92 __LINE__, a, b, c, d, e, f) 93 #define IMLOGI7(format, a, b, c, d, e, f, g) \ 94 ImsMediaTrace::IMLOGI_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 95 __LINE__, a, b, c, d, e, f, g) 96 #define IMLOGI8(format, a, b, c, d, e, f, g, h) \ 97 ImsMediaTrace::IMLOGI_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 98 __LINE__, a, b, c, d, e, f, g, h) 99 100 #define IMLOGD0(format) \ 101 ImsMediaTrace::IMLOGD_ARG( \ 102 "[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__) 103 #define IMLOGD1(format, a) \ 104 ImsMediaTrace::IMLOGD_ARG( \ 105 "[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__, a) 106 #define IMLOGD2(format, a, b) \ 107 ImsMediaTrace::IMLOGD_ARG( \ 108 "[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__, a, b) 109 #define IMLOGD3(format, a, b, c) \ 110 ImsMediaTrace::IMLOGD_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 111 __LINE__, a, b, c) 112 #define IMLOGD4(format, a, b, c, d) \ 113 ImsMediaTrace::IMLOGD_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 114 __LINE__, a, b, c, d) 115 #define IMLOGD5(format, a, b, c, d, e) \ 116 ImsMediaTrace::IMLOGD_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 117 __LINE__, a, b, c, d, e) 118 #define IMLOGD6(format, a, b, c, d, e, f) \ 119 ImsMediaTrace::IMLOGD_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 120 __LINE__, a, b, c, d, e, f) 121 #define IMLOGD7(format, a, b, c, d, e, f, g) \ 122 ImsMediaTrace::IMLOGD_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 123 __LINE__, a, b, c, d, e, f, g) 124 #define IMLOGD8(format, a, b, c, d, e, f, g, h) \ 125 ImsMediaTrace::IMLOGD_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 126 __LINE__, a, b, c, d, e, f, g, h) 127 128 #define IMLOGW0(format) \ 129 ImsMediaTrace::IMLOGW_ARG( \ 130 "[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__) 131 #define IMLOGW1(format, a) \ 132 ImsMediaTrace::IMLOGW_ARG( \ 133 "[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__, a) 134 #define IMLOGW2(format, a, b) \ 135 ImsMediaTrace::IMLOGW_ARG( \ 136 "[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__, a, b) 137 #define IMLOGW3(format, a, b, c) \ 138 ImsMediaTrace::IMLOGW_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 139 __LINE__, a, b, c) 140 #define IMLOGW4(format, a, b, c, d) \ 141 ImsMediaTrace::IMLOGW_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 142 __LINE__, a, b, c, d) 143 #define IMLOGW5(format, a, b, c, d, e) \ 144 ImsMediaTrace::IMLOGW_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 145 __LINE__, a, b, c, d, e) 146 #define IMLOGW6(format, a, b, c, d, e, f) \ 147 ImsMediaTrace::IMLOGW_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 148 __LINE__, a, b, c, d, e, f) 149 #define IMLOGW7(format, a, b, c, d, e, f, g) \ 150 ImsMediaTrace::IMLOGW_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 151 __LINE__, a, b, c, d, e, f, g) 152 #define IMLOGW8(format, a, b, c, d, e, f, g, h) \ 153 ImsMediaTrace::IMLOGW_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 154 __LINE__, a, b, c, d, e, f, g, h) 155 156 #define IMLOGE0(format) \ 157 ImsMediaTrace::IMLOGE_ARG( \ 158 "[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__) 159 #define IMLOGE1(format, a) \ 160 ImsMediaTrace::IMLOGE_ARG( \ 161 "[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__, a) 162 #define IMLOGE2(format, a, b) \ 163 ImsMediaTrace::IMLOGE_ARG( \ 164 "[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), __LINE__, a, b) 165 #define IMLOGE3(format, a, b, c) \ 166 ImsMediaTrace::IMLOGE_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 167 __LINE__, a, b, c) 168 #define IMLOGE4(format, a, b, c, d) \ 169 ImsMediaTrace::IMLOGE_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 170 __LINE__, a, b, c, d) 171 #define IMLOGE5(format, a, b, c, d, e) \ 172 ImsMediaTrace::IMLOGE_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 173 __LINE__, a, b, c, d, e) 174 #define IMLOGE6(format, a, b, c, d, e, f) \ 175 ImsMediaTrace::IMLOGE_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 176 __LINE__, a, b, c, d, e, f) 177 #define IMLOGE7(format, a, b, c, d, e, f, g) \ 178 ImsMediaTrace::IMLOGE_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 179 __LINE__, a, b, c, d, e, f, g) 180 #define IMLOGE8(format, a, b, c, d, e, f, g, h) \ 181 ImsMediaTrace::IMLOGE_ARG("[%s:%d] " format, ImsMediaTrace::IM_StripFileName((char*)__FILE__), \ 182 __LINE__, a, b, c, d, e, f, g, h) 183 184 #define IMLOGB(a, b, c) ImsMediaTrace::IMLOGD_BINARY(a, b, c) 185 186 class ImsMediaTrace 187 { 188 public: 189 static void IMLOGD_PACKET_ARG(IM_PACKET_LOG_TYPE type, const char* format, ...); 190 static void IMSetLogMode(uint32_t mode); 191 static void IMSetDebugLogMode(uint32_t mode); 192 static uint32_t IMGetDebugLog(); 193 static void IMLOGD_ARG(const char* format, ...); 194 static void IMLOGI_ARG(const char* format, ...); 195 static void IMLOGW_ARG(const char* format, ...); 196 static void IMLOGE_ARG(const char* format, ...); 197 static char* IMTrace_Bin2String(const char* s, int length); 198 static void IMLOGD_BINARY(const char* msg, const char* s, int length); 199 static char* IM_StripFileName(char* pcFileName); 200 }; 201 202 #endif