• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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