diff -r cfea66083b62 -r baacf668fe89 phoneapp/phoneringingtoneplayer/tsrc/mt_phoneringingtoneplayer/src/devsoundstub.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneringingtoneplayer/tsrc/mt_phoneringingtoneplayer/src/devsoundstub.h Fri Oct 15 12:58:46 2010 +0300 @@ -0,0 +1,290 @@ + +#ifndef DEVSOUNDSTUB_H +#define DEVSOUNDSTUB_H + +// Define tone & sample players, so the original headers won't get included afterwards. +#define __MDAAUDIOTONEPLAYER_H__ + +#define __MDAAUDIOSAMPLEPLAYER_H + + +#include +#include + + +// Priority from devsound +enum TMdaPriority + { + EMdaPriorityMin = -100, + EMdaPriorityNormal = 0, + EMdaPriorityMax = 100 + }; + + +// Preference from devsound +enum TMdaPriorityPreference + { + EMdaPriorityPreferenceNone = 0, + EMdaPriorityPreferenceTime = 1, + EMdaPriorityPreferenceQuality = 2, + EMdaPriorityPreferenceTimeAndQuality = 3 + }; + +// Mda server stub definition. +class CMdaServer : public CBase + { +public: + static CMdaServer* NewL(); + ~CMdaServer(); + }; + +// Function call test data. These objects should be compared to define the test result. Devsound stub registers function call data in these objects. +class CTestFunctionCallData : public CBase + { +public: + static CTestFunctionCallData* NewL( TInt aFunctionIndex, HBufC* aString, TInt aInt1, TInt aInt2 ); + static CTestFunctionCallData* NewL( TInt aFunctionIndex, TInt aInt1, TInt aInt2 ); + static CTestFunctionCallData* NewL( TInt aFunctionIndex, TInt aInt1 = 0 ); + static CTestFunctionCallData* NewL( TInt aFunctionIndex, TInt aInt1, TTimeIntervalMicroSeconds aSeconds ); + static CTestFunctionCallData* NewL( TInt aFunctionIndex, TTimeIntervalMicroSeconds aSeconds ); + static CTestFunctionCallData* NewL( TInt aFunctionIndex, HBufC8* aString ); + + ~CTestFunctionCallData(); + + CTestFunctionCallData( TInt aFunctionIndex, HBufC* aPtr1, TInt aInt1, TInt aInt2, TTimeIntervalMicroSeconds aSeconds ); + + CTestFunctionCallData( TInt aFunctionIndex, HBufC8* aString ); + + HBufC* DesC1(); + HBufC8* DesC2(); + TInt Int1(); + TInt Int2(); + TTimeIntervalMicroSeconds Seconds(); + + TInt FunctionIndex(); + + TBool operator ==( CTestFunctionCallData& aData ); + +private: + + TInt iFunctionIndex; + HBufC* iP1; + TInt iP2; + TInt iP3; + TTimeIntervalMicroSeconds iP4; + HBufC8* iP5; + + }; + + +// M-interface from devsound for callbacks. +class MMdaAudioToneObserver + { +public: + virtual void MatoPrepareComplete(TInt aError) = 0; + virtual void MatoPlayComplete(TInt aError) = 0; + }; + + +// M-interface from devsound for callbacks. +class MMdaAudioPlayerCallback + { +public: + virtual void MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration) = 0; + virtual void MapcPlayComplete(TInt aError) = 0; + }; + + +// Audio player utility stub. All imperative function calls are stored into iTestData static pointer array. +class CMdaAudioPlayerUtility : public CActive + { +public: + + // function call index. + enum TFunctionCall + { + ENewFilePlayerL, + ENewL, + ESetVolume, + ESetRepeats, + ESetVolumeRamp, + EMaxVolume, + EGetVolume, + EOpenDesL, + EPlay, + EStop + }; + + static CMdaAudioPlayerUtility* NewFilePlayerL(const TDesC& aFileName, + MMdaAudioPlayerCallback& aCallback, + TInt aPriority = EMdaPriorityNormal, + TInt aPref = EMdaPriorityPreferenceTimeAndQuality, + CMdaServer* aServer = NULL ); + static CMdaAudioPlayerUtility* NewL( MMdaAudioPlayerCallback& aCallback, + TInt aPriority = EMdaPriorityNormal, + TInt aPref = EMdaPriorityPreferenceTimeAndQuality ); + CMdaAudioPlayerUtility(MMdaAudioPlayerCallback& aObserver, TInt aPriority, TInt aPref, CMdaServer* aServer ); + ~CMdaAudioPlayerUtility(); + TInt SetVolume(TInt aVolume ); + void SetRepeats(TInt aRepeatNumberOfTimes, const TTimeIntervalMicroSeconds& aTrailingSilence); + void SetVolumeRamp(const TTimeIntervalMicroSeconds& aRampDuration); + TInt MaxVolume(); + TInt GetVolume(TInt& aVolume); + void OpenDesL(const TDesC8& aDescriptor); + + void DoCancel(); + void RunL(); + + void Play(); + void Stop(); + void Close(); + + + // Static access to test data. If used, stub object must be allocated from the same memory space as the client. + static RPointerArray< CTestFunctionCallData >& TestData(); + static void DelayAudioLoading(); + static void SimulateErrorInAudioLoading(); + static void ResetTestData(); + +private: + + void ConstructL( const TDesC& aFileName ); + + void ConstructL( const TDesC8& aFileName ); +private: + + MMdaAudioPlayerCallback& iObserver; + TInt iVolume; + TInt iMaxVolume; + TInt iPriority; + TInt iPref; + CMdaServer* iServer; + HBufC* iFile; + HBufC8* iFile8; + + RTimer iTimer; + + static RPointerArray< CTestFunctionCallData > iStaticTestData; + static bool iDelayedAudioLoading; + static bool iErrorInAudioLoading; + + }; + + + +// 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 + }; + +// Audio tone player utility stub. All imperative function calls are stored into iTestData static pointer array. +class CMdaAudioToneUtility : public CActive + { +public: + + + // function call index. + enum TFunctionCall + { + ENewL, + EMaxVolume, + EVolume, + ESetVolume, + ESetRepeats, + ESetVolumeRamp, + EFixedSequenceCount, + EFixedSequenceName, + EPrepareToPlayTone, + EPrepareToPlayDTMFString, + EPrepareToPlayDesSequence, + EPrepareToPlayFileSequence, + EPrepareToPlayFixedSequence, + ECancelPrepare, + ECancelPlay, + EPlay, + EStop + }; + + static CMdaAudioToneUtility* NewL( MMdaAudioToneObserver& aObserver, + CMdaServer* aServer = NULL, + TInt aPriority = EMdaPriorityNormal, + TInt aPref = EMdaPriorityPreferenceTimeAndQuality ); + + + CMdaAudioToneUtility( MMdaAudioToneObserver& aObserver, + TInt aPriority, TInt aPref, CMdaServer* aServer ); + ~CMdaAudioToneUtility(); + virtual TInt MaxVolume(); + virtual TInt Volume(); + virtual void SetVolume(TInt aVolume ); + 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 TMdaAudioToneUtilityState State(); + virtual void CancelPlay(); + + // Static access to test data. If used, stub object must be allocated from the same memory space as the client. + static RPointerArray< CTestFunctionCallData >& TestData(); + static void DelayAudioLoading(); + static void SimulateErrorInAudioLoading(); + static void ResetTestData(); + + + void DoCancel(); + + void RunL(); + + void Stop(); + + +private: + + void ConstructL(); + +private: + + MMdaAudioToneObserver& iObserver; + TInt iVolume; + TInt iMaxVolume; + TInt iPriority; + TInt iPref; + CMdaServer* iServer; + HBufC8* iFile8; + + + RTimer iTimer; + + + static RPointerArray< CTestFunctionCallData > iStaticTestData; + static bool iDelayedAudioLoading; + static bool iErrorInAudioLoading; + + }; + +#endif // DEVSOUNDSTUB_H + +// End of file