camerauis/cameraapp/generic/inc/CamPerformance.h
changeset 19 d9aefe59d544
parent 3 8b2d6d0384b0
child 21 fa6d9f75d6a6
child 28 3075d9b614e6
--- a/camerauis/cameraapp/generic/inc/CamPerformance.h	Tue Feb 02 00:01:39 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,463 +0,0 @@
-/*
-* Copyright (c) 2007 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:  Macros, event definitions and memory logging class header*
-*/
-
-
-#ifndef CAM_PERFORMANCE_H
-#define CAM_PERFORMANCE_H
-
-// INCLUDES
-#include <e32base.h> // RDebug
-#include <coemain.h> // CCoeStatic
-
-// FORWARD DECLARATIONS
-class TLogItem;
-class RFileWriteStream;
-
-// #define CAMERAAPP_PERFORMANCE_MEASUREMENT
-
-/*
-CAMERAAPP PERFORMANCE MEASUREMENT FRAMEWORK
-
-If the flag CAMERAAPP_PERFORMANCE_MEASUREMENT is defined, the following
-macros can be used for logging:
-
-LEVEL 1 (High level):
-PERF_EVENT_START_L1( EVENT )
-PERF_EVENT_END_L1( EVENT )
-PERF_MESSAGE_L1( MESSAGE )
-PERF_ENGINE_STATE_CHANGE( STATE )
-PERF_OPERATION_STATE_CHANGE( STATE )
-
-LEVEL 2 (Intermediate level):  
-PERF_EVENT_START_L2( EVENT )
-PERF_EVENT_END_L2( EVENT )
-PERF_MESSAGE_L2( MESSAGE )
-
-LEVEL 3 (Low level):
-PERF_EVENT_START_L3( EVENT )
-PERF_EVENT_END_L3( EVENT )
-PERF_MESSAGE_L3( MESSAGE )
-*/
-
-#ifdef CAMERAAPP_PERFORMANCE_MEASUREMENT
-// Log levels
-#define CAMERAAPP_PERF_L1 // High level logging enabled
-#define CAMERAAPP_PERF_L2 // Intermediate level logging enabled
-#define CAMERAAPP_PERF_L3 // Low level logging enabled
-
-// Different methods of logging in use
-// Memory log data is written to disk when application is closed
-#define CAMERAAPP_PERF_LOG_TRACES // Logging to traces enabled
-#define CAMERAAPP_PERF_LOG_MEMORY // Logging to memory enabled
-
-#endif // CAMERAAPP_PERFORMANCE_MEASUREMENT
-
-
-// Log data to traces using event names, instead of numeric event values
-// For example: e_123_1 -> e_EEventName_1
-#define CAMERAAPP_PERF_LOG_TRACES_AS_TEXT 
-
-// Log filename for memory logs output
-_LIT( KPerfLogFilename, "C:\\CameraPerf.log" );
-
-// Perform analysis of event data after memory logging
-#define CAMERAAPP_PERF_LOG_ANALYZE_EVENTS
-_LIT( KPerfAnalysisFileName, "C:\\CameraPerfAnalysis.log" );
-
-// Show warnings about invalid start/end events in event analysis log
-#define CAMERAAPP_PERF_ANALYSIS_WARN_END_WITHOUT_START
-#define CAMERAAPP_PERF_ANALYSIS_WARN_START_WITHOUT_END
-#define CAMERAAPP_PERF_ANALYSIS_WARN_MULTIPLE_START
-
-// Event definitions
-enum TCamEvent 
-	{
-	EPerfEventAppFirstStartup = 0,
-	EPerfEventApplicationShutdown,
-	EPerfEventSwitchToStillMode,
-	EPerfEventSwitchToVideoMode,
-	EPerfEventKeyToCapture,
-	EPerfEventShotToSnapshot,
-	EPerfEventShotToStillImageReady,
-	EPerfEventShotToSave,
-	EPerfEventAutoFocus,
-	EPerfEventSequenceCapture,
-	EPerfEventStartVideoRecording,
-	EPerfEventVideoStopToSave,
-	EPerfEventBurstCaptureMomentToViewfinderFrame,
-	EPerfEventAvkonUIConstruction,
-	EPerfEventCAEConstruction,
-	EPerfEventCAEInit,
-	EPerfEventPreCaptureViewConstruction,
-	EPerfEventActivePaletteConstruction,
-	EPerfEventPrepareStill,
-	EPerfEventPostCaptureViewConstruction,
-	EPerfEventVideoPreCaptureViewActivation,
-	EPerfEventStillPreCaptureViewDeactivation,
-	EPerfEventPrepareVideo,
-	EPerfEventVideoPreCaptureViewDeactivation,
-	EPerfEventStillPreCaptureViewActivation,
-	EPerfEventStillPostCaptureViewActivation,
-	EPerfEventSaveImage,
-	EPerfEventBurstThumbnailViewActivation,
-	EPerfEventAppSubsequentStartup,
-	EPerfEventLastEvent
-	};
-
-// Message definitions
-enum TCamMessage
-	{
-	EPerfMessageTestMessage = 0,
-	EPerfMessageStartingViewFinder,
-	EPerfMessageActivePaletteAnimationStarting,
-	EPerfMessageStoppingViewFinder,
-	EPerfMessageBurstSnapshotReady,
-	EPerfMessageBurstStillimageReady,
-	EPerfMessageStartingRecord,
-	EPerfMessagePausingViewFinder,
-	EPerfMessageCaptureKeyHalfPressed,
-	EPerfMessageLastMessage
-	};
-
-enum TCamPerformanceState
-	{
-	EPerfWaitingForStartup = 0,
-	EPerfIdle,
-	EPerfWaitingForStillMode,
-	EPerfWaitingForVideoMode,
-	EPerfWaitingForBurstFrame
-	};
-		
-// Macros that handle the logging to traces
-#ifdef CAMERAAPP_PERF_LOG_TRACES_AS_TEXT
-	// Log enum arguments with their names, for example: e_EEventApplicationStartup_1
-	#define PERF_EVENT_START_TRACE( EVENT ) RDebug::Print( KPerfEventStartText, &(_L( #EVENT )) );
-	#define PERF_EVENT_END_TRACE( EVENT ) RDebug::Print( KPerfEventEndText, &(_L( #EVENT )) );
-	#define PERF_MESSAGE_TRACE( EVENT ) RDebug::Print( KPerfMessageText, &(_L( #EVENT )) );
-	#define PERF_ENGINE_STATE_CHANGE_TRACE( STATE ) RDebug::Print( KPerfEngineStateChange, STATE );
-	#define PERF_OPERATION_STATE_CHANGE_TRACE( STATE ) RDebug::Print( KPerfOperationStateChange, STATE );
-#else
-	// Log enum arguments as their integer values, for example: e_123_1
-	#define PERF_EVENT_START_TRACE( EVENT ) RDebug::Print( KPerfEventStart, EVENT );
-	#define PERF_EVENT_END_TRACE( EVENT ) RDebug::Print( KPerfEventEnd, EVENT );
-	#define PERF_MESSAGE_TRACE( EVENT ) RDebug::Print( KPerfMessage, EVENT );
-	#define PERF_ENGINE_STATE_CHANGE_TRACE( STATE ) RDebug::Print( KPerfEngineStateChange, STATE );
-	#define PERF_OPERATION_STATE_CHANGE_TRACE( STATE ) RDebug::Print( KPerfOperationStateChange, STATE );
-#endif // CAMERAAPP_PERF_LOG_AS_TEXT
-
-// Macros that handle logging to memory
-#define PERF_EVENT_START_MEMORY( EVENT ) CCamPerformanceLogger::Logger()->EventStart( EVENT );
-#define PERF_EVENT_END_MEMORY( EVENT ) CCamPerformanceLogger::Logger()->EventEnd( EVENT );
-#define PERF_MESSAGE_MEMORY( EVENT ) CCamPerformanceLogger::Logger()->Message( EVENT );
-#define PERF_ENGINE_STATE_CHANGE_MEMORY( STATE ) CCamPerformanceLogger::Logger()->EngineState( STATE );
-#define PERF_OPERATION_STATE_CHANGE_MEMORY( STATE ) CCamPerformanceLogger::Logger()->OperationState( STATE );
-
-// High level (L1) logging macro definitions
-#ifdef CAMERAAPP_PERF_L1
-
-	#if defined (CAMERAAPP_PERF_LOG_TRACES) && defined (CAMERAAPP_PERF_LOG_MEMORY)
-		// Log to traces and memory
-		#define PERF_EVENT_START_L1( EVENT ) PERF_EVENT_START_TRACE( EVENT ); PERF_EVENT_START_MEMORY( EVENT ); 																						
-		#define PERF_EVENT_END_L1( EVENT) PERF_EVENT_END_TRACE( EVENT ); PERF_EVENT_END_MEMORY( EVENT ); 
-		#define PERF_MESSAGE_L1( EVENT ) PERF_MESSAGE_TRACE( EVENT ); PERF_MESSAGE_MEMORY( EVENT );
-		#define PERF_ENGINE_STATE_CHANGE( STATE ) PERF_ENGINE_STATE_CHANGE_TRACE( STATE ); PERF_ENGINE_STATE_CHANGE_MEMORY( STATE );
-		#define PERF_OPERATION_STATE_CHANGE( STATE ) PERF_OPERATION_STATE_CHANGE_TRACE( STATE ); PERF_OPERATION_STATE_CHANGE_MEMORY( STATE );
-		
-	#elif defined (CAMERAAPP_PERF_LOG_TRACES)
-		// Log only to traces
-		#define PERF_EVENT_START_L1( EVENT ) PERF_EVENT_START_TRACE( EVENT );
-		#define PERF_EVENT_END_L1( EVENT ) PERF_EVENT_END_TRACE( EVENT );
-		#define PERF_MESSAGE_L1( EVENT) PERF_MESSAGE_TRACE( EVENT );
-		#define PERF_ENGINE_STATE_CHANGE( STATE ) PERF_ENGINE_STATE_CHANGE_TRACE( STATE );
-		#define PERF_OPERATION_STATE_CHANGE( STATE ) PERF_OPERATION_STATE_CHANGE_TRACE( STATE );
-		
-	#elif defined (CAMERAAPP_PERF_LOG_MEMORY)
-		// Log only to memory
-		#define PERF_EVENT_START_L1( EVENT ) PERF_EVENT_START_MEMORY( EVENT );
-		#define PERF_EVENT_END_L1( EVENT ) PERF_EVENT_END_MEMORY( EVENT );
-		#define PERF_MESSAGE_L1( EVENT) PERF_MESSAGE_MEMORY( EVENT );
-		#define PERF_ENGINE_STATE_CHANGE( STATE ) PERF_ENGINE_STATE_CHANGE_MEMORY( STATE );		
-		#define PERF_OPERATION_STATE_CHANGE( STATE ) PERF_OPERATION_STATE_CHANGE_MEMORY( STATE );	
-		
-	#else
-		// Logging enabled, but no logging way specified - empty macro implementations
-		#define PERF_EVENT_START_L1( A ) ;
-		#define PERF_EVENT_END_L1( A ) ;
-		#define PERF_MESSAGE_L1( A ) ;
-		#define PERF_ENGINE_STATE_CHANGE( A ) ;
-		#define PERF_OPERATION_STATE_CHANGE( A ) ;
-	#endif
-
-#else
-	// L1 logging not enabled - empty macro implementation
-	#define PERF_EVENT_START_L1( A ) ;
-	#define PERF_EVENT_END_L1( A ) ;
-	#define PERF_MESSAGE_L1( A ) ;
-	#define PERF_ENGINE_STATE_CHANGE( A ) ;
-	#define PERF_OPERATION_STATE_CHANGE( A ) ;
-#endif // CAMERAAPP_PERF_L1
-
-// Intermediate level (L2) logging macro definitions
-#ifdef CAMERAAPP_PERF_L2
-
-	#if defined (CAMERAAPP_PERF_LOG_TRACES) && defined (CAMERAAPP_PERF_LOG_MEMORY)
-		// Log to traces and memory
-		#define PERF_EVENT_START_L2( EVENT ) PERF_EVENT_START_TRACE( EVENT ); PERF_EVENT_START_MEMORY( EVENT ); 																						
-		#define PERF_EVENT_END_L2( EVENT) PERF_EVENT_END_TRACE( EVENT ); PERF_EVENT_END_MEMORY( EVENT ); 
-		#define PERF_MESSAGE_L2( EVENT ) PERF_MESSAGE_TRACE( EVENT ); PERF_MESSAGE_MEMORY( EVENT );
-		#ifndef PERF_ENGINE_STATE_CHANGE
-			#define PERF_ENGINE_STATE_CHANGE( STATE ) PERF_ENGINE_STATE_CHANGE_TRACE( STATE ); PERF_ENGINE_STATE_CHANGE_MEMORY( STATE );
-			#define PERF_OPERATION_STATE_CHANGE( STATE ) PERF_OPERATION_STATE_CHANGE_TRACE( STATE ); PERF_OPERATION_STATE_CHANGE_MEMORY( STATE );
-		#endif
-		
-	#elif defined (CAMERAAPP_PERF_LOG_TRACES)
-		// Log only to traces
-		#define PERF_EVENT_START_L2( EVENT ) PERF_EVENT_START_TRACE( EVENT );
-		#define PERF_EVENT_END_L2( EVENT ) PERF_EVENT_END_TRACE( EVENT );
-		#define PERF_MESSAGE_L2( EVENT) PERF_MESSAGE_TRACE( EVENT );
-		#ifndef PERF_ENGINE_STATE_CHANGE 
-			#define PERF_ENGINE_STATE_CHANGE( STATE ) PERF_ENGINE_STATE_CHANGE_TRACE( STATE );
-			#define PERF_OPERATION_STATE_CHANGE( STATE ) PERF_OPERATION_STATE_CHANGE_TRACE( STATE );
-		#endif
-		
-	#elif defined (CAMERAAPP_PERF_LOG_MEMORY)
-		// Log only to memory
-		#define PERF_EVENT_START_L2( EVENT ) PERF_EVENT_START_MEMORY( EVENT );
-		#define PERF_EVENT_END_L2( EVENT ) PERF_EVENT_END_MEMORY( EVENT );
-		#define PERF_MESSAGE_L2( EVENT) PERF_MESSAGE_MEMORY( EVENT );
-		#ifndef PERF_ENGINE_STATE_CHANGE
-			#define PERF_ENGINE_STATE_CHANGE( STATE ) PERF_ENGINE_STATE_CHANGE_MEMORY( STATE );
-			#define PERF_OPERATION_STATE_CHANGE( STATE ) PERF_OPERATION_STATE_CHANGE_MEMORY( STATE );	
-		#endif
-		
-	#else
-		// Logging enabled, but no logging way specified - empty macro implementations
-		#define PERF_EVENT_START_L2( A ) ;
-		#define PERF_EVENT_END_L2( A ) ;
-		#define PERF_MESSAGE_L2( A ) ;
-		#ifndef PERF_ENGINE_STATE_CHANGE
-			#define PERF_ENGINE_STATE_CHANGE( A ) ;
-			#define PERF_OPERATION_STATE_CHANGE( A ) ;
-		#endif
-	#endif
-
-#else
-	// L2 logging not enabled - empty macro implementation
-	#define PERF_EVENT_START_L2( A ) ;
-	#define PERF_EVENT_END_L2( A ) ;
-	#define PERF_MESSAGE_L2( A ) ;
-		#ifndef PERF_ENGINE_STATE_CHANGE
-			#define PERF_ENGINE_STATE_CHANGE( A ) ;
-			#define PERF_OPERATION_STATE_CHANGE( A ) ;
-		#endif
-#endif // CAMERAAPP_PERF_L2
-
-// Low level (L3) logging macro definitions
-#ifdef CAMERAAPP_PERF_L3
-
-	#if defined (CAMERAAPP_PERF_LOG_TRACES) && defined (CAMERAAPP_PERF_LOG_MEMORY)
-		// Log to traces and memory
-		#define PERF_EVENT_START_L3( EVENT ) PERF_EVENT_START_TRACE( EVENT ); PERF_EVENT_START_MEMORY( EVENT ); 																						
-		#define PERF_EVENT_END_L3( EVENT) PERF_EVENT_END_TRACE( EVENT ); PERF_EVENT_END_MEMORY( EVENT ); 
-		#define PERF_MESSAGE_L3( EVENT ) PERF_MESSAGE_TRACE( EVENT ); PERF_MESSAGE_MEMORY( EVENT );
-		#ifndef PERF_ENGINE_STATE_CHANGE
-			#define PERF_ENGINE_STATE_CHANGE( STATE ) PERF_ENGINE_STATE_CHANGE_TRACE( STATE ); PERF_ENGINE_STATE_CHANGE_MEMORY( STATE );
-			#define PERF_OPERATION_STATE_CHANGE( STATE ) PERF_OPERATION_STATE_CHANGE_TRACE( STATE ); PERF_OPERATION_STATE_CHANGE_MEMORY( STATE );
-		#endif
-		
-	#elif defined (CAMERAAPP_PERF_LOG_TRACES)
-		// Log only to traces
-		#define PERF_EVENT_START_L3( EVENT ) PERF_EVENT_START_TRACE( EVENT );
-		#define PERF_EVENT_END_L3( EVENT ) PERF_EVENT_END_TRACE( EVENT );
-		#define PERF_MESSAGE_L3( EVENT) PERF_MESSAGE_TRACE( EVENT );
-		#ifndef PERF_ENGINE_STATE_CHANGE 
-			#define PERF_ENGINE_STATE_CHANGE( STATE ) PERF_ENGINE_STATE_CHANGE_TRACE( STATE );
-			#define PERF_OPERATION_STATE_CHANGE( STATE ) PERF_OPERATION_STATE_CHANGE_TRACE( STATE );
-		#endif
-		
-	#elif defined (CAMERAAPP_PERF_LOG_MEMORY)
-		// Log only to memory
-		#define PERF_EVENT_START_L3( EVENT ) PERF_EVENT_START_MEMORY( EVENT );
-		#define PERF_EVENT_END_L3( EVENT ) PERF_EVENT_END_MEMORY( EVENT );
-		#define PERF_MESSAGE_L3( EVENT) PERF_MESSAGE_MEMORY( EVENT );
-		#ifndef PERF_ENGINE_STATE_CHANGE
-			#define PERF_ENGINE_STATE_CHANGE( STATE ) PERF_ENGINE_STATE_CHANGE_MEMORY( STATE );
-			#define PERF_OPERATION_STATE_CHANGE( STATE ) PERF_OPERATION_STATE_CHANGE_MEMORY( STATE );	
-		#endif
-		
-	#else
-		// Logging enabled, but no logging way specified - empty macro implementations
-		#define PERF_EVENT_START_L3( A ) ;
-		#define PERF_EVENT_END_L3( A ) ;
-		#define PERF_MESSAGE_L3( A ) ;
-		#ifndef PERF_ENGINE_STATE_CHANGE
-			#define PERF_ENGINE_STATE_CHANGE( A ) ;
-			#define PERF_OPERATION_STATE_CHANGE( A ) ;
-		#endif
-		
-	#endif
-
-#else
-	// L3 logging not enabled - empty macro implementation
-	#define PERF_EVENT_START_L3( A ) ;
-	#define PERF_EVENT_END_L3( A ) ;
-	#define PERF_MESSAGE_L3( A ) ;
-	#ifndef PERF_ENGINE_STATE_CHANGE
-		#define PERF_ENGINE_STATE_CHANGE( A ) ;
-		#define PERF_OPERATION_STATE_CHANGE( A ) ;
-	#endif
-#endif // CAMERAAPP_PERF_L3
-
-#ifdef CAMERAAPP_PERF_LOG_MEMORY
-
-/**
-* Handles memory logging of events, messages and state changes, performing 
-* simple event analysis and writing the resulting log files to disk.
-*
-*  @since 2.8
-*/
-class CCamPerformanceLogger: public CCoeStatic
-	{
-	public:
-							
-	  /**
-    * Static function, which returns a pointer to the currently
-    * active CCamPerformanceLogger object or instantiates a new one
-    * @since 2.8
-    * @return pointer to CCamPerformanceLogger object
-    */    
-		static CCamPerformanceLogger* Logger();		
-
-	  /**
-    * Static function, which saves the currently recorded log 
-    * data and clears the log.
-    * @since 2.8
-    */ 		
-		static void SaveAndReset();		
-								
-	  /**
-    * Destructor.
-    * @since 2.8
-    */
-		~CCamPerformanceLogger();
-						
-		/**
-    * Appends an event start item to the memory log
-    * @since 2.8
-    * @param aEvent Event type
-    */
-		void EventStart( TCamEvent aEvent );
-		
-		/**
-    * Appends an event end item to the memory log
-    * @since 2.8
-    * @param aEvent Event type
-    */				
-		void EventEnd( TCamEvent aEvent );
-		
-		/**
-    * Appends a message to the memory log
-    * @since 2.8
-    * @param aMessage Message type
-    */
-		void Message( TCamMessage aMessage );
-		
-		/**
-    * Appends a state change to the memory log
-    * @since 2.8
-    * @param aState New state
-    */		
-		void EngineState( TInt aState );
-		
-		/**
-    * Appends a state change to the memory log
-    * @since 2.8
-    * @param aState New state
-    */		
-		void OperationState( TInt aState );
-		
-		/**
-    * Saves all data from memory log to file KPerfLogFilename
-    * @since 2.8
-    */
-		void SaveLogDataL() const;
-		
-		/**
-    * Performs simple analysis to event data from memory log and writes
-    * the result to file KPerfAnalysisFilename
-    * @since 2.8
-    */
-		void SaveAnalysisL() const;
-						
-	private:
-		/**
-    * Converts log item data into LogicAnalyzer compatible string, and stores the result in aDes
-    * @param aItem Log item
-    * @param aDes Descriptor
-    * @since 2.8
-    */
-		static void LogItemToDes( const TLogItem& aItem, TDes& aDes ); 		
-		
-		/**
-    * Appends time represented by aTime to aDes with format seconds.milliseconds
-    * @param aDes Destination descriptor
-    * @param aTime Time in system 64-bit format
-    * @param aSpace Reserve 6 characters for seconds field
-    * @since 2.8
-    */
-		static void AppendTime( TDes& aDes, TInt64 aTime, TBool aSpace=EFalse );
-		
-		/**
-    * Writes the contents of descriptor aDes followed by '\n' to aStream
-    * @param aStream RFileWriteStream
-    * @param aDes Descriptor
-    * @since 2.8
-    */
-		static void WriteLineL( RFileWriteStream& aStream, TDes& aDes );
-		
-		/**
-    * Returns system 64-bit representation of the current time
-    * @since 2.8
-    * @return Time
-    */		
-		static TInt64 Time64();
-		
-	private:
-		CCamPerformanceLogger();
-		TInt64 iStartTime;
-		RArray<TLogItem> iLogItems;			
-	};
-#endif // CAMERAAPP_PERF_LOG_MEMORY
-	
-// Log item formatting literals
-_LIT( KPerfEventStart, "e_%d_1" );
-//_LIT( KPerfEventStartText, "e_%S_1" );
-_LIT( KPerfEventStartText, "e_%S 1" );
-_LIT( KPerfEventEnd, "e_%d_0" );
-//_LIT( KPerfEventEndText, "e_%S_0" );
-_LIT( KPerfEventEndText, "e_%S 0" );
-_LIT( KPerfMessage, "m_%d" );
-//_LIT( KPerfMessageText, "m_%S" );
-_LIT( KPerfMessageText, "m_%S;CamMsg;CamMsg" );
-//_LIT( KPerfEngineStateChange, "sm_CamEngine_%d" );
-_LIT( KPerfEngineStateChange, "sm_CamEngine;%d" );
-_LIT( KPerfEngineStateChangeText, "sm_CamEngine_%S" );
-//_LIT( KPerfOperationStateChange, "sm_CamOperation_%d" );
-_LIT( KPerfOperationStateChange, "sm_CamOperation;%d" );
-_LIT( KPerfOperationStateChangeText, "sm_CamOperation_%S" );
-_LIT( KPerfUnknown, "unknown_%d" );
-	
-#endif // CAM_PERFORMANCE_H
\ No newline at end of file