mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/inc/TMSAudioServicesTestClass.h
changeset 0 71ca22bcf22a
child 3 4f62049db6ac
child 12 5a06f39ad45b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/inc/TMSAudioServicesTestClass.h	Tue Feb 02 01:08:46 2010 +0200
@@ -0,0 +1,496 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service - STIF TEST
+ *
+ */
+
+#ifndef __TMSAUDIOSERVICESTESTCLASS_H
+#define __TMSAUDIOSERVICESTESTCLASS_H
+
+//  INCLUDES
+#include <StifLogger.h>
+#include <TestScripterInternal.h>
+#include <StifTestModule.h>
+
+#include <e32svr.h>
+#include <e32base.h>
+#include <e32cons.h>
+#include <tms.h>
+#include <TmsFactory.h>
+#include <TmsCall.h>
+#include <TmsStream.h>
+#include <TmsFormat.h>
+#include <TmsClientSink.h>
+#include <TmsClientSource.h>
+#include <TmsClientSourceObsrvr.h>
+#include <TmsClientSinkObsrvr.h>
+#include <TmsVolumeEffect.h>
+#include <TmSGlobalVolEffect.h>
+#include <TmsGainEffect.h>
+#include <TmSGlobalGainEffect.h>
+#include <TmsEffectObsrvr.h>
+#include <TmsStreamObsrvr.h>
+#include <TmsBuffer.h>
+#include <TmsGlobalRouting.h>
+#include <TmsGlobalRoutingObsrvr.h>
+#include <TMSG711Format.h>
+#include <TMSG729Format.h>
+#include <TMSiLBCFormat.h>
+#include <TMSPCMFormat.h>
+#include <TMSAMRFormat.h>
+
+#include "TimeoutController.h"
+
+using namespace TMS;
+
+// 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 = 10000;
+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( 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");
+
+_LIT( KTagNone, "None");
+_LIT( KTagHandset, "Handset");
+_LIT( KTagLoudspeaker, "Loudspeaker");
+_LIT( KTagWiredAccessory, "WiredAccessory");
+_LIT( KTagAccessory, "Accessory");
+_LIT( KTagTTY, "TTY");
+_LIT( KTagPublic, "Public");
+_LIT( KTagPrivate, "Private");
+
+// MACROS
+//#define ?macro ?macro_def
+// Logging path
+#ifdef __WINSCW__
+_LIT( KTmsAudioServicesTestClassLogPath, "\\logs\\testframework\\" );
+_LIT16(KTestFile1, "\\testing\\data\\alarm 1.aac");
+_LIT16(KTestFile2, "\\testing\\data\\alarm.aac");
+_LIT16(KTestFile3, "\\testing\\data\\test_8khz.wav");
+#else
+_LIT( KTmsAudioServicesTestClassLogPath, "c:\\testing\\Log\\" );
+_LIT16(KTestFile1, "c:\\testing\\data\\alarm 1.aac");
+_LIT16(KTestFile2, "c:\\testing\\data\\alarm.aac");
+_LIT16(KTestFile3, "c:\\testing\\data\\test_8khz.wav");
+#endif
+
+// Log file
+_LIT( KTmsAudioServicesTestClassLogFile, "CTmsAudioServicesTestClass.txt" );
+_LIT8(KMimetypeAAC, "audio/aac");
+_LIT8(KMimetypeWAV, "audio/wav");
+const TUint KTonesBufSize = 6;
+const TUint KMimeStringSize = 32;
+
+// FORWARD DECLARATIONS
+class CTmsAudioServicesTestClass;
+class CTmsDataBuffer;
+#ifdef __JITTER_BUFFER_TEST__
+class CTmsJBDataBuffer;
+#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(CTmsAudioServicesTestClass) :
+    public CScriptBase,
+    public MTimeoutObserver,
+    public TMSStreamObserver,
+    public TMSClientSourceObserver,
+    public TMSClientSinkObserver,
+    public TMSEffectObserver,
+    public TMSGlobalRoutingObserver
+    {
+    enum StreamState
+        {
+        UNINITIALIZED = 0,
+        INITIALIZED,
+        PAUSED,
+        STARTED,
+        };
+
+public: // Constructors and destructor
+
+    /**
+     * Two-phased constructor.
+     */
+    static CTmsAudioServicesTestClass* NewL(CTestModuleIf& aTestModuleIf);
+
+    /**
+     * Destructor.
+     */
+    virtual ~CTmsAudioServicesTestClass();
+
+    enum TTmsExpectedEvent
+        {
+        EOpenDownlinkComplete,
+        EOpenUplinkComplete,
+        EDownlinkClosed,
+        EUplinkClosed,
+        EOpenCompleteDNL,
+        EOpenCompleteUPL,
+        EStreamPaused,
+        EStreamStarted,
+        EOpenComplete,
+        EPlaybackComplete,
+        EEmptyBuffer,
+        EFillBuffer,
+        EOutputChanged,
+        ESetOutputComplete,
+        };
+
+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 MTimeoutObserver
+
+    /**
+     * @since ?Series60_version
+     * @param none
+     * Review if all the expected events have ocurred once the time is over
+     */
+    void HandleTimeout(TInt error);
+
+    //From TMSStreamObserver
+    void TMSStreamEvent(TMSStream* stream, TMSSignalEvent event);
+
+    //From TMSClientSourceObserver
+    void FillBuffer(TMSBuffer& buffer);
+    void BufferProcessed(TMSBuffer* buffer, gint reason);
+
+    //From TMSClientSinkObserver
+    void ProcessBuffer(TMSBuffer* buffer);
+
+    //From TMSClientSinkObserver starts
+    void EffectsEvent(TMSEffect* tmseffect, TMSSignalEvent event);
+
+    // from TMSGlobalRoutingObserver
+    void GlobalRoutingEvent(TMSGlobalRouting* /*routing*/,
+            TMSSignalEvent event, TMSAudioOutput output);
+
+private:
+
+    /**
+     * C++ default constructor.
+     */
+    CTmsAudioServicesTestClass(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();
+
+    /**
+     * Set an event as expected and set default timeout
+     * @since ?Series60_version
+     */
+    void AddExpectedEvent(TTmsExpectedEvent event, TInt ms);
+
+    /**
+     * Unset an event as expected
+     * @since ?Series60_version
+     */
+    TBool RemoveExpectedEvent(TTmsExpectedEvent 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(TTmsExpectedEvent aEvent, TInt aError);
+
+    /**
+     * Maps a event with a descriptor with its name
+     * @since ?Series60_version
+     */
+    TPtrC EventName(TInt aKey);
+
+    /**
+     * 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 CreateTmsFactory(CStifItemParser& aItem);
+    TInt CreateCall(CStifItemParser& aItem);
+    TInt CreateFormat(CStifItemParser& aItem);
+    TInt CreateGlobalRouting(CStifItemParser& aItem);
+
+    TInt CreateBuffer(CStifItemParser& aItem);
+    TInt CreateEffect(CStifItemParser& aItem);
+    TInt CreateSource(CStifItemParser& aItem);
+    TInt CreateSink(CStifItemParser& aItem);
+    TInt DeleteSource(CStifItemParser& aItem);
+    TInt DeleteSink(CStifItemParser& aItem);
+    TInt GetSourceType(CStifItemParser& aItem);
+    TInt GetSinkType(CStifItemParser& aItem);
+    TInt GetEffectType(CStifItemParser& aItem);
+    TInt CreateDownlinkStream(CStifItemParser& aItem);
+    TInt GetDownlinkVersion(CStifItemParser& aItem);
+    TInt CreateUplinkStream(CStifItemParser& aItem);
+    TInt GetUplinkVersion(CStifItemParser& aItem);
+    TInt GetSupportedFormats(CStifItemParser& aItem);
+    TInt IsCallTypeSupported(CStifItemParser& aItem);
+    //  TInt GetSupportedUplinkFormats( CStifItemParser& aItem );
+    TInt SetDownlinkFormat(CStifItemParser& aItem);
+    TInt SetUplinkFormat(CStifItemParser& aItem);
+    TInt ReSetDownlinkFormat(CStifItemParser& aItem);
+    TInt ReSetUplinkFormat(CStifItemParser& aItem);
+    TInt OpenDownlink(CStifItemParser& aItem);
+    TInt OpenUplink(CStifItemParser& aItem);
+
+    TInt Start(CStifItemParser& aItem);
+    TInt Pause(CStifItemParser& aItem);
+    TInt Stop(CStifItemParser& aItem);
+    TInt Close(CStifItemParser& aItem);
+    TInt Gain(CStifItemParser& aItem);
+    TInt Volume(CStifItemParser& aItem);
+
+    TInt GetBufferType(CStifItemParser& aItem);
+
+    //  TInt GetSupportedBitrates( CStifItemParser& aItem );
+
+    TInt GetBitRateList(CStifItemParser& aItem);
+    TInt SetBitrates(CStifItemParser& aItem);
+    TInt GetBitrates(CStifItemParser& aItem);
+    TInt GetType(CStifItemParser& aItem);
+    TInt GetVAD(CStifItemParser& aItem);
+    TInt ToggleVAD(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);
+
+    void DoLoopback();
+    void DisplayFormat(TMSFormatType aFormat);
+    void GetSupportedBitrates(RArray<TUint>& aBrArr);
+    void DisplayDevice(TMSAudioOutput device);
+
+    TInt ConfigEncAudDevice(CStifItemParser& aItem);
+
+    TInt AddClientSrcToDnlStream(CStifItemParser& aItem);
+    TInt AddMicSrcToUplStream(CStifItemParser& aItem);
+    TInt AddModemSrcToDnlStream(CStifItemParser& aItem);
+    TInt RemoveClientSrcFromDnlStream(CStifItemParser& aItem);
+    TInt RemoveMicSrcFromUplStream(CStifItemParser& aItem);
+    TInt RemoveModemSrcFromDnlStream(CStifItemParser& aItem);
+    TInt AddSourceObserver(CStifItemParser& aItem);
+    TInt RemoveSourceObserver(CStifItemParser& aItem);
+
+    TInt AddClientSinkToUplStream(CStifItemParser& aItem);
+    TInt AddModemSinkToUplStream(CStifItemParser& aItem);
+    TInt AddSpkrSinkToDnlStream(CStifItemParser& aItem);
+    TInt RemoveClientSinkFromUplStream(CStifItemParser& aItem);
+    TInt RemoveModemSinkFromUplStream(CStifItemParser& aItem);
+    TInt RemoveSpkrSinkFromDnlStream(CStifItemParser& aItem);
+    TInt AddSinkObserver(CStifItemParser& aItem);
+    TInt RemoveSinkObserver(CStifItemParser& aItem);
+
+    gint CreateVolumeEffect();
+    gint CreateVolumeGlobleEffect();
+    TInt AddVolumeEffectToStream(CStifItemParser& aItem);
+    TInt AddGlobleVolumeEffectToStream(CStifItemParser& aItem);
+    TInt RemoveGlobleVolumeEffectToStream(CStifItemParser& aItem);
+    gint CreateGainEffect();
+    gint CreateGlobleGainEffect();
+    TInt AddGainEffectToStream(CStifItemParser& aItem);
+    TInt AddGlobleGainEffectToStream(CStifItemParser& aItem);
+    TInt RemoveGlobleGainEffectToStream(CStifItemParser& aItem);
+    TInt GetStreamType(CStifItemParser& aItem);
+    TInt GetStreamState(CStifItemParser& aItem);
+
+    TInt SetOutput(CStifItemParser& aItem);
+    TInt GetOutput(CStifItemParser& aItem);
+    TInt GetPreviousOutput(CStifItemParser& aItem);
+    TInt GetAvailableOutputs(CStifItemParser& aItem);
+    TInt AddGlobalRoutingObserver(CStifItemParser& aItem);
+    TInt DeleteGlobalRoutingObserver(CStifItemParser& aItem);
+
+private:
+    // Data
+
+    // reference to TestModuleIf
+    CTestModuleIf& iTestModuleIf;
+
+    // Dn/Uplink
+    TMSFactory* iFactory;
+    TMSStream* iTmsDnlink;
+    TMSCall* iTmsCall;
+    TMSStream* iTmsUplink;
+    TMSAudioOutput device;
+
+    // Codec format APIs
+    TMSBuffer* iTmsBuffer;
+    TMSFormat* iTmsFormat;
+    TMSFormat* iTmsFormatUp;
+    TMSFormat* iTmsFormatDn;
+    TMSEffect* iTmsEffect;
+    TMSSource *iTmsClientSource;
+    TMSSource *iTmsModemSource;
+    TMSSource *iTmsMicSource;
+    TMSSink *iTmsClientSink;
+    TMSSink *iTmsModemSink;
+    TMSSink *iTmsSpkrSink;
+    TMSEffect* iTmsUplinkEffect;
+    TMSEffect* iTmsDnlinkEffect;
+    TMSEffect* iGlobalVol;
+    TMSEffect* iGlobalGain;
+    TMSGlobalRouting* iTmsGlobalRouting;
+
+    // For internal app state control
+    StreamState iDnLinkStatus;
+    StreamState iUpLinkStatus;
+    TMSFormatType iDnLinkCodec;
+    TMSFormatType iUpLinkCodec;
+
+    FormatVector iCodec;
+    BitRateVector iBitratesVector;
+    OutputVector iAvailableoutputs;
+
+    // For storing codec configuration locally
+    TBool iPlc;
+    TBool iCng;
+    TBool iVad;
+    //  TBool iFrameMode;
+    //  TBool iFrameModeReqEC;
+    //  TBool iSpkr;
+    guint iMaxGain;
+    guint iGain;
+    guint iMaxVolume;
+    guint iVolume;
+    TUint currentBitrate;
+    //  RArray<TUint> iBitratesArray;
+
+    // For streaming buffer control
+    TMSBuffer* iPlayBuf;
+    TMSBuffer* iRecBuf;
+    // TPtr8               iPlayBufPtr;
+    // TPtr8               iRecBufPtr;
+
+    TBool iPlayBufReady;
+    TBool iRecBufReady;
+
+    // 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<TTmsExpectedEvent> iExpectedEvents;
+
+    // List of notification event (by the callback)
+    RArray<TTmsExpectedEvent> iOcurredEvents;
+
+    CActiveSchedulerWait* iActive;
+
+    };
+
+#endif //__TMSAUDIOSERVICESTESTCLASS_H
+
+// End of File