|
1 /* |
|
2 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of the License "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 #ifndef CSEDEBUG_H |
|
23 #define CSEDEBUG_H |
|
24 |
|
25 #include <flogger.h> |
|
26 |
|
27 |
|
28 |
|
29 // Define logging level here |
|
30 |
|
31 // Minimum log output |
|
32 #define CSE_HIGH_LEVEL_TRACES |
|
33 |
|
34 #define CSE_MIDDLE_LEVEL_TRACES |
|
35 |
|
36 // Maximum log output |
|
37 #define CSE_LOW_LEVEL_TRACES |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 /* |
|
43 ----------------------------------------------------------------------------- |
|
44 |
|
45 LOGGING MACROs |
|
46 |
|
47 USE THESE MACROS IN YOUR CODE |
|
48 |
|
49 Usage: |
|
50 |
|
51 Example: CSELOGSTRING_HIGH_LEVEL ("Test"); |
|
52 Example: CSELOGSTRING2_HIGH_LEVEL ("Test %d", aValue); |
|
53 Example: CSELOGSTRING3_HIGH_LEVEL ("Test %d %d", aValue1, aValue2); |
|
54 Example: CSELOGSTRING4_HIGH_LEVEL ("Test %d %d %d", aValue1, aValue2, aValue3); |
|
55 |
|
56 Example: CSE_LOG_STR_DESC_HIGH_LEVEL (own_desc); |
|
57 Example: CSE_LOG_STR_DESC2_HIGH_LEVEL (own_desc, aValue)); |
|
58 Example: CSE_LOG_STR_DESC3_HIGH_LEVEL (own_desc, aValue, aValue2); |
|
59 Example: CSE_LOG_STR_DESC4_HIGH_LEVEL (own_desc, aValue, aValue2, aValue3); |
|
60 |
|
61 ----------------------------------------------------------------------------- |
|
62 */ |
|
63 |
|
64 |
|
65 |
|
66 #ifdef CSE_HIGH_LEVEL_TRACES |
|
67 |
|
68 #define CSELOGTEXT_HIGH_LEVEL(AAAA) CSE_LOGTEXT(AAAA) |
|
69 #define CSELOGSTRING_HIGH_LEVEL(AAAA) CSE_LOGSTRING(AAAA) |
|
70 #define CSELOGSTRING2_HIGH_LEVEL(AAAA,BBBB) CSE_LOGSTRING2(AAAA,BBBB) |
|
71 #define CSELOGSTRING3_HIGH_LEVEL(AAAA,BBBB,CCCC) CSE_LOGSTRING3(AAAA,BBBB,CCCC) |
|
72 #define CSELOGSTRING4_HIGH_LEVEL(AAAA,BBBB,CCCC,DDDD) CSE_LOGSTRING4(AAAA,BBBB,CCCC,DDDD) |
|
73 |
|
74 #define CSE_LOG_STR_DESC_HIGH_LEVEL(AAAA) CSE_LOG_STR_DESC(AAAA) |
|
75 #define CSE_LOG_STR_DESC2_HIGH_LEVEL(AAAA,BBBB) CSE_LOG_STR_DESC2(AAAA,BBBB) |
|
76 #define CSE_LOG_STR_DESC3_HIGH_LEVEL(AAAA,BBBB,CCCC) CSE_LOG_STR_DESC3(AAAA,BBBB,CCCC) |
|
77 #define CSE_LOG_STR_DESC4_HIGH_LEVEL(AAAA,BBBB,CCCC,DDDD) CSE_LOG_STR_DESC4(AAAA,BBBB,CCCC,DDDD) |
|
78 |
|
79 #else |
|
80 |
|
81 #define CSELOGTEXT_HIGH_LEVEL(AAAA) |
|
82 #define CSELOGSTRING_HIGH_LEVEL(AAAA) |
|
83 #define CSELOGSTRING2_HIGH_LEVEL(AAAA,BBBB) |
|
84 #define CSELOGSTRING3_HIGH_LEVEL(AAAA,BBBB,CCCC) |
|
85 #define CSELOGSTRING4_HIGH_LEVEL(AAAA,BBBB,CCCC,DDDD) |
|
86 |
|
87 #define CSE_LOG_STR_DESC_HIGH_LEVEL(AAAA) |
|
88 #define CSE_LOG_STR_DESC2_HIGH_LEVEL(AAAA,BBBB) |
|
89 #define CSE_LOG_STR_DESC3_HIGH_LEVEL(AAAA,BBBB,CCCC) |
|
90 #define CSE_LOG_STR_DESC4_HIGH_LEVEL(AAAA,BBBB,CCCC,DDDD) |
|
91 |
|
92 #endif |
|
93 |
|
94 |
|
95 #ifdef CSE_MIDDLE_LEVEL_TRACES |
|
96 #define CSELOGSTRING_MIDDLE_LEVEL(AAAA) CSE_LOGSTRING(AAAA) |
|
97 #define CSELOGSTRING2_MIDDLE_LEVEL(AAAA,BBBB) CSE_LOGSTRING2(AAAA,BBBB) |
|
98 #define CSELOGSTRING3_MIDDLE_LEVEL(AAAA,BBBB,CCCC) CSE_LOGSTRING3(AAAA,BBBB,CCCC) |
|
99 #define CSELOGSTRING4_MIDDLE_LEVEL(AAAA,BBBB,CCCC,DDDD) CSE_LOGSTRING4(AAAA,BBBB,CCCC,DDDD) |
|
100 |
|
101 #define CSE_LOG_STR_DESC_MIDDLE_LEVEL(AAAA) CSE_LOG_STR_DESC(AAAA) |
|
102 #define CSE_LOG_STR_DESC2_MIDDLE_LEVEL(AAAA,BBBB) CSE_LOG_STR_DESC2(AAAA,BBBB) |
|
103 #define CSE_LOG_STR_DESC3_MIDDLE_LEVEL(AAAA,BBBB,CCCC) CSE_LOG_STR_DESC3(AAAA,BBBB,CCCC) |
|
104 #define CSE_LOG_STR_DESC4_MIDDLE_LEVEL(AAAA,BBBB,CCCC,DDDD) CSE_LOG_STR_DESC4(AAAA,BBBB,CCCC,DDDD) |
|
105 |
|
106 #else |
|
107 |
|
108 #define CSELOGSTRING_MIDDLE_LEVEL(AAAA) |
|
109 #define CSELOGSTRING2_MIDDLE_LEVEL(AAAA,BBBB) |
|
110 #define CSELOGSTRING3_MIDDLE_LEVEL(AAAA,BBBB,CCCC) |
|
111 #define CSELOGSTRING4_MIDDLE_LEVEL(AAAA,BBBB,CCCC,DDDD) |
|
112 |
|
113 #define CSE_LOG_STR_DESC_MIDDLE_LEVEL(AAAA) |
|
114 #define CSE_LOG_STR_DESC2_MIDDLE_LEVEL(AAAA,BBBB) |
|
115 #define CSE_LOG_STR_DESC3_MIDDLE_LEVEL(AAAA,BBBB,CCCC) |
|
116 #define CSE_LOG_STR_DESC4_MIDDLE_LEVEL(AAAA,BBBB,CCCC,DDDD) |
|
117 |
|
118 #endif |
|
119 |
|
120 |
|
121 #ifdef CSE_LOW_LEVEL_TRACES |
|
122 |
|
123 #define CSELOGTEXT_LOW_LEVEL(AAAA) CSE_LOGTEXT(AAAA) |
|
124 #define CSELOGSTRING_LOW_LEVEL(AAAA) CSE_LOGSTRING(AAAA) |
|
125 #define CSELOGSTRING2_LOW_LEVEL(AAAA,BBBB) CSE_LOGSTRING2(AAAA,BBBB) |
|
126 #define CSELOGSTRING3_LOW_LEVEL(AAAA,BBBB,CCCC) CSE_LOGSTRING3(AAAA,BBBB,CCCC) |
|
127 #define CSELOGSTRING4_LOW_LEVEL(AAAA,BBBB,CCCC,DDDD) CSE_LOGSTRING4(AAAA,BBBB,CCCC,DDDD) |
|
128 |
|
129 #define CSE_LOG_STR_DESC_LOW_LEVEL(AAAA) CSE_LOG_STR_DESC(AAAA) |
|
130 #define CSE_LOG_STR_DESC2_LOW_LEVEL(AAAA,BBBB) CSE_LOG_STR_DESC2(AAAA,BBBB) |
|
131 #define CSE_LOG_STR_DESC3_LOW_LEVEL(AAAA,BBBB,CCCC) CSE_LOG_STR_DESC3(AAAA,BBBB,CCCC) |
|
132 #define CSE_LOG_STR_DESC4_LOW_LEVEL(AAAA,BBBB,CCCC,DDDD) CSE_LOG_STR_DESC4(AAAA,BBBB,CCCC,DDDD) |
|
133 |
|
134 #else |
|
135 |
|
136 #define CSELOGTEXT_LOW_LEVEL(AAAA) |
|
137 #define CSELOGSTRING_LOW_LEVEL(AAAA) |
|
138 #define CSELOGSTRING2_LOW_LEVEL(AAAA,BBBB) |
|
139 #define CSELOGSTRING3_LOW_LEVEL(AAAA,BBBB,CCCC) |
|
140 #define CSELOGSTRING4_LOW_LEVEL(AAAA,BBBB,CCCC,DDDD) |
|
141 |
|
142 #define CSE_LOG_STR_DESC_LOW_LEVEL(AAAA) |
|
143 #define CSE_LOG_STR_DESC2_LOW_LEVEL(AAAA,BBBB) |
|
144 #define CSE_LOG_STR_DESC3_LOW_LEVEL(AAAA,BBBB,CCCC) |
|
145 #define CSE_LOG_STR_DESC4_LOW_LEVEL(AAAA,BBBB,CCCC,DDDD) |
|
146 |
|
147 #endif |
|
148 |
|
149 |
|
150 |
|
151 /* |
|
152 ----------------------------------------------------------------------------- |
|
153 |
|
154 LOG SELECTION |
|
155 |
|
156 ----------------------------------------------------------------------------- |
|
157 */ |
|
158 |
|
159 // 0 = No logging, |
|
160 // 1 = Flogger, |
|
161 // 2 = RDebug |
|
162 |
|
163 |
|
164 #ifndef _DEBUG |
|
165 |
|
166 // UREL BUILD: |
|
167 #define CSE_LOGGING_METHOD 0 // No logging in UREL builds |
|
168 |
|
169 #else // urel |
|
170 |
|
171 |
|
172 |
|
173 #ifdef __WINSCW__ |
|
174 |
|
175 // WINSCW BUILD: |
|
176 #define CSE_LOGGING_METHOD 2 // RDebug is default with emulator |
|
177 |
|
178 #else |
|
179 |
|
180 // ARMV5 BUILD: |
|
181 #define CSE_LOGGING_METHOD 1 // Flogger is default with target device |
|
182 |
|
183 #endif |
|
184 |
|
185 |
|
186 |
|
187 #endif // _DEBUG |
|
188 |
|
189 |
|
190 |
|
191 |
|
192 /* |
|
193 ----------------------------------------------------------------------------- |
|
194 |
|
195 LOG SETTINGS |
|
196 |
|
197 ----------------------------------------------------------------------------- |
|
198 */ |
|
199 |
|
200 #if CSE_LOGGING_METHOD == 1 // Flogger |
|
201 |
|
202 #include <flogger.h> |
|
203 _LIT(KCSELogFolder,"CSE"); |
|
204 _LIT(KCSELogFile,"CSELOG.TXT"); |
|
205 |
|
206 #elif CSE_LOGGING_METHOD == 2 // RDebug |
|
207 |
|
208 #include <e32svr.h> |
|
209 |
|
210 #endif |
|
211 |
|
212 |
|
213 |
|
214 |
|
215 |
|
216 #if CSE_LOGGING_METHOD == 1 // Flogger |
|
217 |
|
218 |
|
219 #define CSE_LOGTEXT(AAA) RFileLogger::Write(KCSELogFolder(),KCSELogFile(),EFileLoggingModeAppend, AAA) |
|
220 |
|
221 #define CSE_LOG_STR_DESC(AAA) RFileLogger::Write(KCSELogFolder(),KCSELogFile(),EFileLoggingModeAppend, AAA) |
|
222 #define CSE_LOG_STR_DESC2(AAA,BBB) do { RFileLogger::WriteFormat(KCSELogFolder(),KCSELogFile(),EFileLoggingModeAppend,TRefByValue<const TDesC>(AAA()),BBB); } while (0) |
|
223 #define CSE_LOG_STR_DESC3(AAA,BBB,CCC) do { RFileLogger::WriteFormat(KCSELogFolder(),KCSELogFile(),EFileLoggingModeAppend,TRefByValue<const TDesC>(AAA()),BBB,CCC); } while (0) |
|
224 #define CSE_LOG_STR_DESC4(AAA,BBB,CCC,DDD) do { RFileLogger::WriteFormat(KCSELogFolder(),KCSELogFile(),EFileLoggingModeAppend,TRefByValue<const TDesC>(AAA()),BBB,CCC,DDD); } while (0) |
|
225 |
|
226 #define CSE_LOGSTRING(AAA) do { _LIT(tempCSELogDes,AAA); RFileLogger::Write(KCSELogFolder(),KCSELogFile(),EFileLoggingModeAppend,tempCSELogDes()); } while (0) |
|
227 #define CSE_LOGSTRING2(AAA,BBB) do { _LIT(tempCSELogDes,AAA); RFileLogger::WriteFormat(KCSELogFolder(),KCSELogFile(),EFileLoggingModeAppend,TRefByValue<const TDesC>(tempCSELogDes()),BBB); } while (0) |
|
228 #define CSE_LOGSTRING3(AAA,BBB,CCC) do { _LIT(tempCSELogDes,AAA); RFileLogger::WriteFormat(KCSELogFolder(),KCSELogFile(),EFileLoggingModeAppend,TRefByValue<const TDesC>(tempCSELogDes()),BBB,CCC); } while (0) |
|
229 #define CSE_LOGSTRING4(AAA,BBB,CCC,DDD) do { _LIT(tempCSELogDes,AAA); RFileLogger::WriteFormat(KCSELogFolder(),KCSELogFile(),EFileLoggingModeAppend,TRefByValue<const TDesC>(tempCSELogDes()),BBB,CCC,DDD); } while (0) |
|
230 |
|
231 // Time stamp |
|
232 _LIT(KCseLogTimeFormatString, "CSE TIMESTAMP: %H:%T:%S:%*C3"); |
|
233 #define CSE_LOGSTRING_TIMESTAMP { \ |
|
234 TTime logTime; \ |
|
235 logTime.HomeTime(); \ |
|
236 TBuf<256> logBuffer; \ |
|
237 logTime.FormatL(logBuffer, KCseLogTimeFormatString); \ |
|
238 RFileLogger::Write(KCSELogFolder(), KCSELogFile(), EFileLoggingModeAppend, logBuffer); \ |
|
239 } |
|
240 |
|
241 // Memory stamp |
|
242 _LIT(KCseLogMemoryStampString, "CSE MEMORYSTAMP: %d KB"); |
|
243 #define CSE_LOGSTRING_MEMORYSTAMP { \ |
|
244 User::CompressAllHeaps(); \ |
|
245 TMemoryInfoV1Buf logMemory; \ |
|
246 UserHal::MemoryInfo(logMemory); \ |
|
247 TInt logMemoryInt = (TInt)(logMemory().iFreeRamInBytes); \ |
|
248 TBuf<256> logMemoryStr; \ |
|
249 logMemoryStr.Format(KCseLogMemoryStampString, (logMemoryInt / 1024) ); \ |
|
250 RFileLogger::Write(KCSELogFolder(), KCSELogFile(), EFileLoggingModeAppend, logMemoryStr); \ |
|
251 } |
|
252 |
|
253 |
|
254 #elif CSE_LOGGING_METHOD == 2 // RDebug |
|
255 |
|
256 |
|
257 #define CSE_LOGTEXT(AAA) RDebug::Print(AAA) |
|
258 |
|
259 #define CSE_LOG_STR_DESC(AAA) RDebug::Print(AAA) |
|
260 #define CSE_LOG_STR_DESC2(AAA,BBB) do { RDebug::Print(AAA, BBB); } while (0) |
|
261 #define CSE_LOG_STR_DESC3(AAA,BBB,CCC) do { RDebug::Print(AAA, BBB, CCC); } while (0) |
|
262 #define CSE_LOG_STR_DESC4(AAA,BBB,CCC,DDD) do { RDebug::Print(AAA, BBB, CCC, DDD); } while (0) |
|
263 |
|
264 #define CSE_LOGSTRING(AAA) do { _LIT(tempCSELogDes,AAA); RDebug::Print(tempCSELogDes); } while (0) |
|
265 #define CSE_LOGSTRING2(AAA,BBB) do { _LIT(tempCSELogDes,AAA); RDebug::Print(tempCSELogDes, BBB); } while (0) |
|
266 #define CSE_LOGSTRING3(AAA,BBB,CCC) do { _LIT(tempCSELogDes,AAA); RDebug::Print(tempCSELogDes, BBB, CCC); } while (0) |
|
267 #define CSE_LOGSTRING4(AAA,BBB,CCC,DDD) do { _LIT(tempCSELogDes,AAA); RDebug::Print(tempCSELogDes, BBB, CCC, DDD); } while (0) |
|
268 |
|
269 // Time stamp |
|
270 _LIT(KCseLogTimeFormatString, "CSE TIMESTAMP: %H:%T:%S:%*C3"); |
|
271 #define CSE_LOGSTRING_TIMESTAMP { \ |
|
272 TTime logTime; \ |
|
273 logTime.HomeTime(); \ |
|
274 TBuf<256> logBuffer; \ |
|
275 logTime.FormatL(logBuffer, KCseLogTimeFormatString); \ |
|
276 RDebug::Print(logBuffer); \ |
|
277 } |
|
278 |
|
279 // Memory stamp |
|
280 _LIT(KCseLogMemoryStampString, "CSE MEMORYSTAMP: %d KB"); |
|
281 #define CSE_LOGSTRING_MEMORYSTAMP { \ |
|
282 User::CompressAllHeaps(); \ |
|
283 TMemoryInfoV1Buf logMemory; \ |
|
284 UserHal::MemoryInfo(logMemory); \ |
|
285 TInt logMemoryInt = (TInt)(logMemory().iFreeRamInBytes); \ |
|
286 TBuf<256> logMemoryStr; \ |
|
287 logMemoryStr.Format(KCseLogMemoryStampString, (logMemoryInt / 1024) ); \ |
|
288 RDebug::Print(logMemoryStr); \ |
|
289 } |
|
290 |
|
291 |
|
292 #else // TF_LOGGING_METHOD == 0 or invalid |
|
293 |
|
294 |
|
295 #define CSE_LOGSTRING(AAA) |
|
296 #define CSE_LOGSTRING2(AAA,BBB) |
|
297 #define CSE_LOGSTRING3(AAA,BBB,CCC) |
|
298 #define CSE_LOGSTRING4(AAA,BBB,CCC,DDD) |
|
299 |
|
300 #define CSE_LOGTEXT(AAA) |
|
301 |
|
302 #define CSE_LOG_STR_DESC(AAA) |
|
303 #define CSE_LOG_STR_DESC2(AAA,BBB) |
|
304 #define CSE_LOG_STR_DESC3(AAA,BBB,CCC) |
|
305 #define CSE_LOG_STR_DESC4(AAA,BBB,CCC,DDD) |
|
306 |
|
307 #define CSE_LOGSTRING_TIMESTAMP |
|
308 #define CSE_LOGSTRING_MEMORYSTAMP |
|
309 |
|
310 |
|
311 #endif // TF_LOGGING_METHOD |
|
312 |
|
313 |
|
314 |
|
315 |
|
316 |
|
317 |
|
318 |
|
319 #endif // CSEDEBUG_H |
|
320 |
|
321 // End of File |