diff -r 000000000000 -r 4e1aa6a622a0 resourcemgmt/hwresourcesmgr/server/plugininc/HWRMVibraCommands.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/resourcemgmt/hwresourcesmgr/server/plugininc/HWRMVibraCommands.h Tue Feb 02 00:53:00 2010 +0200 @@ -0,0 +1,174 @@ +/* +* Copyright (c) 2006-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: +* This file contains the following sections: +* - Command definitions for HWRM Vibra plugin API +* - Command parameter definitions for HWRM Vibra plugin API +* - Response parameter definitions for HWRM Vibra plugin API +* +*/ + + + + +/** + @file + @publishedPartner + @released +*/ + + +#ifndef HWRMVIBRACOMMANDS_H +#define HWRMVIBRACOMMANDS_H + +// Include plugin service so that including only this header is necessary to use Vibra plugin API. +#include + +// CONSTANTS + +// Identifies the ECom implementation to be used. +_LIT8(KHWRMVibraApiEComMatch, "HWRMVibra"); + + +/** +* Plugin interface class just encapsulates the Vibra command enumerations. +* Responsible for defining the command IDs for each message. +*/ +namespace HWRMVibraCommand + { + /** + * Data structure used to pass vibra intensity and duration. + * Used in EPulseVibraCmdId command. + * + * @publishedPartner + * @released + */ + struct TVibraData + { + // Duration of vibration in milliseconds. + TUint iDuration; + // Intensity of vibration. + TInt8 iIntensity; + }; + + // typedef'd package of TInt containing the vibra command*/ + typedef TPckgBuf TStartVibraCmdDataPackage; + + + // Data packages for pulse command + typedef TPckgBuf TPulseVibraCmdDataPackage; + + + /** typedef'd package of TInt containing the error code response. */ + typedef TPckgBuf TErrorCodeResponsePackage; + + /** + * Command definitions + * All commands contain a command id and a set of parameters. The command ids + * are defined first and after that parameters for each command. + * + * This interface is asynchronous. A command is interpreted of being completed + * after a response for that command is received. + * + * The field input means the parameter for the command. + * The field output means the parameter for the response. + * + * @publishedPartner + * @released + */ + enum TVibraCmd + { + /** + * No command. May be used for sanity checks, but + * never as an actual command ID. + * + * input None + * output None + */ + ENoCommandId = 2000, + + /** + * Start vibra. + * + * + * input TStartVibraCmdDataPackage Intensity + * Intensity of the vibra in decimal is -100 to 100, + * which shows the percentage of the vibra motor full + * safe rotation speed. When intensity is negative, + * the vibra motor rotates in the negative direction. + * When intensity is positive, the vibra motor rotates + * in the positive direction. + * Value 0 effectively stops the vibra. + * Plugin should map intensity to such values that high or + * low intensities never damage the device even + * if used for extended periods of time. + * output TErrorCodeResponsePackage Error code + * KErrNone if operation succeeds. + * KErrNotSupported if device doesn't support user-defined vibra intensity. + * KErrArgument if intensity is outside allowed range. + * KErrGeneral if there is any problem. + */ + EStartVibraCmdId, + + /** + * Start vibra with device default intensity. + * + * input None + * output TErrorCodeResponsePackage Error code + * KErrNone if operation succeeds. + * KErrGeneral if there is any problem. + */ + EStartVibraWithDefaultSettingsCmdId, + + /** + * Stop vibra. + * + * input None + * output TErrorCodeResponsePackage Error code + * KErrNone if operation succeeds. + * KErrGeneral if there is any problem. + */ + EStopVibraCmdId, + + /** + * Pulse vibra. Start and stop of vibration must be carried + * out internally within plugin or underlying implementation. + * If there is vibration ongoing when pulse command is sent, + * intensity must be set according to pulse command intensity + * and when specified pulse duration has expired, interrupted + * intensity must be restored. Ideally vibrations with varying + * intensity are observable althoug they would overlap. + * + * input TPulseVibraCmdDataPackage iIntensity + * Intensity of the vibra in decimal is 1 to 100, + * which shows the percentage of the vibra motor full + * safe rotation speed. + * Plugin should map intensity to such values that high or + * low intensities never damage the device even + * if used for extended periods of time. + * input TPulseVibraCmdDataPackage iDuration + * Duration of the vibra in milliseconds + * output TErrorCodeResponsePackage Error code + * KErrNone if operation succeeds. + * KErrNotSupported if device doesn't support user-defined vibra intensity. + * KErrArgument if intensity or duration is outside allowed range. + * KErrGeneral if there is any problem. + */ + EPulseVibraCmdId + }; + } + +#endif // HWRMVIBRACOMMANDS_H + +// End of File