smsprotocols/smsstack/common/inc/smsstacklog.h
branchRCL_3
changeset 20 07a122eea281
parent 19 630d2f34d719
equal deleted inserted replaced
19:630d2f34d719 20:07a122eea281
     1 // Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
    14 //
    14 //
    15 
    15 
    16 #ifndef _SMSSTACKLOG_H_
    16 #ifndef _SMSSTACKLOG_H_
    17 #define _SMSSTACKLOG_H_
    17 #define _SMSSTACKLOG_H_
    18 
    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>
    19 #include <etelmm.h>
    59 #include <etelmm.h>
    20 
    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 
    21 
   283 
    22 //
   284 //
    23 // Functions to perform specific logging where necessary.
   285 // Functions to perform specific logging where necessary.
    24 //
   286 //
    25 
   287 #ifdef _SMS_LOGGING_ENABLED
    26     void LogSmsIfPDUL(const TDesC8& aText, const TDesC8& aPDU, TBool aCommandPdu);
   288     void LogSmsIfPDU(const TDesC8& aText, const TDesC8& aPDU, TBool aCommandPdu);
    27     void LogSmsIfHexBuf(const TDesC8& aText, const TDesC8& aHexBuf);
   289     void LogSmsIfHexBuf(const TDesC8& aText, const TDesC8& aHexBuf);
    28     void LogSmsIfTypeOfNumber(const TDesC8& aText, RMobilePhone::TMobileTON aTON);
   290     void LogSmsIfTypeOfNumber(const TDesC8& aText, RMobilePhone::TMobileTON aTON);
    29     void LogSmsIfNumberingPlan(const TDesC8& aText, RMobilePhone::TMobileNPI aNPI);
   291     void LogSmsIfNumberingPlan(const TDesC8& aText, RMobilePhone::TMobileNPI aNPI);
    30     void LogSmsIfSmsEntry(const TDesC8& aText,
   292     void LogSmsIfSmsEntry(const TDesC8& aText,
    31                           const RMobileSmsStore::TMobileGsmSmsEntryV1& aSmsGsmEntryV1);
   293     					  const RMobileSmsStore::TMobileGsmSmsEntryV1& aSmsGsmEntryV1);
    32     void LogSmsIfSendAttributes(const TDesC8& aText,
   294     void LogSmsIfSendAttributes(const TDesC8& aText,
    33                                 const RMobileSmsMessaging::TMobileSmsSendAttributesV1& aAttrib);
   295     							const RMobileSmsMessaging::TMobileSmsSendAttributesV1& aAttrib);
    34     /**
   296 #endif
    35      * Generates a string with the current time 
       
    36      * 
       
    37      * @param alogStatement TDes& of at least size 40 
       
    38      */
       
    39 inline void SmsTimeStampL(TDes& aLogStatement)
       
    40         {
       
    41         TTime now;
       
    42         now.UniversalTime();
       
    43         TDateTime dateTime(now.DateTime());
       
    44         _LIT(KOwnTimeFormat,"TimeStamp=%:0%H%:1%T%:2%S.%*C6%:3");
       
    45         now.FormatL(aLogStatement,KOwnTimeFormat);
       
    46         //aLogStatement
       
    47         };
       
    48 
       
    49 
   297 
    50 // Define macros to disable and restore Code Coverage
   298 // Define macros to disable and restore Code Coverage
    51     
   299     
    52 #ifndef BULLSEYE_OFF
   300 #ifndef BULLSEYE_OFF
    53 #ifdef _BullseyeCoverage
   301 #ifdef _BullseyeCoverage