sdkcreationmw/sdkexamples/cppexamples/S60Ex/helperfunctions/logfile.h
changeset 0 b26acd06ea60
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkexamples/cppexamples/S60Ex/helperfunctions/logfile.h	Mon Mar 08 12:09:11 2010 +0530
@@ -0,0 +1,289 @@
+/*
+* Copyright (c) 2004, 2006 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: 
+*
+*/
+
+
+#ifndef __LOGFILE_H__
+#define __LOGFILE_H__
+
+// INCLUDES
+#include <eikapp.h>
+#include <charconv.h>
+
+// CONSTANTS
+_LIT8(KCrLf8, "\r\n");
+_LIT(KCrLf, "\r\n");
+
+static const TInt KAsciiStart = 0x20;
+static const TInt KAsciiEnd = 0x7f;
+static const TInt KHexCharLeft = '<';
+static const TInt KHexCharRight = '>';
+static const TInt KNumberOfDecimalPlaces = 3;
+
+// FORWARD DECLARATIONS
+
+// Link with the following libraries: EFSRV.LIB HAL.LIB CHARCONV.LIB
+class CCnvCharacterSetConverter;
+
+// CLASS DECLARATIONS
+/**
+* CLogFile
+* Class to generate a text file containing logging information
+*/
+class CLogFile : public CBase
+    {
+        public:
+            /**
+            * NewL
+            * Create a CLogFile object
+            * @param aFileName the name of the file to create
+            * @param aInitialiseLog if true, and the log file
+            * already exists, previous contents will be deleted.
+            * If false, append to any existing contents
+            * @return a pointer to the created instance of CLogFile
+            */
+            static CLogFile* NewL( const TDesC& aFileName,
+                                   TBool aInitialiseLog );
+
+            /**
+            * NewLC
+            * Create a CLogFile object
+            * @param aFileName the name of the file to create
+            * @param aInitialiseLog if true, and the log file
+            * already exists, previous contents will be deleted.
+            * If false, append to any existing contents.
+            * @return a pointer to the created instance of CLogFile
+            */
+            static CLogFile* NewLC( const TDesC& aFileName,
+                                    TBool aInitialiseLog );
+
+            /**
+            * ~CLogFile
+            * Destroy the object and release all memory objects
+            */
+            virtual ~CLogFile();
+
+            /**
+            * Log
+            * Append the byte to the log file (if not a printable char, it
+            * will be logged as ascii-hex).
+            * @param aByte the byte to log
+            */
+            void Log( TUint8 aByte );
+
+            /**
+            * Log
+            * Append the integer to the log file (logged as ascii-hex)
+            * @param aNumber the integer to log
+            */
+            void Log( TUint aNumber );
+
+            /**
+            * Log
+            * Append text to the log file
+            * @param aText the text to log
+            */
+            void Log( const TDesC8& aText );
+
+            /**
+            * Log
+            * Append text to the log file
+            * @param aText the text to log
+            */
+            void Log( const TDesC& aText );
+
+            /**
+            *LogTime
+            * Append a timestamp to the log file.
+            * Timestamps are in seconds with three decimal places
+            * (but resolution is limited to system timer tick period).
+            */
+            void LogTime();
+
+            /**
+            * LogBytes
+            * Append the bytes to the log file (non-printable bytes will be
+            * logged as ascii-hex).
+            * @param aBuffer the bytes to log
+            */
+            void LogBytes( const TDesC8& aBuffer );
+
+            /**
+            * LogNewline
+            * Start a newline in the log file
+            */
+            void LogNewline();
+
+            /**
+            * SetAutoFlush
+            * Turn AutoFlush on or off. AutoFlush will automatically flush
+            * the log file after each write.
+            * @param aOn if true turns AutoFlush on
+            */
+            void SetAutoFlush( TBool aOn );
+
+            /**
+            * SetAutoTimeStamp
+            * Turn AutoTimeStamp on or off. AutoTimeStamp will add
+            * a timestamp to the start of each new line in the log.
+            * @param aOn if true turn AutoTimeStamp on
+            */
+            void SetAutoTimeStamp( TBool aOn );
+
+            /**
+            * SetAutoNewline
+            * Turn AutoNewline on or off. AutoNewline
+            * starts a new line after each log operation.
+            * @param aOn if true turn AutoNewline on
+            */
+            void SetAutoNewline( TBool aOn );
+
+            /**
+            * StaticLogL
+            * Static option to append text to the log file
+            * @param aFileName the file to append to
+            * @param aText the text to append
+            */
+            static void StaticLogL( const TDesC& aFileName,
+                                    const TDesC8& aText );
+
+            /**
+            * StaticLogL
+            * Static option to append text to the log file
+            * @param aFileName the file to append to
+            * @param aText the text to append
+            */
+            static void StaticLogL( const TDesC& aFileName,
+                                    const TDesC& aText );
+
+        private:
+
+            /**
+            * CLogFile
+            * Perform the first phase of two phase construction
+            */
+            CLogFile();
+
+            /**
+            * ConstructL
+            * Perform the second phase construction of a CLogFile object
+            * @param aFileName the file to open
+            * @param aInitialiseLog if true, and the log file already exists,
+            * previous contents will be deleted. If false,
+            * append to any existing contents
+            */
+            void ConstructL( const TDesC& aFileName, TBool aInitialiseLog );
+
+            /**
+            * LogTimeInternal
+            * Internal function to log time
+            */
+            void LogTimeInternal();
+
+            /**
+            * LogTextInternal
+            * Internal function to log text
+            * @param aText the text to log
+            */
+            void LogTextInternal( const TDesC8& aText );
+
+            /**
+            * LogByteInternal
+            * internal function to log a byte
+            * @param aByte the byte to log
+            */
+            void LogByteInternal( TUint8 aByte );
+
+            /**
+            * LogIntInternal
+            * Internal function to log an integer
+            * @param aNumber the integer to log
+            */
+            void LogIntInternal( TUint aNumber );
+
+            /**
+            * StartWrite
+            * Perform any initial operation before the main log operation
+            */
+            void StartWrite();
+
+            /**
+            * EndWrite
+            * Perform any tidying up operations after the main log operation
+            */
+            void EndWrite();
+
+            /**
+            * Write
+            * Do the actual writing, and associated error checking
+            * @param aText the text to write
+            */
+            void Write( const TDesC8& aText );
+
+        private:
+
+            /**
+            * iLogFile handle to the log file
+            */
+            RFile       iLogFile;
+
+            /**
+            * iSession file server session
+            */
+            RFs         iSession;
+
+            /**
+            * iLogMillisecsPerTick number of millisecs per system timer tick
+            */
+            TInt        iLogMillisecsPerTick;
+
+            /**
+            * iAutoFlush flag - AutoFlush on
+            */
+            TBool       iAutoFlush;
+
+            /**
+            * iAutoTimestamp flag - AutoTimeStamp on
+            */
+            TBool       iAutoTimestamp;
+
+            /**
+            * iAutoNewline flag - AutoNewline on
+            */
+            TBool       iAutoNewline;
+
+            /**
+            * iCheckNestDepth internal to check StartWrite and EndWrite have
+            * been called correctly
+            */
+            TInt        iCheckNestDepth;
+
+            /**
+            * iCharacterConverter converts between unicode and
+            * non-unicode characters
+            */
+            CCnvCharacterSetConverter* iCharacterConverter;
+
+            /**
+            * iConverterAvailability flag indicating if conversion
+            * is able to occur
+            */
+            CCnvCharacterSetConverter::TAvailability iConverterAvailability;
+    };
+
+#endif // __LOGFILE_H__
+
+// End of File