sl@0: // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #ifndef TESTOUTPUTSTREAMTRUEPAUSE_H sl@0: #define TESTOUTPUTSTREAMTRUEPAUSE_H sl@0: sl@0: #include sl@0: #include "TSI_MMFACLNT.h" sl@0: #include "mdaaudiooutputstream.h" sl@0: #include "truepauseconstants.h" sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * Constant declarations sl@0: *======================================================================================================== sl@0: */ sl@0: sl@0: const TInt KBufSize = 1024; //1K buffer size sl@0: const TInt KBufferNum = 5; //5 buffers per array sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * Base class for OutputStream test steps in this suite. sl@0: *======================================================================================================== sl@0: */ sl@0: sl@0: class RMdaOutputStreamTestBase: public RAsyncTestStep, public MMdaAudioOutputStreamCallback sl@0: { sl@0: public: sl@0: // from RAsyncTestStep sl@0: void KickoffTestL(); sl@0: void CloseTest(); sl@0: void CallStopTest(TInt aError); sl@0: protected: sl@0: RMdaOutputStreamTestBase(const TDesC& aTestName, const TDesC& aSectName); sl@0: ~RMdaOutputStreamTestBase(); sl@0: virtual void DoKickoffTestL() = 0; sl@0: virtual void DoTimerCallback() = 0; sl@0: static TInt TimerCallback(TAny*); sl@0: void StartTimer(TTimeIntervalMicroSeconds32 aWaitTime); sl@0: sl@0: // Executes events of MdaToneUtility using a Finite State Machine sl@0: virtual void Fsm(TMdaAOSEvent aMdaAudioOutputStreamEvent, TInt aError); sl@0: sl@0: // From MMdaAudioOutputStreamObserver sl@0: virtual void MaoscBufferCopied(TInt aError, const TDesC8 &aBuffer); sl@0: virtual void MaoscPlayComplete(TInt aError); sl@0: virtual void MaoscOpenComplete(TInt aError); sl@0: sl@0: protected: sl@0: TMdaAOSState iAudioOutputStreamState; sl@0: CMdaAudioOutputStream* iAudioOutputStream; sl@0: CPeriodic* iTimer; sl@0: TBool iWait; sl@0: TBool iStop; sl@0: TBool iConfig; sl@0: TBool iInvalidConfig; sl@0: TBool iGetBytes; sl@0: TInt iCount; sl@0: TInt iVolume; sl@0: TInt iBalance; sl@0: TInt iDuration; sl@0: TInt iPause; sl@0: TInt iBytes; sl@0: TTimeIntervalMicroSeconds iPosition; sl@0: sl@0: TBuf iSectName; // Section name sl@0: // Handle for the audio file for playing and recording sl@0: RFile iFile; sl@0: TFileName iFilename; sl@0: // Handle to a file server session sl@0: RFs iFs; sl@0: RBuf8 iBuffer; // Buffer to read data sl@0: sl@0: }; sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * MM-MMF-ACLNT-I-0175-HP sl@0: *======================================================================================================== sl@0: */ sl@0: class RMdaOutputStreamResumeTest : public RMdaOutputStreamTestBase sl@0: { sl@0: public: sl@0: static RMdaOutputStreamResumeTest* NewL(const TDesC& aTestName, const TDesC& aSectName); sl@0: private: sl@0: RMdaOutputStreamResumeTest(const TDesC& aTestName, const TDesC& aSectName); sl@0: void DoKickoffTestL(); sl@0: void DoTimerCallback(); sl@0: }; sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * MM-MMF-ACLNT-I-0176-HP sl@0: *======================================================================================================== sl@0: */ sl@0: class RMdaOutputStreamResumeThriceTest : public RMdaOutputStreamTestBase sl@0: { sl@0: public: sl@0: static RMdaOutputStreamResumeThriceTest* NewL(const TDesC& aTestName, const TDesC& aSectName); sl@0: private: sl@0: RMdaOutputStreamResumeThriceTest(const TDesC& aTestName, const TDesC& aSectName); sl@0: void DoKickoffTestL(); sl@0: void DoTimerCallback(); sl@0: }; sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * MM-MMF-ACLNT-I-0177-HP sl@0: *======================================================================================================== sl@0: */ sl@0: class RMdaOutputStreamConfigInPauseTest : public RMdaOutputStreamTestBase sl@0: { sl@0: public: sl@0: static RMdaOutputStreamConfigInPauseTest* NewL(const TDesC& aTestName, const TDesC& aSectName); sl@0: private: sl@0: RMdaOutputStreamConfigInPauseTest(const TDesC& aTestName, const TDesC& aSectName); sl@0: void DoKickoffTestL(); sl@0: void DoTimerCallback(); sl@0: }; sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * MM-MMF-ACLNT-I-0178-HP sl@0: *======================================================================================================== sl@0: */ sl@0: class RMdaOutputStreamInvalidConfigInPauseTest : public RMdaOutputStreamTestBase sl@0: { sl@0: public: sl@0: static RMdaOutputStreamInvalidConfigInPauseTest* NewL(const TDesC& aTestName, const TDesC& aSectName); sl@0: private: sl@0: RMdaOutputStreamInvalidConfigInPauseTest(const TDesC& aTestName, const TDesC& aSectName); sl@0: void DoKickoffTestL(); sl@0: void DoTimerCallback(); sl@0: }; sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * MM-MMF-ACLNT-I-0179-HP sl@0: *======================================================================================================== sl@0: */ sl@0: class RMdaOutputStreamGetBytesInPauseTest : public RMdaOutputStreamTestBase sl@0: { sl@0: public: sl@0: static RMdaOutputStreamGetBytesInPauseTest* NewL(const TDesC& aTestName, const TDesC& aSectName); sl@0: private: sl@0: RMdaOutputStreamGetBytesInPauseTest(const TDesC& aTestName, const TDesC& aSectName); sl@0: void DoKickoffTestL(); sl@0: void DoTimerCallback(); sl@0: }; sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * MM-MMF-ACLNT-I-0180-HP sl@0: *======================================================================================================== sl@0: */ sl@0: class RMdaOutputStreamPlayPauseStopPlayTest : public RMdaOutputStreamTestBase sl@0: { sl@0: public: sl@0: static RMdaOutputStreamPlayPauseStopPlayTest* NewL(const TDesC& aTestName, const TDesC& aSectName); sl@0: private: sl@0: RMdaOutputStreamPlayPauseStopPlayTest(const TDesC& aTestName, const TDesC& aSectName); sl@0: void DoKickoffTestL(); sl@0: void DoTimerCallback(); sl@0: // Executes events of MdaToneUtility using a Finite State Machine sl@0: void Fsm(TMdaAOSEvent aMdaAudioOutputStreamEvent, TInt aError); sl@0: // From MMdaAudioOutputStreamObserver sl@0: void MaoscPlayComplete(TInt aError); sl@0: }; sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * MM-MMF-ACLNT-I-0181-HP sl@0: *======================================================================================================== sl@0: */ sl@0: class RMdaOutputStreamPauseResumeBeforeWriteTest : public RMdaOutputStreamTestBase sl@0: { sl@0: public: sl@0: static RMdaOutputStreamPauseResumeBeforeWriteTest* NewL(const TDesC& aTestName, const TDesC& aSectName); sl@0: private: sl@0: RMdaOutputStreamPauseResumeBeforeWriteTest(const TDesC& aTestName, const TDesC& aSectName); sl@0: void DoKickoffTestL(); sl@0: void DoTimerCallback(); sl@0: // Executes events of MdaToneUtility using a Finite State Machine sl@0: void Fsm(TMdaAOSEvent aMdaAudioOutputStreamEvent, TInt aError); sl@0: }; sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * MM-MMF-ACLNT-I-0182-HP sl@0: *======================================================================================================== sl@0: */ sl@0: class RMdaOutputStreamInvalidFormatsTest : public RMdaOutputStreamTestBase sl@0: { sl@0: public: sl@0: static RMdaOutputStreamInvalidFormatsTest* NewL(const TDesC& aTestName, const TDesC& aSectName); sl@0: private: sl@0: RMdaOutputStreamInvalidFormatsTest(const TDesC& aTestName, const TDesC& aSectName); sl@0: void DoKickoffTestL(); sl@0: void DoTimerCallback(); sl@0: // Executes events of MdaToneUtility using a Finite State Machine sl@0: void Fsm(TMdaAOSEvent aMdaAudioOutputStreamEvent, TInt aError); sl@0: }; sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * MM-MMF-ACLNT-I-0184-HP sl@0: *======================================================================================================== sl@0: */ sl@0: class RMdaOutputStreamPauseNonA3FTest : public RMdaOutputStreamTestBase sl@0: { sl@0: public: sl@0: static RMdaOutputStreamPauseNonA3FTest* NewL(const TDesC& aTestName, const TDesC& aSectName); sl@0: private: sl@0: RMdaOutputStreamPauseNonA3FTest(const TDesC& aTestName, const TDesC& aSectName); sl@0: void DoKickoffTestL(); sl@0: void DoTimerCallback(); sl@0: // Executes events of MdaToneUtility using a Finite State Machine sl@0: void Fsm(TMdaAOSEvent aMdaAudioOutputStreamEvent, TInt aError); sl@0: }; sl@0: sl@0: #endif// __TESTOUTPUTSTREAMTRUEPAUSE_H__