diff -r 000000000000 -r 71ca22bcf22a mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioRecorderTestModule/src/RecordSampleRate.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioRecorderTestModule/src/RecordSampleRate.cpp Tue Feb 02 01:08:46 2010 +0200 @@ -0,0 +1,142 @@ +/* +* Copyright (c) 2007 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: AudioRecorder Test +* +*/ + +#include "RecordSampleRate.h" + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + + +CRecordSampleRate::CRecordSampleRate(CTestModuleIf *aConsole, CStifLogger *aLogger):CRecordingBase(aConsole,aLogger) +{ +// iFirstTime = true; + iCurrSampleRate = 0; +} + +CRecordSampleRate::~CRecordSampleRate() +{ + +} + +CRecordingBase* CRecordSampleRate::CreateObjectL(CTestModuleIf *aConsole, CStifLogger *aLogger) +{ + //aLogger->Log(_L("CRecordClip::CreateObjectL")); + return (new (ELeave) CRecordSampleRate(aConsole, aLogger)); +} + +TInt CRecordSampleRate::RunTestL(CTestModuleIf *aConsole, + CStifLogger *aLogger, + CStifSectionParser *aParser, + TInt* clipCounter) +{ + TInt error = KErrNone; + + //Create scheduler + aLogger->Log(_L("Creating scheduler")); + CActiveScheduler* scheduler = new (ELeave) CActiveScheduler; + CleanupStack::PushL(scheduler); // push to clean-up stack + CActiveScheduler::Install(scheduler); // install as active scheduler + + //Create recorder + CRecordingBase* recorderObj; + if ((error = CRecordingBase::CreateRecorderL(aConsole, aLogger, aParser, + clipCounter, CRecordSampleRate::CreateObjectL, + recorderObj)) != KErrNone) + { + CleanupStack::PopAndDestroy(); //scheduler + return error; + } + CleanupStack::PushL(recorderObj); + + error = CRecordingBase::SimpleRecordL(aConsole, aLogger, recorderObj, true, aParser); + + CleanupStack::PopAndDestroy(2); // recorder, scheduler + return error; +} + +TInt CRecordSampleRate::PreProcess(CStifSectionParser* /*aParser*/) +{ + return KErrNone; +} + +TInt CRecordSampleRate::PostProcess(CStifSectionParser* /*aParser*/) +{ + TInt error = KErrNone; + + if ( iCurrSampleRate != expectedSampleRate) + { + logger->Log(_L("SampleRate differs after recording curr:%d exp:%d"), iCurrSampleRate, expectedSampleRate); + error = KErrOutOfRange; + } + + return error; +} + + +void CRecordSampleRate::MoscoStateChangeEvent(CBase* aObject, + TInt aPreviousState, + TInt aCurrentState, + TInt aErrorCode) +{ +#ifdef _DEBUG + RDebug::Print (_L ("CRecordSampleRate::MoscoStateChangeEvent")); +#endif + logger->Log(_L("CRecordSampleRate::MoscoStateChangeEvent called, error: %d prev: %d curr : %d"), + aErrorCode,aPreviousState,aCurrentState); + + TInt err = KErrNone; + RArray supportedSampleRates; + + if(recorder && aErrorCode == KErrNone && aCurrentState == CMdaAudioClipUtility::EOpen) + { + TRAP(err, recorder->GetSupportedSampleRatesL(supportedSampleRates) ); + if (err != KErrNone) + { + logger->Log(_L("Error %d for GetSupportedSampleRateL"),err ); + return; + } + + TInt j; + for (j=0; jSetDestinationSampleRateL(supportedSR) ); + if (err) + { + logger->Log(_L("Error %d for SetDestinationSampleRateL %d"),err, supportedSR ); + return; + } + break; + } + } + + if (j>= supportedSampleRates.Count()) + { + logger->Log(_L("expectedSampleRate %d is not supported by system, invalid test case."), expectedSampleRate ); + callbackErr = KErrInvalidId; + return; + } + + iCurrSampleRate = recorder->DestinationSampleRateL(); + logger->Log(_L("Get CurrSampleRate after set SampleRate: %d"),iCurrSampleRate); + } + + CRecordingBase::MoscoStateChangeEvent(aObject, aPreviousState, aCurrentState, err); +}