--- a/camerauis/cameraapp/generic/inc/CamPerformance.h Thu Aug 19 09:36:57 2010 +0300
+++ /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