diff -r 000000000000 -r 40261b775718 mmlibs/mmfw/inc/MdaAudioTonePlayer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmlibs/mmfw/inc/MdaAudioTonePlayer.h Tue Feb 02 01:56:55 2010 +0200 @@ -0,0 +1,217 @@ +// Copyright (c) 2002-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: +// + +#ifndef __MDAAUDIOTONEPLAYER_H__ +#define __MDAAUDIOTONEPLAYER_H__ + + +#include +#include +#include +#include + +class CMdaServer; + + +/** +@publishedAll +@released + +The state of the audio tone utility. +*/ +enum TMdaAudioToneUtilityState + { + /** The audio tone utility has not been prepared to play a tone. + */ + EMdaAudioToneUtilityNotReady=0, + /** The audio tone utility has been prepared to play a tone and is ready. + */ + EMdaAudioToneUtilityPrepared, + /** The audio tone utility is currently playing a tone. + */ + EMdaAudioToneUtilityPlaying, + /** The audio tone utility is currently paused. + This state is only reached if underlying DevSound implementations supports resume. + */ + EMdaAudioToneUtilityPaused + }; + +const TInt KMdaInfiniteDurationDTMFToneOnLength = -1; +const TInt KMdaAudioToneRepeatForever = -2; + +/** +@publishedAll +@released + +An interface to a set of audio tone player callback functions. + +The class is a mixin and is intended to be inherited by the client +class which is observing the audio tone playing operation. The +functions encapsulated by this class are called when specific events +occur in the process of preparing to play a tone and during the +playing of a tone. A reference to this object is passed as a +parameter when constructing an audio tone player utility, using the +CMdaAudioToneUtility interface. + +@since 5.0 +*/ +class MMdaAudioToneObserver + { +public: + + /** + Defines required client behaviour when an attempt to configure the + audio tone player utility has completed, successfully or otherwise. + + @param aError + KErrNone if successful. One of the system + wide error codes if the attempt failed. The possible + values depend on the EPOC platform. + */ + virtual void MatoPrepareComplete(TInt aError) = 0; + + /** + Defines required client behaviour when the tone playing operation has + completed, successfully or otherwise. + + @param aError + KErrNone if successful. One of the system + wide error codes if the attempt failed. The possible + values depend on the EPOC platform. + */ + virtual void MatoPlayComplete(TInt aError) = 0; + }; + + +class MMdaAudioTonePlayStartObserver + { +public: + /** + Defines required client behaviour when the tone playing operation has + started, successfully or otherwise. + + @param aError + KErrNone if successful. One of the system + wide error codes if the attempt failed. The possible + values depend on the EPOC platform. + */ + virtual void MatoPlayStarted(TInt aError) = 0; + }; + + +class CMMFMdaAudioToneUtility; + +/** +@publishedAll +@released + +Generates tones on an audio capable EPOC device. + +The class offers an interface for generating tones on all audio +capable EPOC devices. + +To use the tone utility: + +1. Create an instance by calling NewL(). + +2. Call the appropriate PrepareToPlay variant for the required tone type +and wait for the callback indicating success. + +3. Call Play and either wait for the callback to indicate completion, +or call CancelPlay to end playback early. + +4. Delete the instance. + +It is possible to call Play before calling any PrepareToPlay variant. This +will result in a default fixed sequence tone being played. + +@since 5.0 +*/ +class CMdaAudioToneUtility : public CBase, + public MMMFClientUtility + { +public: + + IMPORT_C static CMdaAudioToneUtility* NewL(MMdaAudioToneObserver& aObserver, CMdaServer* aServer = NULL); + + IMPORT_C static CMdaAudioToneUtility* NewL(MMdaAudioToneObserver& aObserver, CMdaServer* aServer, + TInt aPriority, + TInt aPref = EMdaPriorityPreferenceTimeAndQuality); + + ~CMdaAudioToneUtility(); + + virtual TMdaAudioToneUtilityState State(); + + virtual TInt MaxVolume(); + + virtual TInt Volume(); + + virtual void SetVolume(TInt aVolume); + + virtual void SetPriority(TInt aPriority, TInt aPref); + + virtual void SetDTMFLengths(TTimeIntervalMicroSeconds32 aToneLength, + TTimeIntervalMicroSeconds32 aToneOffLength, + TTimeIntervalMicroSeconds32 aPauseLength); + + virtual void SetRepeats(TInt aRepeatNumberOfTimes, const TTimeIntervalMicroSeconds& aTrailingSilence); + + virtual void SetVolumeRamp(const TTimeIntervalMicroSeconds& aRampDuration); + + virtual TInt FixedSequenceCount(); + + virtual const TDesC& FixedSequenceName(TInt aSequenceNumber); + + virtual void PrepareToPlayTone(TInt aFrequency, const TTimeIntervalMicroSeconds& aDuration); + + virtual void PrepareToPlayDTMFString(const TDesC& aDTMF); + + virtual void PrepareToPlayDesSequence(const TDesC8& aSequence); + + virtual void PrepareToPlayFileSequence(const TDesC& aFileName); + + virtual void PrepareToPlayFixedSequence(TInt aSequenceNumber); + + virtual void CancelPrepare(); + + virtual void Play(); + + virtual void CancelPlay(); + + IMPORT_C TInt Pause(); + + IMPORT_C TInt Resume(); + + IMPORT_C void SetBalanceL(TInt aBalance=KMMFBalanceCenter); + + IMPORT_C TInt GetBalanceL(); + + IMPORT_C void PrepareToPlayDualTone(TInt aFrequencyOne, TInt aFrequencyTwo, const TTimeIntervalMicroSeconds& aDuration); + + IMPORT_C void PrepareToPlayFileSequence(RFile& aFile); + + IMPORT_C TAny* CustomInterface(TUid aInterfaceId); + + IMPORT_C void RegisterPlayStartCallback(MMdaAudioTonePlayStartObserver& aObserver); + +protected: + /** + This member is internal and not intended for use. + */ + CMMFMdaAudioToneUtility* iProperties; + }; + + +#endif