mmaudio_plat/audio_routing_api/tsrc/AudioRoutingTestClass/inc/AudioRoutingTestClass.h
changeset 0 b8ed18f6c07b
child 5 b220a9341636
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmaudio_plat/audio_routing_api/tsrc/AudioRoutingTestClass/inc/AudioRoutingTestClass.h	Thu Oct 07 22:34:12 2010 +0100
@@ -0,0 +1,492 @@
+/*
+* Copyright (c) 2002 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:  AudioroutingControl test module
+*
+*/
+
+
+
+#ifndef CAudioRoutingTestClass_H
+#define CAudioRoutingTestClass_H
+
+//  INCLUDES
+#include <StifLogger.h>
+#include <TestScripterInternal.h>
+#include <StifTestModule.h>
+
+#include <e32svr.h>
+#include <e32base.h>
+#include <e32cons.h>
+#include <customInterfaceUtility.h>
+#include <CustomCommandUtility.h>
+#include <SoundDevice.h>
+#include <AudioInput.h>
+#include <AudioOutput.h>
+#include <mdaaudiosampleplayer.h>
+#include <MdaAudioSampleEditor.h>
+#include <MdaAudioOutputStream.h>
+#include <MdaAudioInputStream.h>
+#include <MdaAudioTonePlayer.h>
+#include <MidiClientUtility.h>
+#include <MAudioOutputObserver.h>
+#include <DrmAudioSamplePlayer.h>
+#include <videoplayer.h>
+#include <VideoRecorder.h>
+#include "TimeoutController.h"
+
+#include <COEDEF.H>
+
+
+// CONSTANTS
+const TUint screenWidth  = 0;
+const TUint screenHeight = 0;
+
+const TInt KErrBadTestParameter= -1000;         // Error on configuration file
+
+const TInt KErrEventPending =-2000;             // Timeout and not callback
+const TInt KErrCallbackErrorCode = -2001;       // Callback return error code
+const TInt KErrUnexpectedValue =-2002;          // Unexpected value at setting
+const TInt KErrTimeoutController = -2007;		// Unexpected notification
+
+const TInt KShortTimeout = 1000;
+const TInt KMediumTimeout = 4000;
+const TInt KLongTimeout = 100000;
+
+//for record with input stream a pcm bit buffer
+const TInt KStreamBufferSize 	= 320;
+const TInt KStreamBufferCount 	= 2;
+const TInt KMaxFileSize 	= 500000;
+/************************************************/
+
+_LIT( KMsgBadTestParameters, "[Error] No valid test case parameters");
+
+// General
+_LIT( KTagG711, "G711");
+_LIT( KTagOutput32Bit, "Output32Bit");
+_LIT( KTagDownMixToStereo, "DownMixToStereo");
+_LIT( KTagLostDataConcealment, "LostDataConcealment");
+_LIT( KTagTrue, "True");
+_LIT( KTagFalse, "False");
+
+
+_LIT( KTagOuputRecord, "OutputRecord");
+_LIT( KTagDevSound, "DevSound");
+_LIT( KTagDevSound1, "DevSound1");
+_LIT( KTagCustomInterface, "CustomInterface");
+_LIT( KTagCustomCommand, "CustomCommand");
+_LIT( KTagInputStream, "InputStream");
+_LIT( KTagOutputStream, "OutputStream");
+_LIT( KTagToneUtility, "ToneUtility");\
+_LIT( KTagCustomInterfaceOutput, "CustomInterfaceOutput");
+_LIT( KTagRecorder, "Recorder");
+_LIT( KTagAudioPlayer, "AudioPlayer");
+_LIT( KTagCustomCommandOutput, "CustomCommandOutput");
+_LIT( KTagMidiClient, "MidiClient");
+_LIT( KTagDrmPlayer, "DrmPlayer");
+_LIT( KTagVideoPlayer, "VideoPlayer");
+_LIT( KTagVideoRecord, "VideoRecord");
+
+#ifdef __WINSCW__
+_LIT( KAudioMidiFile, "c:\\testing\\data\\aqualung.mid");
+_LIT( KAudioDrmFile, "c:\\testing\\data\\test.amr");
+_LIT(K3gpTestFile,"c:\\testing\\data\\videoTest.3gp");
+_LIT(KMp3TestFile,"c:\\testing\\data\\mp3mp2s8b17.mp3");
+#else
+_LIT( KAudioMidiFile, "e:\\testing\\data\\aqualung.mid");
+_LIT( KAudioDrmFile, "e:\\testing\\data\\test.amr");
+_LIT(K3gpTestFile,"e:\\testing\\data\\videoTest.3gp");
+_LIT(KMp3TestFile,"e:\\testing\\data\\mp3mp2s8b17.mp3");
+#endif
+
+class CVideoRecorderUtility;
+// MACROS
+//#define ?macro ?macro_def
+// Logging path
+#ifdef __WINSCW__
+_LIT( KAudioRoutingTestClassLogPath, "\\logs\\testframework\\" );
+#else
+_LIT( KAudioRoutingTestClassLogPath, "e:\\testing\\Log\\" );
+#endif
+
+// Log file
+_LIT( KAudioRoutingTestClassLogFile, "AudioRoutingTestClass.txt" );
+
+
+// FORWARD DECLARATIONS
+class CAudioRoutingTestClass;
+
+
+// CLASS DECLARATION
+
+/**
+*  CRadioUtilityTestClass test class for STIF Test Framework TestScripter.
+*  ?other_description_lines
+*
+*  @lib ?library
+*  @since Series60_3_2
+*/
+NONSHARABLE_CLASS(CAudioRoutingTestClass) : public CScriptBase,
+											public MTimeoutObserver,
+											public MDevSoundObserver,
+											public MMdaObjectStateChangeObserver,
+											public MMdaAudioPlayerCallback,
+											public MMdaAudioInputStreamCallback,
+											public MAudioOutputObserver,
+						 					public MMdaAudioOutputStreamCallback,
+						 					public MMdaAudioToneObserver,
+										    public MMidiClientUtilityObserver,
+										    public MDrmAudioPlayerCallback,
+										    public MVideoPlayerUtilityObserver,
+										    public MVideoRecorderUtilityObserver
+										//	public MRadioFmTunerObserver,
+										//	public MRadioPlayerObserver,
+										//	public MRadioRdsObserver
+											/*public MRadioPresetObserver*/
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CAudioRoutingTestClass* NewL( CTestModuleIf& aTestModuleIf );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CAudioRoutingTestClass();
+
+		enum TG711ExpectedEvent
+		{
+			EInitializeComplete,
+
+		};
+
+    public: // New functions
+
+        /**
+        * ?member_description.
+        * @since ?Series60_version
+        * @param ?arg1 ?description
+        * @return ?description
+        */
+        //?type ?member_function( ?type ?arg1 );
+
+    public: // Functions from base classes
+
+        /**
+        * From CScriptBase Runs a script line.
+        * @since ?Series60_version
+        * @param aItem Script line containing method name and parameters
+        * @return Symbian OS error code
+        */
+        virtual TInt RunMethodL( CStifItemParser& aItem );
+
+
+		// Required for MDevSoundObserver:
+		void InitializeComplete(TInt /*aError*/);
+		void ToneFinished(TInt /*aError*/);
+		void BufferToBeFilled(CMMFBuffer* /*aBuffer*/);
+		void PlayError(TInt /*aError*/);
+		void BufferToBeEmptied(CMMFBuffer* /*aBuffer*/);
+		void RecordError(TInt /*aError*/);
+		void ConvertError(TInt /*aError*/);
+		void DeviceMessage(TUid /*aMessageType*/, const TDesC8& /*aMsg*/);
+
+		virtual void MoscoStateChangeEvent(CBase* aObject, TInt aPreviousState, TInt aCurrentState, TInt aErrorcCode);
+
+		void MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration);
+		void MapcPlayComplete(TInt aError);
+
+	    // Audio Input Stream
+    	virtual void MaiscOpenComplete(TInt aError);
+	    virtual void MaiscBufferCopied(TInt aError, const TDesC8& aBuffer);
+    	virtual void MaiscRecordComplete(TInt aError);
+
+
+    	virtual void DefaultAudioOutputChanged( CAudioOutput& aAudioOutput,
+    		                                CAudioOutput::TAudioOutputPreference aNewDefault );
+
+	    // Audio Output Stream
+    	virtual void MaoscOpenComplete(TInt aError);
+	    virtual void MaoscBufferCopied(TInt aError, const TDesC8& aBuffer);
+    	virtual void MaoscPlayComplete(TInt aError);
+
+    	// Audio Tone Observer
+	    virtual void MatoPrepareComplete(TInt aError);
+    	virtual void MatoPlayComplete(TInt aError);
+
+        // MidiClientUtilityObserver
+	    virtual void MmcuoStateChanged(TMidiState aOldState,TMidiState aNewState,const TTimeIntervalMicroSeconds& aTime,TInt aError);
+    	virtual void MmcuoTempoChanged(TInt aMicroBeatsPerMinute);
+	    virtual void MmcuoVolumeChanged(TInt aChannel,TReal32 aVolumeInDecibels);
+	    virtual void MmcuoMuteChanged(TInt aChannel,TBool aMuted);
+	    virtual void MmcuoSyncUpdate(const TTimeIntervalMicroSeconds& aMicroSeconds,TInt64 aMicroBeats);
+	    virtual void MmcuoMetaDataEntryFound(const TInt aMetaDataEntryId,const TTimeIntervalMicroSeconds& aPosition);
+	    virtual void MmcuoMipMessageReceived(const RArray<TMipMessageEntry>& aMessage);
+	    virtual void MmcuoPolyphonyChanged(TInt aNewPolyphony);
+	    virtual void MmcuoInstrumentChanged(TInt aChannel,TInt aBankId,TInt aInstrumentId);
+
+	    //MDrmAudioPlayerCallback
+		virtual void MdapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration);
+		virtual void MdapcPlayComplete(TInt aError);
+
+		//MVideoPlayerUtilityObserver
+		virtual void MvpuoOpenComplete(TInt aError);
+		virtual void MvpuoPrepareComplete(TInt aError);
+		virtual void MvpuoFrameReady(CFbsBitmap& aFrame,TInt aError);
+		virtual void MvpuoPlayComplete(TInt aError);
+		virtual void MvpuoEvent(const TMMFEvent& aEvent);
+
+		//MVideoRecorderUtilityObserver
+		virtual void MvruoOpenComplete(TInt aError);
+		virtual void MvruoPrepareComplete(TInt aError);
+		virtual void MvruoRecordComplete(TInt aError);
+		virtual void MvruoEvent(const TMMFEvent& aEvent);
+
+	    // From MTimeoutObserver
+
+	    /**
+	    * @since ?Series60_version
+	    * @param none
+	    * Review if all the expected events have ocurred once the time is over
+	    */
+	    void HandleTimeout(TInt error);
+
+
+
+
+    protected:  // New functions
+
+        /**
+        * ?member_description.
+        * @since ?Series60_version
+        * @param ?arg1 ?description
+        * @return ?description
+        */
+        //?type ?member_function( ?type ?arg1 );
+
+    protected:  // Functions from base classes
+
+        /**
+        * From ?base_class ?member_description
+        */
+        //?type ?member_function();
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CAudioRoutingTestClass( CTestModuleIf& aTestModuleIf );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+        // Prohibit copy constructor if not deriving from CBase.
+        // ?classname( const ?classname& );
+        // Prohibit assigment operator if not deriving from CBase.
+        // ?classname& operator=( const ?classname& );
+
+        /**
+        * Frees all resources allocated from test methods.
+        * @since ?Series60_version
+        */
+        TInt Delete();
+
+        /**
+        * Test methods are listed below.
+        */
+
+        /**
+        * Example test method.
+        * @since ?Series60_version
+        * @param aItem Script line containing parameters.
+        * @return Symbian OS error code.
+        */
+
+	    /**
+	    * Set an event as expected and set default timeout
+	    * @since ?Series60_version
+	    */
+	    void AddExpectedEvent(TG711ExpectedEvent event, TInt ms);
+
+
+	    /**
+	    * Unset an event as expected
+	    * @since ?Series60_version
+	    */
+	    TBool RemoveExpectedEvent(TG711ExpectedEvent event);
+
+
+	    /**
+	    * @since ?Series60_version
+	    * @param none
+	    * Removes all expected events
+	    */
+	    void RemoveAllExpectedEvents();
+
+	    /**
+	    * Verify that the event was expected, removes it from the list
+	    * Signal the TestScripter with the returned error code
+	    * @since ?Series60_version
+	    */
+	    void ProcessEvent(TG711ExpectedEvent aEvent, TInt aError);
+
+	    /**
+	    * Maps a event with a descriptor with its name
+	    * @since ?Series60_version
+	    */
+	    TPtrC EventName( TInt aKey );
+
+	    /*
+	    * Test methods are listed below.
+	    */
+
+	    /**
+	    * Sets a timeout different since the default
+	    * @since Series60_3_2
+	    * @param aItem Script line containing parameters.
+	    * @return Symbian OS error code.
+	    */
+	    TInt SetTimeout( CStifItemParser& aItem );
+
+	    /**
+	    *
+	    * @since Series60_3_2
+	    * @param aItem Script line containing parameters.
+	    * @return Symbian OS error code.
+	    */
+	    TInt SetExpectedEvents( CStifItemParser& aItem );
+
+	    /**
+	    *
+	    * @since Series60_3_2
+	    * @param aItem Script line containing parameters.
+	    * @return Symbian OS error code.
+	    */
+	    TInt SetAllowedPanic( CStifItemParser& aItem );
+
+	    /**
+	    * Connect to the default client to the server
+	    * @since ?Series60_version
+	    * @param aItem Script line containing parameters.
+	    * @return Symbian OS error code.
+	    */
+
+		TInt ExampleL( CStifItemParser& aItem );
+		//TInt CreateDevSoundInstance( CStifItemParser& aItem );
+		//TInt CreateDevSoundInstance_1( CStifItemParser& aItem );
+		TInt CreateObject( CStifItemParser& aItem );
+		TInt CreateAudioInput( CStifItemParser& aItem );
+		void CreateInput();
+		void CreateOutput();
+		TInt CreateVideoInput();
+
+		/*To create and destroy the window to start the CVideoPlayerUtility */
+		TInt CreateVideoWindow();
+		TInt DeleteVideoWindow();
+		TInt CreateSessionAndScreen();
+		TInt CreateVideoObject();
+		TInt CreateWindowGroup();
+		TInt EndDrawing();
+		TInt CreateVideoRecorderObject();
+		TInt AudioInput();
+		TInt SetAudioInputL();
+		TInt AudioOutput();
+		TInt DefaultAudioOutput();
+		TInt RegisterObserverL();
+		TInt SecureOutput();
+		TInt SetAudioOutputL();
+		TInt SetSecureOutputL();
+		TInt UnregisterObserver();
+
+    public:     // Data
+        // ?one_line_short_description_of_data
+        //?data_declaration;
+
+    protected:  // Data
+        // ?one_line_short_description_of_data
+        //?data_declaration;
+
+    private:    // Data
+
+    	// reference to TestModuleIf
+    	CTestModuleIf& 				iTestModuleIf;
+    	CAudioInput* 				iAudioInput;
+    	CAudioOutput* 				iAudioOutput;
+    	CMdaAudioRecorderUtility* 	iRecorder;
+    	CVideoRecorderUtility* 		iVideoRecord;
+    	CMdaAudioPlayerUtility* 	iUtil;
+    	TBool						isInput;
+		CMMFDevSound*				iDevSound;
+		CCustomInterfaceUtility*   	iCustomInterfaceUtility;
+		CCustomCommandUtility*     	iCustomCommandUtility;
+		CMdaAudioInputStream*    	iAudioInputStream;
+		CMdaAudioOutputStream*    	iAudioOutputStream;
+		CMdaAudioToneUtility*     	iAudioTone;
+		CMidiClientUtility*       	iMidiClientUtility;
+		CDrmPlayerUtility* 		  	iDrmPlayerUtility;
+		TPtrC 						iObject;
+		TBool 						iInputOutput;
+    	CVideoPlayerUtility*      	iVideoPlayerUtility;
+		// Active object with a timer to timeout the test case
+		CSimpleTimeout * iTimeoutController;
+
+		// Indicates if the test case use a normal exit reason
+		TBool iNormalExitReason;
+
+		// List of expected events
+		RArray<TG711ExpectedEvent> iExpectedEvents;
+
+		// List of notification event (by the callback)
+		RArray<TG711ExpectedEvent> iOcurredEvents;
+		//TInt error;
+		/***********INPUT STREAM VARS ******************/
+		//CMdaAudioInputStream* 	iInputStream;
+		RPointerArray<TDes8> 	iStreamBuffer;
+		TMdaAudioDataSettings 	iStreamSettings;
+		TInt 					iStreamIdx,iPlayError;
+		HBufC8* 				iSoundData;
+		TBool 					iReady;
+		/************************************************/
+
+		/***********DUMMY WINDOW VARS ******************/
+        RWsSession iWindowSession;
+        CWsScreenDevice* iScreenDevice;
+        CWindowGc* iWindowGc;
+        TRect iRect;
+        RWindow iWindow;
+        RWindowGroup iWindowGroup;
+		/***********************************************/
+		// ?one_line_short_description_of_data
+		//?data_declaration;
+
+        // Reserved pointer for future extension
+        //TAny* iReserved;
+
+    public:     // Friend classes
+        //?friend_class_declaration;
+
+    protected:  // Friend classes
+        //?friend_class_declaration;
+    private:    // Friend classes
+        //?friend_class_declaration;
+
+    };
+
+#endif      // CAudioRoutingTest_H
+
+// End of File