phoneapp/phoneringingtoneplayer/tsrc/mt_phoneringingtoneplayer/src/devsoundstub.h
changeset 78 baacf668fe89
equal deleted inserted replaced
76:cfea66083b62 78:baacf668fe89
       
     1 
       
     2 #ifndef DEVSOUNDSTUB_H
       
     3 #define DEVSOUNDSTUB_H
       
     4 
       
     5 // Define tone & sample players, so the original headers won't get included afterwards.
       
     6 #define __MDAAUDIOTONEPLAYER_H__
       
     7 
       
     8 #define __MDAAUDIOSAMPLEPLAYER_H
       
     9 
       
    10 
       
    11 #include <e32base.h>
       
    12 #include <e32std.h>
       
    13 
       
    14 
       
    15 // Priority from devsound
       
    16 enum TMdaPriority
       
    17      {
       
    18     EMdaPriorityMin = -100,
       
    19     EMdaPriorityNormal = 0,
       
    20     EMdaPriorityMax = 100
       
    21     };
       
    22 
       
    23 
       
    24 // Preference from devsound 
       
    25 enum TMdaPriorityPreference    
       
    26     {
       
    27     EMdaPriorityPreferenceNone =    0,
       
    28     EMdaPriorityPreferenceTime =    1,
       
    29     EMdaPriorityPreferenceQuality = 2,
       
    30     EMdaPriorityPreferenceTimeAndQuality = 3
       
    31     };
       
    32 
       
    33 // Mda server stub definition.
       
    34 class CMdaServer : public CBase
       
    35     {
       
    36 public:
       
    37     static CMdaServer* NewL();
       
    38     ~CMdaServer();
       
    39     };
       
    40 
       
    41 // Function call test data. These objects should be compared to define the test result. Devsound stub registers function call data in these objects.
       
    42 class CTestFunctionCallData : public CBase
       
    43     {
       
    44 public:
       
    45     static CTestFunctionCallData* NewL( TInt aFunctionIndex, HBufC* aString, TInt aInt1, TInt aInt2 );
       
    46     static CTestFunctionCallData* NewL( TInt aFunctionIndex, TInt aInt1, TInt aInt2 );
       
    47     static CTestFunctionCallData* NewL( TInt aFunctionIndex, TInt aInt1 = 0 );
       
    48     static CTestFunctionCallData* NewL( TInt aFunctionIndex, TInt aInt1, TTimeIntervalMicroSeconds aSeconds );
       
    49     static CTestFunctionCallData* NewL( TInt aFunctionIndex, TTimeIntervalMicroSeconds aSeconds );
       
    50     static CTestFunctionCallData* NewL( TInt aFunctionIndex, HBufC8* aString );
       
    51     
       
    52     ~CTestFunctionCallData();
       
    53 
       
    54     CTestFunctionCallData( TInt aFunctionIndex, HBufC* aPtr1, TInt aInt1, TInt aInt2, TTimeIntervalMicroSeconds aSeconds );
       
    55     
       
    56     CTestFunctionCallData( TInt aFunctionIndex, HBufC8* aString );
       
    57     
       
    58     HBufC* DesC1();
       
    59     HBufC8* DesC2();
       
    60     TInt Int1();
       
    61     TInt Int2();
       
    62     TTimeIntervalMicroSeconds Seconds();
       
    63     
       
    64     TInt FunctionIndex();
       
    65     
       
    66     TBool operator ==( CTestFunctionCallData& aData );
       
    67 
       
    68 private:
       
    69 
       
    70     TInt iFunctionIndex;
       
    71     HBufC* iP1;
       
    72     TInt iP2;
       
    73     TInt iP3;
       
    74     TTimeIntervalMicroSeconds iP4;
       
    75     HBufC8* iP5;
       
    76 
       
    77     };
       
    78 
       
    79 
       
    80 // M-interface from devsound for callbacks.
       
    81 class MMdaAudioToneObserver
       
    82     {
       
    83 public:
       
    84     virtual void MatoPrepareComplete(TInt aError) = 0;
       
    85     virtual void MatoPlayComplete(TInt aError) = 0;
       
    86     };
       
    87 
       
    88 
       
    89 // M-interface from devsound for callbacks.
       
    90 class MMdaAudioPlayerCallback
       
    91   {
       
    92 public:
       
    93     virtual void MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration) = 0;
       
    94     virtual void MapcPlayComplete(TInt aError) = 0;
       
    95     };
       
    96 
       
    97 
       
    98 // Audio player utility stub. All imperative function calls are stored into iTestData static pointer array.
       
    99 class CMdaAudioPlayerUtility : public CActive
       
   100     {
       
   101 public:
       
   102     
       
   103     // function call index. 
       
   104     enum TFunctionCall
       
   105         {
       
   106         ENewFilePlayerL,
       
   107         ENewL,
       
   108         ESetVolume,
       
   109         ESetRepeats,
       
   110         ESetVolumeRamp,
       
   111         EMaxVolume,
       
   112         EGetVolume,
       
   113         EOpenDesL,
       
   114         EPlay,
       
   115         EStop
       
   116         };
       
   117     
       
   118     static CMdaAudioPlayerUtility* NewFilePlayerL(const TDesC& aFileName,
       
   119         MMdaAudioPlayerCallback& aCallback,
       
   120         TInt aPriority = EMdaPriorityNormal,
       
   121         TInt aPref = EMdaPriorityPreferenceTimeAndQuality,
       
   122         CMdaServer* aServer = NULL );
       
   123     static CMdaAudioPlayerUtility* NewL( MMdaAudioPlayerCallback& aCallback,
       
   124         TInt aPriority = EMdaPriorityNormal,
       
   125         TInt aPref = EMdaPriorityPreferenceTimeAndQuality );
       
   126     CMdaAudioPlayerUtility(MMdaAudioPlayerCallback& aObserver, TInt aPriority, TInt aPref, CMdaServer* aServer );
       
   127     ~CMdaAudioPlayerUtility();
       
   128     TInt SetVolume(TInt aVolume );
       
   129     void SetRepeats(TInt aRepeatNumberOfTimes, const TTimeIntervalMicroSeconds& aTrailingSilence);
       
   130     void SetVolumeRamp(const TTimeIntervalMicroSeconds& aRampDuration);
       
   131     TInt MaxVolume();
       
   132     TInt GetVolume(TInt& aVolume);
       
   133     void OpenDesL(const TDesC8& aDescriptor);
       
   134     
       
   135     void DoCancel();
       
   136     void RunL();
       
   137     
       
   138     void Play();
       
   139     void Stop();
       
   140     void Close();
       
   141     
       
   142     
       
   143     // Static access to test data. If used, stub object must be allocated from the same memory space as the client.
       
   144     static RPointerArray< CTestFunctionCallData >& TestData();
       
   145     static void DelayAudioLoading();
       
   146     static void SimulateErrorInAudioLoading();
       
   147     static void ResetTestData();
       
   148 
       
   149 private:
       
   150 
       
   151     void ConstructL( const TDesC& aFileName );
       
   152 
       
   153     void ConstructL( const TDesC8& aFileName );
       
   154 private:
       
   155 
       
   156     MMdaAudioPlayerCallback& iObserver;
       
   157     TInt iVolume;
       
   158     TInt iMaxVolume;
       
   159     TInt iPriority;
       
   160     TInt iPref;
       
   161     CMdaServer* iServer;
       
   162     HBufC* iFile;
       
   163     HBufC8* iFile8;
       
   164 
       
   165     RTimer iTimer;
       
   166 
       
   167     static RPointerArray< CTestFunctionCallData > iStaticTestData;
       
   168     static bool iDelayedAudioLoading;
       
   169     static bool iErrorInAudioLoading;
       
   170 
       
   171     };
       
   172 
       
   173 
       
   174 
       
   175 // The state of the audio tone utility.
       
   176  
       
   177  enum TMdaAudioToneUtilityState
       
   178      {
       
   179      /** The audio tone utility has not been prepared to play a tone.
       
   180      */
       
   181      EMdaAudioToneUtilityNotReady=0,
       
   182      /** The audio tone utility has been prepared to play a tone and is ready.
       
   183      */
       
   184      EMdaAudioToneUtilityPrepared,
       
   185      /** The audio tone utility is currently playing a tone.
       
   186      */
       
   187      EMdaAudioToneUtilityPlaying,
       
   188      /** The audio tone utility is currently paused.
       
   189      This state is only reached if underlying DevSound implementations supports resume.
       
   190      */
       
   191      EMdaAudioToneUtilityPaused
       
   192      };
       
   193 
       
   194 // Audio tone player utility stub. All imperative function calls are stored into iTestData static pointer array.
       
   195 class CMdaAudioToneUtility : public CActive
       
   196     {
       
   197 public:
       
   198     
       
   199     
       
   200     // function call index. 
       
   201     enum TFunctionCall
       
   202         {
       
   203         ENewL,
       
   204         EMaxVolume,
       
   205         EVolume,
       
   206         ESetVolume,
       
   207         ESetRepeats,
       
   208         ESetVolumeRamp,
       
   209         EFixedSequenceCount,
       
   210         EFixedSequenceName,
       
   211         EPrepareToPlayTone,
       
   212         EPrepareToPlayDTMFString,
       
   213         EPrepareToPlayDesSequence,
       
   214         EPrepareToPlayFileSequence,
       
   215         EPrepareToPlayFixedSequence,
       
   216         ECancelPrepare,
       
   217         ECancelPlay,
       
   218         EPlay,
       
   219         EStop
       
   220         };  
       
   221         
       
   222     static CMdaAudioToneUtility* NewL( MMdaAudioToneObserver& aObserver, 
       
   223         CMdaServer* aServer = NULL,
       
   224         TInt aPriority = EMdaPriorityNormal, 
       
   225         TInt aPref = EMdaPriorityPreferenceTimeAndQuality );
       
   226     
       
   227     
       
   228     CMdaAudioToneUtility( MMdaAudioToneObserver& aObserver, 
       
   229                           TInt aPriority, TInt aPref, CMdaServer* aServer );
       
   230     ~CMdaAudioToneUtility();
       
   231     virtual TInt MaxVolume();
       
   232     virtual TInt Volume();
       
   233     virtual void SetVolume(TInt aVolume );
       
   234     virtual void SetRepeats(TInt aRepeatNumberOfTimes, 
       
   235                             const TTimeIntervalMicroSeconds& aTrailingSilence );
       
   236     virtual void SetVolumeRamp(const TTimeIntervalMicroSeconds& aRampDuration );
       
   237     virtual TInt FixedSequenceCount();
       
   238     virtual const TDesC& FixedSequenceName(TInt aSequenceNumber );
       
   239     virtual void PrepareToPlayTone(TInt aFrequency, 
       
   240                                    const TTimeIntervalMicroSeconds& aDuration );
       
   241     virtual void PrepareToPlayDTMFString(const TDesC& aDTMF);
       
   242     virtual void PrepareToPlayDesSequence(const TDesC8& aSequence);
       
   243     virtual void PrepareToPlayFileSequence(const TDesC& aFileName);
       
   244     virtual void PrepareToPlayFixedSequence(TInt aSequenceNumber);
       
   245     virtual void CancelPrepare();
       
   246     virtual void Play();
       
   247     virtual TMdaAudioToneUtilityState State();
       
   248     virtual void CancelPlay();
       
   249 
       
   250     // Static access to test data. If used, stub object must be allocated from the same memory space as the client.
       
   251     static RPointerArray< CTestFunctionCallData >& TestData();
       
   252     static void DelayAudioLoading();
       
   253     static void SimulateErrorInAudioLoading();
       
   254     static void ResetTestData();
       
   255     
       
   256     
       
   257     void DoCancel();
       
   258     
       
   259     void RunL();
       
   260     
       
   261     void Stop();
       
   262    
       
   263 
       
   264 private:
       
   265     
       
   266     void ConstructL();
       
   267     
       
   268 private:
       
   269     
       
   270     MMdaAudioToneObserver& iObserver;
       
   271     TInt iVolume;
       
   272     TInt iMaxVolume;
       
   273     TInt iPriority;
       
   274     TInt iPref;
       
   275     CMdaServer* iServer;
       
   276     HBufC8* iFile8;
       
   277 
       
   278     
       
   279     RTimer iTimer;
       
   280 
       
   281     
       
   282     static RPointerArray< CTestFunctionCallData > iStaticTestData;
       
   283     static bool iDelayedAudioLoading;
       
   284     static bool iErrorInAudioLoading;
       
   285     
       
   286     };
       
   287 
       
   288 #endif // DEVSOUNDSTUB_H
       
   289 
       
   290 // End of file