|
1 // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). |
|
2 // All rights reserved. |
|
3 // This component and the accompanying materials are made available |
|
4 // under the terms of "Eclipse Public License v1.0" |
|
5 // which accompanies this distribution, and is available |
|
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // |
|
15 |
|
16 #ifndef _SMSSTACKLOG_H_ |
|
17 #define _SMSSTACKLOG_H_ |
|
18 |
|
19 /** |
|
20 * @file |
|
21 * |
|
22 * Logging macros for SMSStack. These use the Comms Debug Utility framework |
|
23 * (aka Flogger V2). |
|
24 * |
|
25 * To enable logging create a file called "comsdbg.ini" in the Symbian OS |
|
26 * "C:\Logs\" directory which contains the following lines: |
|
27 * |
|
28 * MEDIA FILE |
|
29 * LOG SMSStack Common |
|
30 * LOG SMSStack GSMU |
|
31 * LOG SMSStack SMSPROT |
|
32 * LOG SMSStack SMSU |
|
33 * LOG SMSStack SMSIF |
|
34 * LOG SMSStack WAPPROT |
|
35 * |
|
36 * Each line relates to a particular part of the SMS Stack, enabling you to |
|
37 * log only the interesting bits. |
|
38 * |
|
39 * By default logging is only present on UDEB builds. To enable UREL logging |
|
40 * on a device, you will need to rebuild your ROM with UDEB SMS components. |
|
41 * |
|
42 * To enable logging on a device, place the "comsdbg.ini" file in the ROM |
|
43 * under the "Z:\Logs\" directory. The log file will be written in the |
|
44 * "C:\Logs\" directory on the device. |
|
45 * |
|
46 * To enable logging to the serial port change the "MEDIA FILE" line to |
|
47 * "MEDIA SERIAL::1" or "MEDIA SERIAL::2". Note that this may no longer |
|
48 * work due to a defect in the Comms Debug Framework. |
|
49 * |
|
50 * If you wish to have individual logs for each component, then use the |
|
51 * extractlog.pl utility found in the %EPOCROOT%\Epoc32\Tools\ directory. E.g. |
|
52 * |
|
53 * extractlog.pl \EPOC32\WINSCW\C\LOGS\LOG.TXT |
|
54 * |
|
55 * @internalComponent |
|
56 */ |
|
57 |
|
58 #include <comms-infras/commsdebugutility.h> |
|
59 #include <etelmm.h> |
|
60 |
|
61 #ifdef _DEBUG |
|
62 #define _SMS_LOGGING_ENABLED |
|
63 #endif |
|
64 |
|
65 |
|
66 #ifdef _SMS_LOGGING_ENABLED |
|
67 |
|
68 _LIT8(KSMSStackSubSystem, "SMSStack"); |
|
69 |
|
70 #define SMSFLOG1(N,A) { \ |
|
71 _LIT8(KLogString, A); \ |
|
72 __FLOG_STATIC0(KSMSStackSubSystem,(N),KLogString); \ |
|
73 } |
|
74 #define SMSFLOG2(N,A,B) { \ |
|
75 _LIT8(KLogString, A); \ |
|
76 __FLOG_STATIC1(KSMSStackSubSystem,(N),KLogString,(B)); \ |
|
77 } |
|
78 #define SMSFLOG3(N,A,B,C) { \ |
|
79 _LIT8(KLogString, A); \ |
|
80 __FLOG_STATIC2(KSMSStackSubSystem,(N),KLogString,(B),(C)); \ |
|
81 } |
|
82 #define SMSFLOG4(N,A,B,C,D) { \ |
|
83 _LIT8(KLogString, A); \ |
|
84 __FLOG_STATIC3(KSMSStackSubSystem,(N),KLogString,(B),(C),(D)); \ |
|
85 } |
|
86 #define SMSFLOG5(N,A,B,C,D,E) { \ |
|
87 _LIT8(KLogString, A); \ |
|
88 __FLOG_STATIC4(KSMSStackSubSystem,(N),KLogString,(B),(C),(D),(E)); \ |
|
89 } |
|
90 #define SMSFLOG6(N,A,B,C,D,E,F) { \ |
|
91 _LIT8(KLogString, A); \ |
|
92 __FLOG_STATIC5(KSMSStackSubSystem,(N),KLogString,(B),(C),(D),(E),(F)); \ |
|
93 } |
|
94 #define SMSFLOG7(N,A,B,C,D,E,F,G) { \ |
|
95 _LIT8(KLogString, A); \ |
|
96 __FLOG_STATIC6(KSMSStackSubSystem,(N),KLogString,(B),(C),(D),(E),(F),(G)); \ |
|
97 } |
|
98 #define SMSFLOG8(N,A,B,C,D,E,F,G,H) { \ |
|
99 _LIT8(KLogString, A); \ |
|
100 __FLOG_STATIC7(KSMSStackSubSystem,(N),KLogString,(B),(C),(D),(E),(F),(G),(H)); \ |
|
101 } |
|
102 |
|
103 _LIT8(KSMSStackCommon, "Common"); |
|
104 _LIT8(KSMSStackGSMU, "GSMU"); |
|
105 _LIT8(KSMSStackSMSPROT, "SMSPROT"); |
|
106 _LIT8(KSMSStackSMSU, "SMSU"); |
|
107 _LIT8(KSMSStackSMSIF, "SMSIF"); |
|
108 _LIT8(KSMSStackWAPPROT, "WAPPROT"); |
|
109 |
|
110 |
|
111 #define LOGCOMMON1(A) SMSFLOG1(KSMSStackCommon,A) |
|
112 #define LOGCOMMON2(A,B) SMSFLOG2(KSMSStackCommon,A,(B)) |
|
113 #define LOGCOMMON3(A,B,C) SMSFLOG3(KSMSStackCommon,A,(B),(C)) |
|
114 #define LOGCOMMON4(A,B,C,D) SMSFLOG4(KSMSStackCommon,A,(B),(C),(D)) |
|
115 #define LOGCOMMON5(A,B,C,D,E) SMSFLOG5(KSMSStackCommon,A,(B),(C),(D),(E)) |
|
116 #define LOGCOMMON6(A,B,C,D,E,F) SMSFLOG6(KSMSStackCommon,A,(B),(C),(D),(E),(F)) |
|
117 #define LOGCOMMON7(A,B,C,D,E,F,G) SMSFLOG7(KSMSStackCommon,A,(B),(C),(D),(E),(F),(G)) |
|
118 #define LOGCOMMON8(A,B,C,D,E,F,G,H) SMSFLOG8(KSMSStackCommon,A,(B),(C),(D),(E),(F),(G),(H)) |
|
119 #define LOGCOMMONTIMESTAMP() { \ |
|
120 TTime now; \ |
|
121 now.UniversalTime(); \ |
|
122 TDateTime dateTime(now.DateTime()); \ |
|
123 LOGCOMMON5("TimeStamp=%02d:%02d:%02d.%06d", \ |
|
124 dateTime.Hour(), dateTime.Minute(), dateTime.Second(), dateTime.MicroSecond()); \ |
|
125 } |
|
126 |
|
127 #define LOGGSMU1(A) SMSFLOG1(KSMSStackGSMU,A) |
|
128 #define LOGGSMU2(A,B) SMSFLOG2(KSMSStackGSMU,A,(B)) |
|
129 #define LOGGSMU3(A,B,C) SMSFLOG3(KSMSStackGSMU,A,(B),(C)) |
|
130 #define LOGGSMU4(A,B,C,D) SMSFLOG4(KSMSStackGSMU,A,(B),(C),(D)) |
|
131 #define LOGGSMU5(A,B,C,D,E) SMSFLOG5(KSMSStackGSMU,A,(B),(C),(D),(E)) |
|
132 #define LOGGSMU6(A,B,C,D,E,F) SMSFLOG6(KSMSStackGSMU,A,(B),(C),(D),(E),(F)) |
|
133 #define LOGGSMU7(A,B,C,D,E,F,G) SMSFLOG7(KSMSStackGSMU,A,(B),(C),(D),(E),(F),(G)) |
|
134 #define LOGGSMU8(A,B,C,D,E,F,G,H) SMSFLOG8(KSMSStackGSMU,A,(B),(C),(D),(E),(F),(G),(H)) |
|
135 #define LOGGSMUTIMESTAMP() { \ |
|
136 TTime now; \ |
|
137 now.UniversalTime(); \ |
|
138 TDateTime dateTime(now.DateTime()); \ |
|
139 LOGGSMU5("TimeStamp=%02d:%02d:%02d.%06d", \ |
|
140 dateTime.Hour(), dateTime.Minute(), dateTime.Second(), dateTime.MicroSecond()); \ |
|
141 } |
|
142 |
|
143 #define LOGSMSPROT1(A) SMSFLOG1(KSMSStackSMSPROT,A) |
|
144 #define LOGSMSPROT2(A,B) SMSFLOG2(KSMSStackSMSPROT,A,(B)) |
|
145 #define LOGSMSPROT3(A,B,C) SMSFLOG3(KSMSStackSMSPROT,A,(B),(C)) |
|
146 #define LOGSMSPROT4(A,B,C,D) SMSFLOG4(KSMSStackSMSPROT,A,(B),(C),(D)) |
|
147 #define LOGSMSPROT5(A,B,C,D,E) SMSFLOG5(KSMSStackSMSPROT,A,(B),(C),(D),(E)) |
|
148 #define LOGSMSPROT6(A,B,C,D,E,F) SMSFLOG6(KSMSStackSMSPROT,A,(B),(C),(D),(E),(F)) |
|
149 #define LOGSMSPROT7(A,B,C,D,E,F,G) SMSFLOG7(KSMSStackSMSPROT,A,(B),(C),(D),(E),(F),(G)) |
|
150 #define LOGSMSPROT8(A,B,C,D,E,F,G,H) SMSFLOG8(KSMSStackSMSPROT,A,(B),(C),(D),(E),(F),(G),(H)) |
|
151 #define LOGSMSPROTTIMESTAMP() { \ |
|
152 TTime now; \ |
|
153 now.UniversalTime(); \ |
|
154 TDateTime dateTime(now.DateTime()); \ |
|
155 LOGSMSPROT5("TimeStamp=%02d:%02d:%02d.%06d", \ |
|
156 dateTime.Hour(), dateTime.Minute(), dateTime.Second(), dateTime.MicroSecond()); \ |
|
157 } |
|
158 |
|
159 #define LOGSMSU1(A) SMSFLOG1(KSMSStackSMSU,A) |
|
160 #define LOGSMSU2(A,B) SMSFLOG2(KSMSStackSMSU,A,(B)) |
|
161 #define LOGSMSU3(A,B,C) SMSFLOG3(KSMSStackSMSU,A,(B),(C)) |
|
162 #define LOGSMSU4(A,B,C,D) SMSFLOG4(KSMSStackSMSU,A,(B),(C),(D)) |
|
163 #define LOGSMSU5(A,B,C,D,E) SMSFLOG5(KSMSStackSMSU,A,(B),(C),(D),(E)) |
|
164 #define LOGSMSU6(A,B,C,D,E,F) SMSFLOG6(KSMSStackSMSU,A,(B),(C),(D),(E),(F)) |
|
165 #define LOGSMSU7(A,B,C,D,E,F,G) SMSFLOG7(KSMSStackSMSU,A,(B),(C),(D),(E),(F),(G)) |
|
166 #define LOGSMSU8(A,B,C,D,E,F,G,H) SMSFLOG8(KSMSStackSMSU,A,(B),(C),(D),(E),(F),(G),(H)) |
|
167 #define LOGSMSUTIMESTAMP() { \ |
|
168 TTime now; \ |
|
169 now.UniversalTime(); \ |
|
170 TDateTime dateTime(now.DateTime()); \ |
|
171 LOGSMSU5("TimeStamp=%02d:%02d:%02d.%06d", \ |
|
172 dateTime.Hour(), dateTime.Minute(), dateTime.Second(), dateTime.MicroSecond()); \ |
|
173 } |
|
174 |
|
175 #define LOGSMSIF1(A) SMSFLOG1(KSMSStackSMSIF,A) |
|
176 #define LOGSMSIF2(A,B) SMSFLOG2(KSMSStackSMSIF,A,(B)) |
|
177 #define LOGSMSIF3(A,B,C) SMSFLOG3(KSMSStackSMSIF,A,(B),(C)) |
|
178 #define LOGSMSIF4(A,B,C,D) SMSFLOG4(KSMSStackSMSIF,A,(B),(C),(D)) |
|
179 #define LOGSMSIF5(A,B,C,D,E) SMSFLOG5(KSMSStackSMSIF,A,(B),(C),(D),(E)) |
|
180 #define LOGSMSIF6(A,B,C,D,E,F) SMSFLOG6(KSMSStackSMSIF,A,(B),(C),(D),(E),(F)) |
|
181 #define LOGSMSIF7(A,B,C,D,E,F,G) SMSFLOG7(KSMSStackSMSIF,A,(B),(C),(D),(E),(F),(G)) |
|
182 #define LOGSMSIF8(A,B,C,D,E,F,G,H) SMSFLOG8(KSMSStackSMSIF,A,(B),(C),(D),(E),(F),(G),(H)) |
|
183 #define LOGSMSIFTIMESTAMP() { \ |
|
184 TTime now; \ |
|
185 now.UniversalTime(); \ |
|
186 TDateTime dateTime(now.DateTime()); \ |
|
187 LOGSMSIF5("TimeStamp=%02d:%02d:%02d.%06d", \ |
|
188 dateTime.Hour(), dateTime.Minute(), dateTime.Second(), dateTime.MicroSecond()); \ |
|
189 } |
|
190 #define LOGSMSIFPDU(A,B,C) LogSmsIfPDU((A),(B),(C)) |
|
191 #define LOGSMSIFHEXBUF(A,B) LogSmsIfHexBuf((A),(B)) |
|
192 #define LOGSMSIFTYPEOFNUMBER(A,B) LogSmsIfTypeOfNumber((A),(B)) |
|
193 #define LOGSMSIFNUMBERINGPLAN(A,B) LogSmsIfNumberingPlan((A),(B)) |
|
194 #define LOGSMSIFSMSENTRY(A,B) LogSmsIfSmsEntry((A),(B)) |
|
195 #define LOGSMSIFSENDATTRIBUTES(A,B) LogSmsIfSendAttributes((A),(B)) |
|
196 |
|
197 #define LOGWAPPROT1(A) SMSFLOG1(KSMSStackWAPPROT,A) |
|
198 #define LOGWAPPROT2(A,B) SMSFLOG2(KSMSStackWAPPROT,A,(B)) |
|
199 #define LOGWAPPROT3(A,B,C) SMSFLOG3(KSMSStackWAPPROT,A,(B),(C)) |
|
200 #define LOGWAPPROT4(A,B,C,D) SMSFLOG4(KSMSStackWAPPROT,A,(B),(C),(D)) |
|
201 #define LOGWAPPROT5(A,B,C,D,E) SMSFLOG5(KSMSStackWAPPROT,A,(B),(C),(D),(E)) |
|
202 #define LOGWAPPROT6(A,B,C,D,E,F) SMSFLOG6(KSMSStackWAPPROT,A,(B),(C),(D),(E),(F)) |
|
203 #define LOGWAPPROT7(A,B,C,D,E,F,G) SMSFLOG7(KSMSStackWAPPROT,A,(B),(C),(D),(E),(F),(G)) |
|
204 #define LOGWAPPROT8(A,B,C,D,E,F,G,H) SMSFLOG8(KSMSStackWAPPROT,A,(B),(C),(D),(E),(F),(G),(H)) |
|
205 #define LOGWAPPROTTIMESTAMP() { \ |
|
206 TTime now; \ |
|
207 now.UniversalTime(); \ |
|
208 TDateTime dateTime(now.DateTime()); \ |
|
209 LOGWAPPROT5("TimeStamp=%02d:%02d:%02d.%06d", \ |
|
210 dateTime.Hour(), dateTime.Minute(), dateTime.Second(), dateTime.MicroSecond()); \ |
|
211 } |
|
212 |
|
213 #else // _SMS_LOGGING_ENABLED |
|
214 |
|
215 #define LOGCOMMON1(A) |
|
216 #define LOGCOMMON2(A,B) |
|
217 #define LOGCOMMON3(A,B,C) |
|
218 #define LOGCOMMON4(A,B,C,D) |
|
219 #define LOGCOMMON5(A,B,C,D,E) |
|
220 #define LOGCOMMON6(A,B,C,D,E,F) |
|
221 #define LOGCOMMON7(A,B,C,D,E,F,G) |
|
222 #define LOGCOMMON8(A,B,C,D,E,F,G,H) |
|
223 #define LOGCOMMONTIMESTAMP() |
|
224 |
|
225 #define LOGGSMU1(A) |
|
226 #define LOGGSMU2(A,B) |
|
227 #define LOGGSMU3(A,B,C) |
|
228 #define LOGGSMU4(A,B,C,D) |
|
229 #define LOGGSMU5(A,B,C,D,E) |
|
230 #define LOGGSMU6(A,B,C,D,E,F) |
|
231 #define LOGGSMU7(A,B,C,D,E,F,G) |
|
232 #define LOGGSMU8(A,B,C,D,E,F,G,H) |
|
233 #define LOGGSMUTIMESTAMP() |
|
234 |
|
235 #define LOGSMSPROT1(A) |
|
236 #define LOGSMSPROT2(A,B) |
|
237 #define LOGSMSPROT3(A,B,C) |
|
238 #define LOGSMSPROT4(A,B,C,D) |
|
239 #define LOGSMSPROT5(A,B,C,D,E) |
|
240 #define LOGSMSPROT6(A,B,C,D,E,F) |
|
241 #define LOGSMSPROT7(A,B,C,D,E,F,G) |
|
242 #define LOGSMSPROT8(A,B,C,D,E,F,G,H) |
|
243 #define LOGSMSPROTTIMESTAMP() |
|
244 |
|
245 #define LOGSMSU1(A) |
|
246 #define LOGSMSU2(A,B) |
|
247 #define LOGSMSU3(A,B,C) |
|
248 #define LOGSMSU4(A,B,C,D) |
|
249 #define LOGSMSU5(A,B,C,D,E) |
|
250 #define LOGSMSU6(A,B,C,D,E,F) |
|
251 #define LOGSMSU7(A,B,C,D,E,F,G) |
|
252 #define LOGSMSU8(A,B,C,D,E,F,G,H) |
|
253 #define LOGSMSUTIMESTAMP() |
|
254 |
|
255 #define LOGSMSIF1(A) |
|
256 #define LOGSMSIF2(A,B) |
|
257 #define LOGSMSIF3(A,B,C) |
|
258 #define LOGSMSIF4(A,B,C,D) |
|
259 #define LOGSMSIF5(A,B,C,D,E) |
|
260 #define LOGSMSIF6(A,B,C,D,E,F) |
|
261 #define LOGSMSIF7(A,B,C,D,E,F,G) |
|
262 #define LOGSMSIF8(A,B,C,D,E,F,G,H) |
|
263 #define LOGSMSIFTIMESTAMP() |
|
264 #define LOGSMSIFPDU(A,B,C) |
|
265 #define LOGSMSIFHEXBUF(A,B) |
|
266 #define LOGSMSIFTYPEOFNUMBER(A,B) |
|
267 #define LOGSMSIFNUMBERINGPLAN(A,B) |
|
268 #define LOGSMSIFSMSENTRY(A,B) |
|
269 #define LOGSMSIFSENDATTRIBUTES(A,B) |
|
270 |
|
271 #define LOGWAPPROT1(A) |
|
272 #define LOGWAPPROT2(A,B) |
|
273 #define LOGWAPPROT3(A,B,C) |
|
274 #define LOGWAPPROT4(A,B,C,D) |
|
275 #define LOGWAPPROT5(A,B,C,D,E) |
|
276 #define LOGWAPPROT6(A,B,C,D,E,F) |
|
277 #define LOGWAPPROT7(A,B,C,D,E,F,G) |
|
278 #define LOGWAPPROT8(A,B,C,D,E,F,G,H) |
|
279 #define LOGWAPPROTTIMESTAMP() |
|
280 |
|
281 #endif // _SMS_LOGGING_ENABLED |
|
282 |
|
283 |
|
284 // |
|
285 // Functions to perform specific logging where necessary. |
|
286 // |
|
287 #ifdef _SMS_LOGGING_ENABLED |
|
288 void LogSmsIfPDU(const TDesC8& aText, const TDesC8& aPDU, TBool aCommandPdu); |
|
289 void LogSmsIfHexBuf(const TDesC8& aText, const TDesC8& aHexBuf); |
|
290 void LogSmsIfTypeOfNumber(const TDesC8& aText, RMobilePhone::TMobileTON aTON); |
|
291 void LogSmsIfNumberingPlan(const TDesC8& aText, RMobilePhone::TMobileNPI aNPI); |
|
292 void LogSmsIfSmsEntry(const TDesC8& aText, |
|
293 const RMobileSmsStore::TMobileGsmSmsEntryV1& aSmsGsmEntryV1); |
|
294 void LogSmsIfSendAttributes(const TDesC8& aText, |
|
295 const RMobileSmsMessaging::TMobileSmsSendAttributesV1& aAttrib); |
|
296 #endif |
|
297 |
|
298 // Define macros to disable and restore Code Coverage |
|
299 |
|
300 #ifndef BULLSEYE_OFF |
|
301 #ifdef _BullseyeCoverage |
|
302 #define BULLSEYE_OFF "BullseyeCoverage save off"; |
|
303 #define BULLSEYE_RESTORE "BullseyeCoverage restore"; |
|
304 #else |
|
305 #define BULLSEYE_OFF |
|
306 #define BULLSEYE_RESTORE |
|
307 #endif |
|
308 #endif |
|
309 |
|
310 #endif // _SMSSTACKLOG_H_ |