traceservices/tracefw/ulogger/inc/uloggercommands.h
changeset 0 08ec8eefde2f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/traceservices/tracefw/ulogger/inc/uloggercommands.h	Fri Jan 22 11:06:30 2010 +0200
@@ -0,0 +1,207 @@
+// Copyright (c) 2007-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:
+// ULogger commands
+// 
+//
+
+/**
+ @file
+ @internalTechnology
+ @prototype
+*/
+
+#ifndef ULOGGERCOMMANDS_H_
+#define ULOGGERCOMMANDS_H_
+
+#include <e32base.h>
+
+/** Ulogger command line syntax description.
+ULogger is used to configure and enable/disable logging of trace data on device.
+
+SYNOPSIS: ulogger [-rqtvhioH][-edl <config_options>...][-fsSoicbmn]...
+
+DESCRIPTION:
+ULogger groups the commands into execution and configuration commands
+where options -rqtvhH belong to the former group and -edlbnmfsSoic to the latter.
+Execution commands: -rqtvhioH, require no other arguments.
+Configuration commands are further divided into:
+	-edl, these require one of the following options '-fsSoic'
+	to be present, these will fail if too many or missing options are given.
+	-fsSoicbmn, these will apply the arguments depending on provided option -edl.
+	
+OPTIONS
+Execution commands:
+-r                      Start logging (Run)
+-q                      Stop logging (Quit)
+-t                      Restart (restarT) while logging, to update configurations
+-v                      Verbose mode, will list all results, or silent mode is
+							assumed and only error codes will be returned
+-h 						List of options.
+-o						List active output plugin.
+-i						List active input plugin.
+-H						This man page.
+-?						The version of this tool and most usefull commands.
+
+Configuration commands:
+-e <-fsSoicbmn options> ...	Enable/set either of option -fsSoicbmn
+-d <-fsSoic options> ...	Disable/delete either of option -fsSoic
+-l <-fsSoicbmn options> ...	List either of option -fsSoicbmn
+-f [<filter> ...]       Enable/disable/list primary filter 0-255
+-s [<filter> ...]       Enable/disable/list secondary filter 0-4294967295
+-S 						Enable/disable/list secondary filtering.
+							Enable to filter on secondary filters,
+							Disable to log all traces irrespective of secondary filter.
+							By default filtering is enabled.
+-o [<filename>]         Enable/disable an output plugin, list all output plugins
+-i [<filename>]         Enable/disable an input plugin, list all input plugins
+-c [<filename> <config> ...]       Enable(set)/delete/list plugin configurations.
+							First argument must be the name of the configuration
+							to be changed and any following arguments are treated as values of
+							this configuration. The configuration keyword can not use any white 
+							characters (e.g. space or tabulation key).
+-b [<size> ...]         Buffer size, 1-1024 Kb rounded up to nearest page size, 4Kb.
+-n [<size> ...]         Notification size, 0-1024 Kb rounded up to nearest page size, 4Kb.
+-m [<mode> ...]         Buffer mode, 'circular' or 'straight'. Default is straight.
+ */
+
+
+//ulogger commands
+_LIT(KCmdEnable,				"e");
+_LIT(KCmdDisable,				"d");
+_LIT(KCmdList,					"l");
+_LIT(KCmdPrimaryFilter,			"f");
+_LIT(KCmdSecondaryFilter,		"s");
+_LIT(KCmdSecondaryFilterToggle,	"S");
+_LIT(KCmdOutputPlugin,		 	"o");
+_LIT(KCmdInputPlugin,		 	"i");
+_LIT(KCmdPluginConfigurations, 	"c");
+_LIT(KCmdBuffer, 				"b");
+_LIT(KCmdNotification,		 	"n");
+_LIT(KCmdBufferMode, 			"m");
+_LIT(KCmdVerboseMode,			"v");
+_LIT(KCmdStart,					"r");
+_LIT(KCmdStop,	  				"q");
+_LIT(KCmdRestart,	  			"t");
+_LIT(KCmdHelp,		  			"h");
+_LIT(KCmdMan,					"H");
+_LIT(KCmdVersion,				"?");
+_LIT(KCmdIndicator, 			"-");
+_LIT(KCmdAll,					"all");
+_LIT(KCmdBufferModeCircular,	"circular");
+_LIT(KCmdBufferModeStraight,	"straight");
+
+
+/**
+@internalTechnology
+@prototype
+*/
+enum TCommand
+ 	{		
+ 	EUnknown = 0,
+ 	ERunAsService,     // function not yet implemented in server!
+ 	EDontRunAsService, // function not yet implemented in server!
+ 	EStart,
+ 	EStop,
+ 	ERestart,
+ 	ESetPrimaryFilter,
+ 	EGetPrimaryFilters,
+ 	ERemovePrimaryFilter,
+ 	ESetSecondaryFilter,
+ 	EGetSecondaryFilters,
+ 	ERemoveSecondaryFilter,
+ 	EGetSecondaryFiltering,
+ 	EEnableSecondaryFiltering,
+ 	EDisableSecondaryFiltering,
+ 	ESetActivePlugin,
+ 	EGetActivePlugin,
+ 	EGetInstalledPlugins,
+ 	ESetActiveInputPlugin,
+ 	EGetActiveInputPlugin,
+ 	EDeactivateInputPlugin,
+ 	EGetInputPlugins,
+	ESetPluginSettings,
+	EGetPluginSettings,
+ 	ERemovePluginSettings,
+ 	EResizeTraceBuffer,
+ 	EGetTraceBufferSize,
+ 	ESetDataNotificationSize,
+ 	EGetDataNotificationSize,
+ 	ESetBufferMode,
+	EGetBufferMode,
+	EHelp,
+	EManPage,
+	EVersion
+ 	};
+
+/**
+@internalTechnology
+@prototype
+ */
+class TCommandLookup
+ {
+ public:
+ 	TCommandLookup(const TDesC* aMainCommand, const TDesC*	aSubCommand, const TCommand aCommand)
+ 		: iMainCommand(aMainCommand), iSubCommand(aSubCommand), iCommand(aCommand)
+ 		{}
+ 	
+ 	//data
+ 	const TDesC* 	iMainCommand;
+ 	const TDesC*	iSubCommand;
+ 	TCommand 	iCommand;
+ };
+
+ 
+/**
+Interface to execute command. 
+
+@internalTechnology
+@prototype
+ */ 
+class MCommandImpl
+	{
+	public:
+		virtual TInt DoCommandL(TCommand aCommand, const RArray<TPtrC>& aValues) = 0;
+	};
+ 
+ 
+/**
+This is a utility class to parse command line arguments and to generate accurate event 
+to execute required command. 
+To use this class properly, MCommandImpl interface must be implemented and pointer to it 
+must be passed during object construction.
+
+@internalTechnology
+@prototype
+ */
+class CCommand : public CBase
+	{
+	public:
+		IMPORT_C static CCommand* NewL(MCommandImpl* aCommandImpl);
+		IMPORT_C static CCommand* NewLC(MCommandImpl* aCommandImpl);
+		IMPORT_C ~CCommand();
+		IMPORT_C void ConstructL();
+		IMPORT_C TInt HandleCommandL(const RArray<TPtrC>& aArgs);
+			
+
+	private:
+		CCommand(MCommandImpl* aCommandImpl);
+		TInt PrepareCommandL(RArray<TPtrC>& aArgs);
+		
+		//data
+		MCommandImpl* iCommandImpl;
+		TBool 		  iVerbose;
+		RArray<TCommandLookup> iCommandsLookup;
+	};
+	
+#endif /*ULOGGERCOMMANDS_H_*/