mmmw_plat/voip_audio_services_api/tsrc/VoIPAudioServicesTestClass/inc/VoIPAudioServicesTestClass.h
changeset 0 71ca22bcf22a
child 3 4f62049db6ac
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/voip_audio_services_api/tsrc/VoIPAudioServicesTestClass/inc/VoIPAudioServicesTestClass.h	Tue Feb 02 01:08:46 2010 +0200
@@ -0,0 +1,571 @@
+/*
+* Copyright (c) 2002-2008 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: voip audio service -
+*
+*/
+
+
+//#define __JITTER_BUFFER_TEST__
+
+#ifndef CVoIPAudioServicesTestClass_H
+#define CVoIPAudioServicesTestClass_H
+
+//  INCLUDES
+#include <StifLogger.h>
+#include <TestScripterInternal.h>
+#include <StifTestModule.h>
+
+#include <e32svr.h>
+#include <e32base.h>
+#include <e32cons.h>
+#include <VoIPUtilityFactory.h>
+#include <VoIPDownlinkStream.h>
+#include <VoIPUplinkStream.h>
+#include <VoIPFormatIntfc.h>
+#include <VoIPG711DecoderIntfc.h>
+#include <VoIPG711EncoderIntfc.h>
+#include <VoIPG729DecoderIntfc.h>
+#include <VoIPILBCDecoderIntfc.h>
+#include <VoIPILBCEncoderIntfc.h>
+#include <VoIPDtmfTonePlayer.h>
+#include <VoIPRingTonePlayer.h>
+#include <VoIPRingToneFactory.h>
+
+#ifdef __JITTER_BUFFER_TEST__
+#include <VoIPJitterBufferIntfc.h>
+#endif //__JITTER_BUFFER_TEST__
+
+
+
+#include "TimeoutController.h"
+
+
+// CONSTANTS
+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 = 2000;
+const TInt KMediumTimeout = 4000;
+const TInt KLongTimeout = 100000;
+
+#ifdef __JITTER_BUFFER_TEST__
+const TUint KDefaultSampleRateInkHz = 8; // for sequence number calculation
+const TUint KMaxSeqNumber = 0xFFFF; //65535
+#endif //__JITTER_BUFFER_TEST__
+
+
+_LIT( KMsgBadTestParameters, "[Error] No valid test case parameters");
+
+// General
+_LIT( KTagG711, "G711");
+_LIT( KTagG729, "G729");
+_LIT( KTagILBC, "iLBC");
+_LIT( KTagAMRNB, "AMR-NB");
+_LIT( KTagPCM16, "PCM16");
+_LIT( KTagHandset, "Handset");
+_LIT( KTagLoudSpeaker, "LoudSpeaker");
+_LIT( KTagUplink, "Uplink");
+_LIT( KTagDnlink, "Dnlink");
+_LIT( KTagFile, "File");
+_LIT( KTagRFile, "RFile");
+_LIT( KTagProfile, "Profile");
+_LIT( KTagDesL, "DesL");
+_LIT( KTagMin, "MIN");
+_LIT( KTagMax, "MAX");
+_LIT( KTagULaw, "uLaw");
+_LIT( KTagALaw, "aLaw");
+_LIT( KTag20ms, "20ms");
+_LIT( KTag30ms, "30ms");
+_LIT( KTagFile1, "File1");
+_LIT( KTagFile2, "File2");
+
+
+
+// MACROS
+//#define ?macro ?macro_def
+// Logging path
+#ifdef __WINSCW__
+_LIT( KVoIPAudioServicesTestClassLogPath, "\\logs\\testframework\\" );
+_LIT16(KTestFile1, "\\testing\\data\\alarm 1.aac");
+_LIT16(KTestFile2, "\\testing\\data\\alarm.aac");
+_LIT16(KTestFile3, "\\testing\\data\\test_8khz.wav");
+#else
+_LIT( KVoIPAudioServicesTestClassLogPath, "e:\\testing\\Log\\" );
+_LIT16(KTestFile1, "e:\\testing\\data\\alarm 1.aac");
+_LIT16(KTestFile2, "e:\\testing\\data\\alarm.aac");
+_LIT16(KTestFile3, "e:\\testing\\data\\test_8khz.wav");
+#endif
+
+// Log file
+_LIT( KVoIPAudioServicesTestClassLogFile, "CVoIPAudioServicesTestClass.txt" );
+_LIT8(KMimetypeAAC, "audio/aac");
+_LIT8(KMimetypeWAV, "audio/wav");
+const TUint KTonesBufSize = 6;
+const TUint KMimeStringSize = 32;
+
+// FORWARD DECLARATIONS
+class CVoIPAudioServicesTestClass;
+class CVoIPDataBuffer;
+#ifdef __JITTER_BUFFER_TEST__
+class CVoIPJBDataBuffer;
+#endif //__JITTER_BUFFER_TEST__
+
+
+
+// CLASS DECLARATION
+
+/**
+*  CRadioUtilityTestClass test class for STIF Test Framework TestScripter.
+*  ?other_description_lines
+*
+*  @lib ?library
+*  @since Series60_3_2
+*/
+NONSHARABLE_CLASS(CVoIPAudioServicesTestClass) :
+                        public CScriptBase,
+                        public MTimeoutObserver,
+                        public MVoIPDownlinkObserver,
+                        public MVoIPUplinkObserver,
+                        public MVoIPFormatObserver,
+                        public MRingToneObserver,
+                        public MDTMFToneObserver
+#ifdef __JITTER_BUFFER_TEST__
+                        , public MVoIPJitterBufferObserver
+#endif //__JITTER_BUFFER_TEST__
+
+    {
+
+    enum TAppState
+        {
+        ENotReady = 0,
+        EReady,
+        EStreaming
+        };
+
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CVoIPAudioServicesTestClass* NewL( CTestModuleIf& aTestModuleIf );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CVoIPAudioServicesTestClass();
+
+        enum TVoIPExpectedEvent
+        {
+            EOpenDownlinkComplete,
+            EOpenUplinkComplete,
+            EDownlinkClosed,
+            EUplinkClosed,
+            EOpenCompleteDNL,
+            EOpenCompleteUPL,
+            EOpenComplete,
+            EPlaybackComplete,
+            EEmptyBuffer,
+            EFillBuffer,
+
+        };
+
+    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 );
+
+
+        // From MVoIPDownlinkObserver
+        virtual void FillBuffer(const CVoIPAudioDownlinkStream& aSrc,
+                            CVoIPDataBuffer* aBuffer);
+        virtual void Event(const CVoIPAudioDownlinkStream& aSrc,
+        					TInt aEventType,
+        					TInt aError);
+
+        // From MVoIPUplinkObserver
+        virtual void EmptyBuffer(const CVoIPAudioUplinkStream& aSrc,
+                             CVoIPDataBuffer* aBuffer);
+        virtual void Event(const CVoIPAudioUplinkStream& aSrc,
+                       		TInt aEventType,
+                       		TInt aError);
+
+        // From MVoIPFormatObserver
+        virtual void Event(const CVoIPFormatIntfc& aSrc, TInt aEventType);
+
+        // From MRingToneObserver
+
+        /**
+	     * ?description
+	     *
+	     * @since S60 v5.0
+	     * @param CRingTonePlayer& - Ring tone player reference
+	     * @param TInt - Event type
+	     * @param TInt - Status
+	     * @return void
+	     */
+        virtual void Event(const CRingTonePlayer& aSrc,
+	                       TInt aEventType,
+	                       TInt aError);
+
+        // From MDTMFToneObserver
+
+        /**
+	     * ?description
+	     *
+	     * @since S60 v5.0
+	     * @param CDTMFTonePlayer& - DTMF tone player reference
+	     * @param TInt - Event type
+	     * @param TInt - Status
+	     * @return void
+	     */
+        virtual void Event(const CDTMFTonePlayer& aPlayer,
+	                       TInt aEventType,
+	                       TInt aError);
+
+        // From MTimeoutObserver
+
+        /**
+        * @since ?Series60_version
+        * @param none
+        * Review if all the expected events have ocurred once the time is over
+        */
+        void HandleTimeout(TInt error);
+
+#ifdef __JITTER_BUFFER_TEST__
+	// From MVoIPJitterBufferObserver
+	virtual void Event(const CVoIPJitterBufferIntfc& aSrc, TInt aEventType);
+#endif //__JITTER_BUFFER_TEST__
+
+
+    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.
+        */
+        CVoIPAudioServicesTestClass( 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
+        */
+        void 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(TVoIPExpectedEvent event, TInt ms);
+
+
+        /**
+        * Unset an event as expected
+        * @since ?Series60_version
+        */
+        TBool RemoveExpectedEvent(TVoIPExpectedEvent 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(TVoIPExpectedEvent 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 CreateVoIPUtilityFactory( CStifItemParser& aItem );
+        TInt CreateRingToneFactory( CStifItemParser& aItem );
+        TInt CreateDownlinkStream( CStifItemParser& aItem );
+        TInt GetDownlinkVersion( CStifItemParser& aItem );
+        TInt CreateUplinkStream( CStifItemParser& aItem );
+        TInt GetUplinkVersion( CStifItemParser& aItem );
+        TInt CreateDTMFTonePlayer( CStifItemParser& aItem );
+        TInt CreateRingTonePlayer( CStifItemParser& aItem );
+        TInt GetSupportedDownlinkFormats( CStifItemParser& aItem );
+        TInt GetSupportedUplinkFormats( CStifItemParser& aItem );
+        TInt SetDownlinkFormat( CStifItemParser& aItem );
+        TInt SetUplinkFormat( CStifItemParser& aItem );
+        TInt OpenDownlink( CStifItemParser& aItem );
+        TInt OpenUplink( CStifItemParser& aItem );
+
+        TInt Start( CStifItemParser& aItem );
+        TInt Stop( CStifItemParser& aItem );
+        TInt Close( CStifItemParser& aItem );
+        TInt Gain( CStifItemParser& aItem );
+        TInt Volume( CStifItemParser& aItem );
+        TInt SetDevice( CStifItemParser& aItem );
+
+        TInt InitDTMFTonePlayer( CStifItemParser& aItem );
+        TInt DTMFTonePlay( CStifItemParser& aItem );
+        TInt CloseDTMFPlayer( CStifItemParser& aItem );
+        TInt StopDTMFTonePlayer( CStifItemParser& aItem );
+
+        TInt InitRingTonePlayer( CStifItemParser& aItem );
+        TInt CloseRingTonePlayer( CStifItemParser& aItem );
+        TInt PlayRingTone( CStifItemParser& aItem );
+        TInt PauseRingTone( CStifItemParser& aItem );
+        TInt ResumeRingTone( CStifItemParser& aItem );
+        TInt StopRingTone( CStifItemParser& aItem );
+        TInt GetBufferType( CStifItemParser& aItem );
+
+        TInt GetSupportedBitrates( CStifItemParser& aItem );
+        TInt SetBitrate( CStifItemParser& aItem );
+        TInt GetBitrate( CStifItemParser& aItem );
+        TInt GetVAD( CStifItemParser& aItem );
+        TInt ToggleVAD( CStifItemParser& aItem );
+        TInt GetFrameMode( CStifItemParser& aItem );
+        TInt ToggleFrameMode( CStifItemParser& aItem );
+        TInt GetFrameModeRqrdForEC( CStifItemParser& aItem );
+        TInt ConcealErrForNextBuf( CStifItemParser& aItem );
+        TInt GetMode( CStifItemParser& aItem );
+        TInt SetMode( CStifItemParser& aItem );
+        TInt GetCNG( CStifItemParser& aItem );
+        TInt ToggleCNG( CStifItemParser& aItem );
+        TInt GetPLC( CStifItemParser& aItem );
+        TInt TogglePLC( CStifItemParser& aItem );
+        TInt BadLsfNextBuffer( CStifItemParser& aItem );
+
+        void DoLoopback();
+        void DisplayFormat(TVoIPCodecFormat aFormat);
+        void GetSupportedBitrates(RArray<TUint>& aBrArr);
+        void SetBitrate(TUint aBitrate);
+        void GetBitrate(TUint& aBitrate);
+
+        TInt ConfigEncAudDevice( CStifItemParser& aItem );
+
+
+#ifdef __JITTER_BUFFER_TEST__
+        TInt ConfigureJB();
+        TInt ResetJB();
+        void DelayDown();
+        void DelayUp();
+#endif //__JITTER_BUFFER_TEST__
+
+    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;
+
+    	// Dn/Uplink, DTMF, Ring tone APIs
+    	CVoIPUtilityFactory*        iFactory;
+    	CVoIPAudioDownlinkStream*   iVoIPDnlink;
+    	CVoIPAudioUplinkStream*     iVoIPUplink;
+    	CDTMFTonePlayer*            iDTMFTonePlayerDn;
+    	CDTMFTonePlayer*            iDTMFTonePlayerUp;
+    	CRingToneFactory*           iRingToneFactory;
+    	CRingTonePlayer*            iRingTonePlayer;
+
+
+    	// Codec format APIs
+    	CVoIPFormatIntfc*           iDecFormatIntfc;
+    	CVoIPFormatIntfc*           iEncFormatIntfc;
+
+    	CVoIPG711EncoderIntfc*      iG711EncFormatIntfc;
+    	CVoIPG711DecoderIntfc*      iG711DecFormatIntfc;
+    	CVoIPFormatIntfc*           iG729EncFormatIntfc;
+    	CVoIPG729DecoderIntfc*      iG729DecFormatIntfc;
+    	CVoIPILBCEncoderIntfc*      iILBCEncFormatIntfc;
+    	CVoIPILBCDecoderIntfc*      iILBCDecFormatIntfc;
+    	CVoIPFormatIntfc*           iAMRNBEncFormatIntfc;
+    	CVoIPFormatIntfc*           iAMRNBDecFormatIntfc;
+    	CVoIPFormatIntfc*           iPCM16EncFormatIntfc;
+    	CVoIPFormatIntfc*           iPCM16DecFormatIntfc;
+
+#ifdef __JITTER_BUFFER_TEST__
+	    CVoIPJitterBufferIntfc*     iJBIntfc;
+	    CVoIPJBDataBuffer*          iPlayJBuf;
+	    TUint                       iSeqNum;
+	    TUint						iSeqNumIncrement;
+#endif //__JITTER_BUFFER_TEST__
+
+	    // For internal app state control
+	    TAppState                   iDnLinkStatus;
+	    TAppState                   iUpLinkStatus;
+	    TVoIPCodecFormat            iDnLinkCodec;
+	    TVoIPCodecFormat            iUpLinkCodec;
+
+	    // For storing codec configuration locally
+	    TBool               iPlc;
+	    TBool               iCng;
+	    TBool               iVad;
+	    TBool               iFrameMode;
+	    TBool               iFrameModeReqEC;
+	    TBool               iSpkr;
+	    TInt                iMaxGain;
+	    TInt                iGain;
+	    TInt                iMaxVolume;
+	    TInt                iVolume;
+	    TUint               iBitrate;
+	    RArray<TUint>       iBitratesArray;
+	    TInt 								loopbackCount;
+
+	    // For streaming buffer control
+	    CVoIPDataBuffer*    iPlayBuf;
+	    CVoIPDataBuffer*		iRecBuf;
+	    TPtr8               iPlayBufPtr;
+	    TPtr8               iRecBufPtr;
+
+	    TBool               iPlayBufReady;
+	    TBool               iRecBufReady;
+
+	    // For ring tone playback
+	    RFile               iRTFile;
+	    RFs                 iFs;
+
+
+
+	    // 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<TVoIPExpectedEvent> iExpectedEvents;
+
+	    // List of notification event (by the callback)
+	    RArray<TVoIPExpectedEvent> iOcurredEvents;
+
+	    CActiveSchedulerWait* iActive;
+        // ?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      // CVoIPAudioServicesTestClass_H
+
+// End of File