--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyprotocols/rawipnif/src/bttlog.cpp Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,221 @@
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Implements CBttLogger.
+//
+//
+
+/**
+ @file
+*/
+
+#include "bttlog.h"
+
+#ifdef __BTT_LOGGING__
+
+#ifdef __DEBUGRAWIPSERIALPORT__
+#include <e32svr.h>
+#endif
+
+//Enable this if you want time stamps for each log statements.
+//This is computation ineffective and not recommended.
+//#define __TIME_STAMP_ENABLED__
+
+CBttLogger* CBttLogger::NewL(const TDesC8& aTag, const TDesC8& aFileName, const TUint32 aInstanceId)
+/**
+ * Factory method for CBttLogger.
+ *
+ * @param aSubDir The subdirectory of c:\logs\gprsbtt to log to.
+ * @param aFileName The filename to log to.
+ * @return Ownership of a new CBttLogger.
+ */
+ {
+ CBttLogger* self = new(ELeave) CBttLogger;
+ CleanupStack::PushL(self);
+ self->ConstructL(aTag, aFileName, aInstanceId);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+#ifdef __FLOG_ACTIVE
+void CBttLogger::ConstructL(const TDesC8& aTag, const TDesC8& aFileName, const TUint32 aInstanceId)
+#else
+void CBttLogger::ConstructL(const TDesC8&, const TDesC8&, const TUint32 aInstanceId)
+#endif
+/**
+ * 2nd-phase construction.
+ * Hurricane/Typhoon - we can log to a particular directory
+ */
+ {
+ iInstanceId = aInstanceId;
+ __FLOG_OPEN(aTag, aFileName);
+ }
+
+//#endif
+
+CBttLogger::CBttLogger()
+/**
+ * Constructor
+ */
+ {
+ }
+
+CBttLogger::~CBttLogger()
+/**
+ * Destructor
+ */
+ {
+ __FLOG_CLOSE;
+ }
+
+void CBttLogger::Write(const TDesC8& aText)
+/**
+ * Write an 8-bit descriptor to the log file
+ *
+ * @param aText The test to write
+ */
+ {
+ TBuf8<KLogBufferSize> buf;
+ TLogIgnoreOverflow8 overflowHandler;
+ // put the instance id to identify which nif we are
+ // logging from
+ _LIT8(KInstanceFormat, "RawIp 0x%08X: ");
+ buf.Format(KInstanceFormat, &overflowHandler, iInstanceId);
+
+#ifdef __TIME_STAMP_ENABLED__
+ // log to our own file in Hurricane/Typhoon
+ _LIT8(KTimeFormat, "%02d.%02d:%02d:%06d ");
+
+ TTime now;
+ now.UniversalTime();
+ TDateTime dateTime;
+ dateTime = now.DateTime();
+ buf.AppendFormat(KTimeFormat,
+ &overflowHandler,
+ dateTime.Hour(),
+ dateTime.Minute(),
+ dateTime.Second(),
+ dateTime.MicroSecond());
+#endif
+
+ buf.Append(aText);
+
+#ifdef __DEBUGRAWIPSERIALPORT__
+ TBuf<KLogBufferSize> buf2;
+ // TEMP: Do not print single % since appear as format char to RDebug::Print
+ for (TInt i = 0; i < buf.Length(); i++)
+ {
+ if (buf[i] == '%')
+ buf2.Append(_L("."));
+ else
+ buf2.Append(buf[i]);
+ }
+ RDebug::Print(buf2);
+#else
+ __FLOG(buf);
+#endif
+ }
+
+void CBttLogger::WriteFormat(TRefByValue<const TDesC8> aFmt, ...)
+/**
+ * Write an 8-bit format list to the log file
+ */
+ {
+ //coverity[var_decl];
+ VA_LIST list;
+ VA_START(list, aFmt);
+
+ // log to our own file in Hurricane/Typhoon
+ TBuf8<KLogBufferSize> buf;
+ TLogIgnoreOverflow8 overflowHandler;
+ //coverity[uninit_use_in_call];
+ buf.AppendFormatList(aFmt, list, &overflowHandler);
+ Write(buf);
+ }
+
+void CBttLogger::VerboseLeaveL(char* aFile, TInt aLine, TInt aReason)
+/**
+ * Make a verbose leave - write name of file and line number to the log just
+ * before leaving.
+ *
+ * @param aFile The file we're leaving from.
+ * @param aLine The line number we're leaving from.
+ * @param aReason The leave code.
+ */
+ {
+ // only leave if non-zero value
+ if ( aReason == KErrNone )
+ {
+ return;
+ }
+
+ _LIT8(KLeavePrefix, "LEAVE: " );
+
+ TPtrC8 fullFileName((const TUint8*)aFile);
+ TPtrC8 fileName(fullFileName.Ptr()+fullFileName.LocateReverse('\\')+1);
+
+ TBuf8<256> buf;
+ TLogIgnoreOverflow8 overflowHandler;
+ buf.AppendFormat(_L8("%S aReason=%d [file %S, line %d]"),
+ &overflowHandler,
+ &KLeavePrefix,
+ aReason,
+ &fileName,
+ aLine);
+ Write(buf);
+
+ __FLOG_CLOSE;
+
+ // finally
+ User::Leave(aReason);
+ }
+
+void CBttLogger::VerbosePanic(char* aFile,
+ TInt aLine,
+ TInt aPanicCode,
+ TText8* aPanicName,
+ const TDesC& aPanicCategory)
+/**
+ * Make a verbose panic - write name of file and line number to the
+ * log just before panicking.
+ *
+ * @param aFile The file that's panicking.
+ * @param aLine The line number that's panicking.
+ * @param aReason The panic code.
+ * @param aPanicName The text of the panic code.
+ * @param aPanicCategory The panic category.
+ */
+ {
+ _LIT8(KLeavePrefix, "PANIC: " );
+
+ TPtrC8 fullFileName((const TUint8*)aFile);
+ TPtrC8 fileName(fullFileName.Ptr()+fullFileName.LocateReverse('\\')+1);
+
+ TBuf8<256> buf;
+ TLogIgnoreOverflow8 overflowHandler;
+ buf.AppendFormat(_L8("%S %d = %s [file %S, line %d]"),
+ &overflowHandler,
+ &KLeavePrefix,
+ aPanicCode,
+ aPanicName,
+ &fileName,
+ aLine);
+ Write(buf);
+
+ __FLOG_CLOSE;
+
+ // finally
+ User::Panic(aPanicCategory, aPanicCode);
+ }
+
+#endif // __BTT_LOGGING__