phoneapp/phoneringingtoneplayer/tsrc/mt_phoneringingtoneplayer/src/devsoundstub.h
changeset 78 baacf668fe89
--- /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 <e32base.h>
+#include <e32std.h>
+
+
+// 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