cbsref/csyrefplugins/csy27010/src/CsyDebugLogger.cpp
author hgs
Tue, 22 Jun 2010 11:02:32 +0100
changeset 44 8b72faa1200f
permissions -rw-r--r--
201024_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
44
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     1
//
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     2
// * Copyright 2004 Neusoft America Inc.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     3
// * All rights reserved.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     4
// * This component and the accompanying materials are made available
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     5
// * under the terms of the Eclipse Public License v1.0
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     6
// * which accompanies this distribution, and is available
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     7
// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     8
// *
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     9
// * Contributors:
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    10
// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    11
// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    12
// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    13
// *
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    14
// * Description:  This file implements the CCsyDebugLogger class.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    15
// *               This class provides the functionality to log TSY debug messages to a file.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    16
// *               The log file is located at \epoc32\wins\c\logs\etel.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    17
//
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    18
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    19
// CsyDebugLogger.cpp
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    20
/*
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    21
Copies from RefLog.cpp
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    22
MAF move back to using RefLog
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    23
*/
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    24
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    25
// MAF we need to move to using RefLog.cpp - because we are duplicating code
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    26
// fixes to the code that TapRoot have copied from us.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    27
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    28
#include <e32svr.h>
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    29
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    30
#include "CsyGlobals.h"
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    31
#include "CsyDebugLogger.h"
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    32
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    33
#ifdef _DEBUG // Only use the following code when in Debug mode
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    34
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    35
_LIT8(KDateFormat, "%02d.%02d:%4d");
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    36
_LIT8(KTimeFormat, "%02d.%02d:%02d:%06d ");
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    37
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    38
class TNoOverflow : public TDes8Overflow
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    39
/**
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    40
 * This class is used to avoid panics when logging anything that's too long.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    41
 */
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    42
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    43
public:
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    44
	virtual void Overflow(TDes8& /*aDes*/)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    45
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    46
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    47
	};
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    48
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    49
void CCsyDebugLogger::WriteHeader()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    50
/**
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    51
 * Write the log header.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    52
 */	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    53
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    54
	TBuf8<64> buf;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    55
	TTime now;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    56
	now.UniversalTime();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    57
	TDateTime dateTime;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    58
	dateTime = now.DateTime();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    59
	// TDateTimes Day() and Month() start at 0
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    60
	buf.Format(KDateFormat, dateTime.Day() + 1, dateTime.Month() + 1,
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    61
		dateTime.Year());
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    62
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    63
#ifndef __DEBUGSERIALPORT__
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    64
	// overwrite log file
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    65
	RFileLogger logger;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    66
	TInt ret = logger.Connect();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    67
	if (ret == KErrNone)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    68
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    69
		logger.SetDateAndTime(EFalse, EFalse);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    70
		logger.CreateLog(KCsyLogDir, KCsyLogFile, EFileLoggingModeOverwrite);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    71
		logger.Write(KCsyLogLine);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    72
		logger.CloseLog();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    73
		logger.Close();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    74
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    75
#endif
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    76
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    77
	CCsyDebugLogger::Write(_L8(" ")); // please leave this separator in
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    78
	CCsyDebugLogger::WriteFormat(_L8("Date: %S"), &buf);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    79
	CCsyDebugLogger::WriteFormat(_L8("CSY 3GPP 27.010 version %d.%02d  (v8.0 build:%d)"),
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    80
			KCSY_Gsm0710MajorVersionNumber,
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    81
			KCSY_Gsm0710MinorVersionNumber,
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    82
			KCSY_Gsm0710BuildVersionNumber);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    83
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    84
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    85
void CCsyDebugLogger::Write(const TDesC8& aText)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    86
/**
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    87
 * Write an 8-bit descriptor to the log file.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    88
 * @param aDebugLevel Debug level of log request
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    89
 * @param aText is the text to write to the log file
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    90
 * @return void
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    91
 */	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    92
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    93
	TBuf8<KLogBufferSize> buf;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    94
	TTime now;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    95
	now.UniversalTime();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    96
	TDateTime dateTime;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    97
	dateTime = now.DateTime();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    98
	buf.Format(KTimeFormat, dateTime.Hour(), dateTime.Minute(), 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    99
			   dateTime.Second(), dateTime.MicroSecond());
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   100
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   101
	if (aText.Length() <= (buf.MaxLength() - buf.Length()))
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   102
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   103
		buf.Append(aText);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   104
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   105
	else
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   106
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   107
		buf.Append(aText.Left(buf.MaxLength() - buf.Length()));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   108
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   109
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   110
#ifdef __DEBUGSERIALPORT__
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   111
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   112
	TBuf<KLogBufferSize> buf2;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   113
	// TEMP: Do not print single % since appear as format char to RDebug::Print
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   114
	for (TInt i = 0; i < buf.Length(); i++)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   115
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   116
		if (buf[i] == '%')
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   117
			buf2.Append(_L("."));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   118
		else
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   119
			buf2.Append(buf[i]);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   120
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   121
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   122
	RDebug::Print(buf2);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   123
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   124
#else
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   125
	// log to our own file
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   126
	RFileLogger logger;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   127
	TInt ret = logger.Connect();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   128
	if (ret == KErrNone)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   129
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   130
		logger.SetDateAndTime(EFalse, EFalse);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   131
		logger.CreateLog(KCsyLogDir, KCsyLogFile, EFileLoggingModeAppend);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   132
		logger.Write(buf);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   133
		logger.CloseLog();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   134
		logger.Close();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   135
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   136
#endif
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   137
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   138
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   139
void CCsyDebugLogger::WriteFormat(TRefByValue<const TDesC8> aFmt, ...)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   140
/**
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   141
 * Write an 8-bit format list to the log file.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   142
 * @param aDebugLevel Debug level of log request
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   143
 * @param aFmt is the variable arguments
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   144
 * @return void
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   145
 */	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   146
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   147
	VA_LIST list;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   148
	VA_START(list,aFmt);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   149
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   150
	TBuf8<KLogBufferSize> buf;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   151
	TNoOverflow overflow;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   152
	buf.AppendFormatList(aFmt, list, &overflow);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   153
	Write(buf);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   154
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   155
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   156
#endif // _DEBUG