Modify flora license version.
[platform/core/messaging/msg-service.git] / include / utils / MsgDebug.h
1 /*
2 * Copyright 2012-2013  Samsung Electronics Co., Ltd
3 *
4 * Licensed under the Flora License, Version 1.1 (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://floralicense.org/license/
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
29 #include "MsgTypes.h"
30 #include "MsgCmdTypes.h"
31 #include "MsgFilterTypes.h"
32
33 extern "C"{
34         #include <dlog.h>
35 };
36
37
38 /*==================================================================================================
39                                     DEFINES
40 ==================================================================================================*/
41 #define USER_TAG "MSG_FW"
42 #undef LOG_TAG
43 #define LOG_TAG "MSG_SERVICE"
44 #define MSG_SMS_VALID_TAG "VLD_SMS"
45 #define MSG_MMS_VALID_TAG "VLD_MMS"
46
47 #define DLOG_ENABLE
48 //#define LOG_ENABLE
49
50
51 /*==================================================================================================
52                                      FUNCTION PROTOTYPES
53 ==================================================================================================*/
54 int get_tid();
55
56
57 #if defined(DLOG_ENABLE)
58
59 #define MSG_FATAL(fmt, ...) \
60         do \
61         {\
62                 SLOGD(" ERROR << " fmt " >>\n\n", ##__VA_ARGS__);\
63         } while (0)
64
65 #define MSG_DEBUG(fmt, ...)\
66         do\
67         {\
68                 SLOGD(fmt"\n\n", ##__VA_ARGS__);\
69         } while (0)
70
71 #define MSG_BEGIN() \
72         do\
73     {\
74                 SLOGD(" BEGIN >>>> \n\n");\
75     } while( 0 )
76
77 #define MSG_END() \
78         do\
79     {\
80                 SLOGD(" END   <<<<  \n\n");\
81     } \
82     while( 0 )
83
84 #define MSG_PROFILE_BEGIN(pfid) \
85         unsigned int __prf_l1_##pfid = __LINE__;    \
86         struct timeval __prf_1_##pfid;              \
87         struct timeval __prf_2_##pfid;              \
88         do {                                        \
89                 gettimeofday(&__prf_1_##pfid, 0);       \
90         } while (0)
91
92 #define MSG_PROFILE_END(pfid) \
93         unsigned int __prf_l2_##pfid = __LINE__;\
94         do { \
95                 gettimeofday(&__prf_2_##pfid, 0);\
96                 long __ds = __prf_2_##pfid.tv_sec - __prf_1_##pfid.tv_sec;\
97                 long __dm = __prf_2_##pfid.tv_usec - __prf_1_##pfid.tv_usec;\
98                 if ( __dm < 0 ) { __ds--; __dm = 1000000 + __dm; } \
99                 SLOG(LOG_DEBUG, USER_TAG, "**PROFILE** [MSGFW: %s: %s() %u ~ %u] " #pfid                            \
100                 " -> Elapsed Time: %u.%06u seconds\n",                    \
101                 rindex(__FILE__, '/')+1,                \
102                 __FUNCTION__, \
103                 __prf_l1_##pfid,                                         \
104                 __prf_l2_##pfid,                                         \
105                 (unsigned int)(__ds),                                    \
106                 (unsigned int)(__dm));                                   \
107         } while (0)
108
109
110 #define MSG_SMS_VLD_INFO(fmt, ...)\
111         do\
112         {\
113                 SLOG(LOG_DEBUG, MSG_SMS_VALID_TAG, "[SMS INFO]%s, "fmt"\n", __TIMESTAMP__, ##__VA_ARGS__);\
114         } while (0)
115
116 #define MSG_SMS_VLD_TXT(fmt, ...)\
117         do\
118         {\
119                 SLOG(LOG_DEBUG, MSG_SMS_VALID_TAG, "[SMS_TEXT]%s, "fmt"\n", __TIMESTAMP__, ##__VA_ARGS__);\
120         } while (0)
121
122 #define MSG_MMS_VLD_INFO(fmt, ...)\
123         do\
124         {\
125                 SLOG(LOG_DEBUG, MSG_MMS_VALID_TAG, "[MMS INFO]%s, "fmt"\n", __TIMESTAMP__, ##__VA_ARGS__);\
126         } while (0)
127
128 #define MSG_MMS_VLD_TXT(fmt, ...)\
129         do\
130         {\
131                 SLOG(LOG_DEBUG, MSG_MMS_VALID_TAG, "[MMS TEXT]%s, "fmt"\n", __TIMESTAMP__, ##__VA_ARGS__);\
132         } while (0)
133
134 #define MSG_MMS_VLD_FILE(fmt, ...)\
135         do\
136         {\
137                 SLOG(LOG_DEBUG, MSG_MMS_VALID_TAG, "[MMS FILE]%s, "fmt"\n", __TIMESTAMP__, ##__VA_ARGS__);\
138         } while (0)
139
140 #elif defined(LOG_ENABLE)
141
142 #define MSG_FATAL(fmt, ...) \
143         do \
144         {\
145                 printf("\n[%d] [MSGFW: %s: %s(): %d] *FAILED* << " fmt" >>\n", get_tid(), rindex(__FILE__, '/')+1,  __FUNCTION__, __LINE__,  ##__VA_ARGS__);\
146         } while (0)
147
148 #define MSG_DEBUG(fmt, ...) \
149         do\
150         {\
151                 printf("\n[%d] [MSGFW: %s: %s(): %d] " fmt"\n", get_tid(), rindex(__FILE__, '/')+1, __FUNCTION__, __LINE__, ##__VA_ARGS__);\
152         } while (0)
153
154 #define MSG_BEGIN() \
155         do\
156     {\
157         printf("\n[%d] BEGIN >>>> %s() at [MSGFW: %s: %d]\n", get_tid(),__FUNCTION__, rindex(__FILE__, '/')+1,  __LINE__ );\
158     } while( 0 )
159
160 #define MSG_END() \
161         do\
162     {\
163         printf("\n[%d] END   <<<< %s() at [MSGFW: %s: %d]\n", get_tid(), __FUNCTION__, rindex(__FILE__, '/')+1,  __LINE__); \
164     } \
165     while( 0 )
166
167 #define MSG_PROFILE_BEGIN(pfid) \
168         unsigned int __prf_l1_##pfid = __LINE__;    \
169         struct timeval __prf_1_##pfid;              \
170         struct timeval __prf_2_##pfid;              \
171         do {                                        \
172                 gettimeofday(&__prf_1_##pfid, 0);       \
173         } while (0)
174
175 #define MSG_PROFILE_END(pfid) \
176         unsigned int __prf_l2_##pfid = __LINE__;\
177         do { \
178                 gettimeofday(&__prf_2_##pfid, 0);\
179                 long __ds = __prf_2_##pfid.tv_sec - __prf_1_##pfid.tv_sec;\
180                 long __dm = __prf_2_##pfid.tv_usec - __prf_1_##pfid.tv_usec;\
181                 if ( __dm < 0 ) { __ds--; __dm = 1000000 + __dm; } \
182                 printf("**PROFILE** [MSGFW: %s: %s() %u ~ %u] " #pfid                            \
183                 " -> Elapsed Time: %u.%06u seconds\n",                    \
184                 rindex(__FILE__, '/')+1,                \
185                 __FUNCTION__, \
186                 __prf_l1_##pfid,                                         \
187                 __prf_l2_##pfid,                                         \
188                 (unsigned int)(__ds),                                    \
189                 (unsigned int)(__dm));                                   \
190         } while (0)
191
192 #else
193
194 #define MSG_FATAL(fmt, ...)
195 #define MSG_DEBUG(fmt, ...)
196 #define MSG_BEGIN()
197 #define MSG_END()
198
199 #define MSG_PROFILE_BEGIN(pfid) \
200         unsigned int __prf_l1_##pfid = __LINE__;    \
201         struct timeval __prf_1_##pfid;              \
202         struct timeval __prf_2_##pfid;              \
203         do {                                        \
204                 gettimeofday(&__prf_1_##pfid, 0);       \
205         } while (0)
206
207 #define MSG_PROFILE_END(pfid) \
208         unsigned int __prf_l2_##pfid = __LINE__;\
209         do { \
210                 gettimeofday(&__prf_2_##pfid, 0);\
211                 long __ds = __prf_2_##pfid.tv_sec - __prf_1_##pfid.tv_sec;\
212                 long __dm = __prf_2_##pfid.tv_usec - __prf_1_##pfid.tv_usec;\
213                 if ( __dm < 0 ) { __ds--; __dm = 1000000 + __dm; } \
214                 printf("**PROFILE** [MSGFW: %s: %s() %u ~ %u] " #pfid                            \
215                 " -> Elapsed Time: %u.%06u seconds\n",                    \
216                 rindex(__FILE__, '/')+1,                \
217                 __FUNCTION__, \
218                 __prf_l1_##pfid,                                         \
219                 __prf_l2_##pfid,                                         \
220                 (unsigned int)(__ds),                                    \
221                 (unsigned int)(__dm));                                   \
222         } while (0)
223
224 #endif
225
226 const char * MsgDbgCmdStr(MSG_CMD_TYPE_T cmdType);
227 const char * MsgDbgEvtStr(MSG_EVENT_TYPE_T evtType);
228
229 #endif //__MSG_DEBUG_H__
230