diff -r 000000000000 -r 08ec8eefde2f traceservices/tracefw/ulogger/inc/uloggercommands.h --- /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 + +/** Ulogger command line syntax description. +ULogger is used to configure and enable/disable logging of trace data on device. + +SYNOPSIS: ulogger [-rqtvhioH][-edl ...][-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 [ ...] Enable/disable/list primary filter 0-255 +-s [ ...] 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 [] Enable/disable an output plugin, list all output plugins +-i [] Enable/disable an input plugin, list all input plugins +-c [ ...] 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 [ ...] Buffer size, 1-1024 Kb rounded up to nearest page size, 4Kb. +-n [ ...] Notification size, 0-1024 Kb rounded up to nearest page size, 4Kb. +-m [ ...] 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& 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& aArgs); + + + private: + CCommand(MCommandImpl* aCommandImpl); + TInt PrepareCommandL(RArray& aArgs); + + //data + MCommandImpl* iCommandImpl; + TBool iVerbose; + RArray iCommandsLookup; + }; + +#endif /*ULOGGERCOMMANDS_H_*/