piprofiler/plugins/BUPplugin/inc/BupPlugin.h
author hgs
Mon, 23 Aug 2010 15:29:36 +0300
changeset 41 838cdffd57ce
parent 20 a71a3e32a2ae
child 49 7fdc9a71d314
permissions -rw-r--r--
201031
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
20
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#ifndef PIPROFILER_BUPECOM_SAMPLER_H
hgs
parents:
diff changeset
    20
#define PIPROFILER_BUPECOM_SAMPLER_H
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include <w32std.h>
hgs
parents:
diff changeset
    23
#include <w32std.h>			// RWsSession
hgs
parents:
diff changeset
    24
#include <w32adll.h>		// RAnim DLL
hgs
parents:
diff changeset
    25
#include <e32std.h>
hgs
parents:
diff changeset
    26
#include <e32property.h>	// RProperty
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
#include <piprofiler/ProfilerTraces.h>
hgs
parents:
diff changeset
    29
#include <piprofiler/ProfilerConfig.h>
hgs
parents:
diff changeset
    30
#include <piprofiler/ProfilerVersion.h>
hgs
parents:
diff changeset
    31
#include <piprofiler/SamplerPluginInterface.h>
hgs
parents:
diff changeset
    32
#include <piprofiler/ProfilerGenericClassesUsr.h>
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
#include <data_caging_path_literals.hrh> // for KDC_SHARED_LIB_DIR
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
// Button press&touch event Anim DLL interface
hgs
parents:
diff changeset
    37
#include "TouchEventClientDll.h"
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
// caption definitions
hgs
parents:
diff changeset
    40
_LIT8(KBUPShortName, "bup");
hgs
parents:
diff changeset
    41
_LIT8(KBUPLongName, "Button and touch event capture");
hgs
parents:
diff changeset
    42
_LIT8(KBUPDescription, "Button and touch event sampler\nTracing button and touch screen events\nHW dep: N/A\nSW dep: S60 3.0\n");
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
const TUid KProfilerKeyEventPropertyCat={0x2001E5AD};
hgs
parents:
diff changeset
    45
enum TProfilerKeyEventPropertyKeys
hgs
parents:
diff changeset
    46
	{
hgs
parents:
diff changeset
    47
	EProfilerKeyEventPropertySample = 7
hgs
parents:
diff changeset
    48
	};
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
const TUid KGppPropertyCat={0x20201F70};
hgs
parents:
diff changeset
    51
enum TGppPropertyKeys
hgs
parents:
diff changeset
    52
	{
hgs
parents:
diff changeset
    53
	EGppPropertySyncSampleNumber
hgs
parents:
diff changeset
    54
	};
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
static _LIT_SECURITY_POLICY_PASS(KAllowAllPolicy);
hgs
parents:
diff changeset
    58
static _LIT_SECURITY_POLICY_C1(KCapabilityNone, ECapability_None);
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
_LIT(KDllName, "PIProfilerTouchEventAnim.DLL");	// animation server dll	on user disk
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
/*
hgs
parents:
diff changeset
    63
 *	
hgs
parents:
diff changeset
    64
 *	BUP sampler definition
hgs
parents:
diff changeset
    65
 *	
hgs
parents:
diff changeset
    66
 */
hgs
parents:
diff changeset
    67
class CProfilerButtonListener;
hgs
parents:
diff changeset
    68
class CSamplerPluginInterface;
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
class CBupPlugin : public CSamplerPluginInterface
hgs
parents:
diff changeset
    71
{
hgs
parents:
diff changeset
    72
public:	
hgs
parents:
diff changeset
    73
	static CBupPlugin* NewL(const TUid aImplementationUid, TAny* aInitParams);
hgs
parents:
diff changeset
    74
			~CBupPlugin();
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
	TInt	ResetAndActivateL(CProfilerSampleStream& aStream);
hgs
parents:
diff changeset
    77
	TInt	StopSampling();
hgs
parents:
diff changeset
    78
    TBool   Enabled() { return iEnabled; }
hgs
parents:
diff changeset
    79
hgs
parents:
diff changeset
    80
	TInt	CreateFirstSample();
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
	// no sub samplers, from CSamplerPluginInterface
hgs
parents:
diff changeset
    83
	TInt 	SubId(TUid /*aId*/) const {return KErrNotFound;}
hgs
parents:
diff changeset
    84
    TInt    GetSamplerType();
hgs
parents:
diff changeset
    85
	
hgs
parents:
diff changeset
    86
	void    GetAttributesL(CArrayFixFlat<TSamplerAttributes>* aAttributes);
hgs
parents:
diff changeset
    87
    TInt    SetAttributesL(TSamplerAttributes aAttributes);
hgs
parents:
diff changeset
    88
    void    InitiateSamplerAttributesL();
hgs
parents:
diff changeset
    89
	
hgs
parents:
diff changeset
    90
    TInt    ConvertRawSettingsToAttributes(CDesC8ArrayFlat* aSingleSettingArray);
hgs
parents:
diff changeset
    91
    
hgs
parents:
diff changeset
    92
    TInt    DoSetSamplerSettings(CDesC8ArrayFlat* aAllSettings, TDesC8& aSamplerName, TInt aIndex);
hgs
parents:
diff changeset
    93
    void    SaveSettingToAttributes(const TDesC8& aSetting, TInt aIndex);
hgs
parents:
diff changeset
    94
    
hgs
parents:
diff changeset
    95
	TUid  Id(TInt aSubId) const;
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
	void FillThisStreamBuffer(TBapBuf* nextFree,TRequestStatus& aStatus); 
hgs
parents:
diff changeset
    98
	
hgs
parents:
diff changeset
    99
private:
hgs
parents:
diff changeset
   100
			CBupPlugin();
hgs
parents:
diff changeset
   101
	void 	ConstructL();
hgs
parents:
diff changeset
   102
hgs
parents:
diff changeset
   103
private:
hgs
parents:
diff changeset
   104
	TUint8					iVersion[20];
hgs
parents:
diff changeset
   105
	TPtr8					iVersionDescriptor;
hgs
parents:
diff changeset
   106
	
hgs
parents:
diff changeset
   107
	TInt 					iSamplerType;
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
	CProfilerButtonListener* 	iButtonListener;
hgs
parents:
diff changeset
   110
    CArrayFixFlat<TSamplerAttributes>* iSamplerAttributes;
hgs
parents:
diff changeset
   111
public:
hgs
parents:
diff changeset
   112
	TUint32* 				iSampleTime;
hgs
parents:
diff changeset
   113
};
hgs
parents:
diff changeset
   114
hgs
parents:
diff changeset
   115
hgs
parents:
diff changeset
   116
/*
hgs
parents:
diff changeset
   117
*
hgs
parents:
diff changeset
   118
*  Base class for all windows
hgs
parents:
diff changeset
   119
*
hgs
parents:
diff changeset
   120
*/
hgs
parents:
diff changeset
   121
class CWsClient : public CActive
hgs
parents:
diff changeset
   122
	{
hgs
parents:
diff changeset
   123
	protected:
hgs
parents:
diff changeset
   124
		//construct
hgs
parents:
diff changeset
   125
		CWsClient();
hgs
parents:
diff changeset
   126
		CWsScreenDevice* iScreen;
hgs
parents:
diff changeset
   127
		RWsSession iWs;
hgs
parents:
diff changeset
   128
	public:
hgs
parents:
diff changeset
   129
		void ConstructL();
hgs
parents:
diff changeset
   130
		// destruct
hgs
parents:
diff changeset
   131
		~CWsClient();
hgs
parents:
diff changeset
   132
		// main window
hgs
parents:
diff changeset
   133
		virtual void ConstructMainWindowL();
hgs
parents:
diff changeset
   134
		// terminate cleanly
hgs
parents:
diff changeset
   135
		void Exit();
hgs
parents:
diff changeset
   136
		// active object protocol
hgs
parents:
diff changeset
   137
		void IssueRequest(); // request an event
hgs
parents:
diff changeset
   138
		void DoCancel(); // cancel the request
hgs
parents:
diff changeset
   139
		virtual TInt RunError(TInt aError) = 0;
hgs
parents:
diff changeset
   140
		virtual void RunL() = 0; // handle completed request
hgs
parents:
diff changeset
   141
		virtual void HandleKeyEventL (TKeyEvent& aKeyEvent) = 0;
hgs
parents:
diff changeset
   142
hgs
parents:
diff changeset
   143
		RWindowGroup Group() {return iGroup;};
hgs
parents:
diff changeset
   144
hgs
parents:
diff changeset
   145
    private:
hgs
parents:
diff changeset
   146
		RWindowGroup    iGroup;
hgs
parents:
diff changeset
   147
		CWindowGc*      iGc;
hgs
parents:
diff changeset
   148
		friend class    CWindow; // needs to get at session
hgs
parents:
diff changeset
   149
		RProperty       iProperty;
hgs
parents:
diff changeset
   150
hgs
parents:
diff changeset
   151
	};
hgs
parents:
diff changeset
   152
hgs
parents:
diff changeset
   153
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
class CWindow;
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
class CProfilerButtonListener : public CWsClient 
hgs
parents:
diff changeset
   158
{
hgs
parents:
diff changeset
   159
public:
hgs
parents:
diff changeset
   160
	static 	CProfilerButtonListener* NewL(CBupPlugin* aSamplerm);
hgs
parents:
diff changeset
   161
			~CProfilerButtonListener();
hgs
parents:
diff changeset
   162
private:
hgs
parents:
diff changeset
   163
			CProfilerButtonListener(CBupPlugin* aSampler);
hgs
parents:
diff changeset
   164
hgs
parents:
diff changeset
   165
	
hgs
parents:
diff changeset
   166
public:
hgs
parents:
diff changeset
   167
	void 	ConstructMainWindowL();
hgs
parents:
diff changeset
   168
	void 	HandleKeyEventL (TKeyEvent& aKeyEvent);
hgs
parents:
diff changeset
   169
	void 	RunL();
hgs
parents:
diff changeset
   170
	TInt    RunError(TInt aError);
hgs
parents:
diff changeset
   171
	TInt 	StartL();
hgs
parents:
diff changeset
   172
	TInt	Stop();
hgs
parents:
diff changeset
   173
	
hgs
parents:
diff changeset
   174
private:
hgs
parents:
diff changeset
   175
	TUint8							iSample[8];
hgs
parents:
diff changeset
   176
hgs
parents:
diff changeset
   177
	CBupPlugin*						iSampler;
hgs
parents:
diff changeset
   178
	RProfilerTouchEventAnim*			iAnim;
hgs
parents:
diff changeset
   179
	RAnimDll*						iAnimDll;
hgs
parents:
diff changeset
   180
	CWindow* 						iMainWindow;	// main window
hgs
parents:
diff changeset
   181
hgs
parents:
diff changeset
   182
	TInt	 						iSampleStartTime;
hgs
parents:
diff changeset
   183
};
hgs
parents:
diff changeset
   184
hgs
parents:
diff changeset
   185
hgs
parents:
diff changeset
   186
hgs
parents:
diff changeset
   187
/*
hgs
parents:
diff changeset
   188
*
hgs
parents:
diff changeset
   189
*  CWindow declaration
hgs
parents:
diff changeset
   190
*
hgs
parents:
diff changeset
   191
*/
hgs
parents:
diff changeset
   192
class CWindow : public CBase
hgs
parents:
diff changeset
   193
	{
hgs
parents:
diff changeset
   194
	protected:
hgs
parents:
diff changeset
   195
		RWindow iWindow; 	// window server window
hgs
parents:
diff changeset
   196
		TRect iRect; 		// rectangle re owning window
hgs
parents:
diff changeset
   197
	public:
hgs
parents:
diff changeset
   198
		CWindow(CWsClient* aClient);
hgs
parents:
diff changeset
   199
		void ConstructL (const TRect& aRect, CWindow* aParent=0);
hgs
parents:
diff changeset
   200
		~CWindow();
hgs
parents:
diff changeset
   201
		// access
hgs
parents:
diff changeset
   202
		RWindow& Window(); // our own window
hgs
parents:
diff changeset
   203
		CWindowGc* SystemGc(); // system graphics context
hgs
parents:
diff changeset
   204
hgs
parents:
diff changeset
   205
		CWsClient* Client() {return iClient;};
hgs
parents:
diff changeset
   206
	private:
hgs
parents:
diff changeset
   207
		CWsClient* iClient; // client including session and group
hgs
parents:
diff changeset
   208
	};
hgs
parents:
diff changeset
   209
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
#endif