remove unnecessary dependancy to reduce memory use
[platform/core/messaging/msg-service.git] / include / utils / MsgDebug.h
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd. All rights reserved
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 __MSG_DEBUG_H__
18 #define __MSG_DEBUG_H__
19
20 /*==================================================================================================
21                                          INCLUDE FILES
22 ==================================================================================================*/
23 #include <sys/types.h>
24 #include <unistd.h>
25 #include <string.h>
26 #include <sys/time.h>
27 #include <time.h>
28 #include <dlog.h>
29
30 #include "MsgCmdTypes.h"
31
32 /*==================================================================================================
33                                     DEFINES
34 ==================================================================================================*/
35 #define USER_TAG "MSG_FW"
36 #undef LOG_TAG
37 #define LOG_TAG "MSG_SERVICE"
38 #define MSG_SMS_VALID_TAG "VLD_SMS"
39 #define MSG_MMS_VALID_TAG "VLD_MMS"
40
41 #define DLOG_ENABLE
42
43 #if defined(DLOG_ENABLE)
44
45 /*log macros*/
46 #define MSG_BEGIN()\
47         do { \
48                 SLOGD(" BEGIN >>>> \n");\
49         } while (0)
50
51 #define MSG_END()\
52         do { \
53                 SLOGD(" END   <<<<  \n");\
54         } while (0)
55
56 #define MSG_DEBUG(fmt, ...)\
57         do { \
58                 SLOGD(fmt"\n", ##__VA_ARGS__);\
59         } while (0)
60
61 #define MSG_INFO(fmt, ...)\
62         do { \
63                 SLOGI("* Info * " fmt "\n", ##__VA_ARGS__);\
64         } while (0)
65
66 #define MSG_WARN(fmt, ...)\
67         do { \
68                 SLOGW("* Warning * " fmt "\n", ##__VA_ARGS__);\
69         } while (0)
70
71 #define MSG_ERR(fmt, ...)\
72         do { \
73                 SLOGE("* Error * " fmt "\n", ##__VA_ARGS__);\
74         } while (0)
75
76 #define MSG_FATAL(fmt, ...)\
77         do { \
78                 SLOGE(" ERROR << " fmt " >>\n", ##__VA_ARGS__);\
79         } while (0)
80
81 /*secure log macros*/
82 #define MSG_SEC_DEBUG(fmt, ...)\
83         do { \
84                 SECURE_SLOGD(fmt"\n", ##__VA_ARGS__);\
85         } while (0)
86
87 #define MSG_SEC_INFO(fmt, ...)\
88         do { \
89                 SECURE_SLOGI("* Info * " fmt"\n", ##__VA_ARGS__);\
90         } while (0)
91
92 #define MSG_SEC_ERR(fmt, ...)\
93         do { \
94                 SECURE_LOG(LOG_ERROR, LOG_TAG, "* Error *" fmt "\n", ##__VA_ARGS__);\
95         } while (0)
96
97 /*valid data log macros*/
98 #define MSG_SMS_VLD_INFO(fmt, ...)\
99         do { \
100                 SLOG(LOG_DEBUG, MSG_SMS_VALID_TAG, "[SMS INFO]%s, " fmt "\n", __TIMESTAMP__, ##__VA_ARGS__);\
101         } while (0)
102
103 #define MSG_SMS_VLD_TXT(fmt, ...)\
104         do { \
105                 SLOG(LOG_DEBUG, MSG_SMS_VALID_TAG, "[SMS_TEXT]%s, " fmt "\n", __TIMESTAMP__, ##__VA_ARGS__);\
106         } while (0)
107
108 #define MSG_MMS_VLD_INFO(fmt, ...)\
109         do { \
110                 SLOG(LOG_DEBUG, MSG_MMS_VALID_TAG, "[MMS INFO]%s, " fmt "\n", __TIMESTAMP__, ##__VA_ARGS__);\
111         } while (0)
112
113 #define MSG_MMS_VLD_TXT(fmt, ...)\
114         do { \
115                 SLOG(LOG_DEBUG, MSG_MMS_VALID_TAG, "[MMS TEXT]%s, " fmt "\n", __TIMESTAMP__, ##__VA_ARGS__);\
116         } while (0)
117
118 #define MSG_MMS_VLD_FILE(fmt, ...)\
119         do { \
120                 SLOG(LOG_DEBUG, MSG_MMS_VALID_TAG, "[MMS FILE]%s, " fmt "\n", __TIMESTAMP__, ##__VA_ARGS__);\
121         } while (0)
122
123 /*err & warn return message log macros*/
124 #define MSG_ERR_RET_VM(expr, val, fmt, ...)\
125         do { \
126                 if (expr) {\
127                         MSG_ERR(fmt, ##__VA_ARGS__);\
128                         return (val);\
129                 }\
130         } while (0)
131
132 #define MSG_ERR_RET_M(expr, fmt, ...)\
133         do { \
134                 if (expr) {\
135                         MSG_ERR(fmt, ##__VA_ARGS__);\
136                         return;\
137                 }\
138         } while (0)
139
140 #define MSG_WARN_M(expr, fmt, ...)\
141         do { \
142                 if (expr) {\
143                         MSG_WARN(fmt, ##__VA_ARGS__);\
144                 }\
145         } while (0)
146
147 /*profile log macros*/
148 #define MSG_PROFILE_BEGIN(pfid) \
149         unsigned int __prf_l1_##pfid = __LINE__;\
150         struct timeval __prf_1_##pfid;\
151         struct timeval __prf_2_##pfid;\
152         do {\
153                 gettimeofday(&__prf_1_##pfid, 0);\
154         } while (0)
155
156 #define MSG_PROFILE_END(pfid) \
157         unsigned int __prf_l2_##pfid = __LINE__;\
158         do { \
159                 gettimeofday(&__prf_2_##pfid, 0);\
160                 long __ds = __prf_2_##pfid.tv_sec - __prf_1_##pfid.tv_sec;\
161                 long __dm = __prf_2_##pfid.tv_usec - __prf_1_##pfid.tv_usec;\
162                 if ( __dm < 0 ) { __ds--; __dm = 1000000 + __dm; } \
163                 SLOGD("**PROFILE** [MSGFW: %s: %s() %u ~ %u] " #pfid " -> Elapsed Time: %u.%06u seconds\n", \
164                 rindex(__FILE__, '/')+1, \
165                 __FUNCTION__, \
166                 __prf_l1_##pfid, \
167                 __prf_l2_##pfid, \
168                 (unsigned int)(__ds), \
169                 (unsigned int)(__dm));\
170         } while (0)
171
172 #elif defined(LOG_ENABLE)
173
174 int get_tid();
175
176 #define MSG_FATAL(fmt, ...) \
177         do { \
178                 printf("\n[%d] [MSGFW: %s: %s(): %d] *FAILED* << " fmt" >>\n", get_tid(), rindex(__FILE__, '/')+1,  __FUNCTION__, __LINE__,  ##__VA_ARGS__);\
179         } while (0)
180
181 #define MSG_DEBUG(fmt, ...) \
182         do { \
183                 printf("\n[%d] [MSGFW: %s: %s(): %d] " fmt"\n", get_tid(), rindex(__FILE__, '/')+1, __FUNCTION__, __LINE__, ##__VA_ARGS__);\
184         } while (0)
185
186 #define MSG_BEGIN() \
187         do { \
188         printf("\n[%d] BEGIN >>>> %s() at [MSGFW: %s: %d]\n", get_tid(), __FUNCTION__, rindex(__FILE__, '/')+1,  __LINE__);\
189     } while (0)
190
191 #define MSG_END() \
192         do { \
193         printf("\n[%d] END   <<<< %s() at [MSGFW: %s: %d]\n", get_tid(), __FUNCTION__, rindex(__FILE__, '/')+1,  __LINE__); \
194     } \
195     while (0)
196
197 #define MSG_PROFILE_BEGIN(pfid) \
198         unsigned int __prf_l1_##pfid = __LINE__;    \
199         struct timeval __prf_1_##pfid;              \
200         struct timeval __prf_2_##pfid;              \
201         do {                                        \
202                 gettimeofday(&__prf_1_##pfid, 0);       \
203         } while (0)
204
205 #define MSG_PROFILE_END(pfid) \
206         unsigned int __prf_l2_##pfid = __LINE__;\
207         do { \
208                 gettimeofday(&__prf_2_##pfid, 0);\
209                 long __ds = __prf_2_##pfid.tv_sec - __prf_1_##pfid.tv_sec;\
210                 long __dm = __prf_2_##pfid.tv_usec - __prf_1_##pfid.tv_usec;\
211                 if ( __dm < 0 ) { __ds--; __dm = 1000000 + __dm; } \
212                 printf("**PROFILE** [MSGFW: %s: %s() %u ~ %u] " #pfid                            \
213                 " -> Elapsed Time: %u.%06u seconds\n",                    \
214                 rindex(__FILE__, '/')+1,                \
215                 __FUNCTION__, \
216                 __prf_l1_##pfid,                                         \
217                 __prf_l2_##pfid,                                         \
218                 (unsigned int)(__ds),                                    \
219                 (unsigned int)(__dm));                                   \
220         } while (0)
221
222 #else
223
224 #define MSG_FATAL(fmt, ...)
225 #define MSG_DEBUG(fmt, ...)
226 #define MSG_BEGIN()
227 #define MSG_END()
228
229 #define MSG_PROFILE_BEGIN(pfid) \
230         unsigned int __prf_l1_##pfid = __LINE__;    \
231         struct timeval __prf_1_##pfid;              \
232         struct timeval __prf_2_##pfid;              \
233         do {                                        \
234                 gettimeofday(&__prf_1_##pfid, 0);       \
235         } while (0)
236
237 #define MSG_PROFILE_END(pfid) \
238         unsigned int __prf_l2_##pfid = __LINE__;\
239         do { \
240                 gettimeofday(&__prf_2_##pfid, 0);\
241                 long __ds = __prf_2_##pfid.tv_sec - __prf_1_##pfid.tv_sec;\
242                 long __dm = __prf_2_##pfid.tv_usec - __prf_1_##pfid.tv_usec;\
243                 if ( __dm < 0 ) { __ds--; __dm = 1000000 + __dm; } \
244                 printf("**PROFILE** [MSGFW: %s: %s() %u ~ %u] " #pfid                            \
245                 " -> Elapsed Time: %u.%06u seconds\n",                    \
246                 rindex(__FILE__, '/')+1,                \
247                 __FUNCTION__, \
248                 __prf_l1_##pfid,                                         \
249                 __prf_l2_##pfid,                                         \
250                 (unsigned int)(__ds),                                    \
251                 (unsigned int)(__dm));                                   \
252         } while (0)
253
254 #endif
255
256
257 #define MSG_FREE(x) \
258         ({\
259                 if (x != NULL) {\
260                 free(x);\
261                 x = NULL;}\
262         })
263
264
265 /*==================================================================================================
266                                                                          FUNCTION PROTOTYPES
267 ==================================================================================================*/
268
269 const char * MsgDbgCmdStr(MSG_CMD_TYPE_T cmdType);
270 const char * MsgDbgEvtStr(MSG_EVENT_TYPE_T evtType);
271
272 #endif /*__MSG_DEBUG_H__ */
273