sl@0: // Copyright (c) 2004-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: #include "CapTestStep.h" sl@0: sl@0: CDevSoundTestStepBase* CDevSoundTestStepBase::NewL() sl@0: { sl@0: CDevSoundTestStepBase* self = new (ELeave) CDevSoundTestStepBase; sl@0: CleanupStack::PushL(self); sl@0: sl@0: self->ConstructL(); sl@0: sl@0: CleanupStack::Pop(); sl@0: return self; sl@0: } sl@0: sl@0: void CDevSoundTestStepBase::ConstructL() sl@0: { sl@0: } sl@0: sl@0: CDevSoundTestStepBase::CDevSoundTestStepBase() sl@0: { sl@0: ResetCallbacks(); sl@0: } sl@0: sl@0: CDevSoundTestStepBase::~CDevSoundTestStepBase() sl@0: { sl@0: delete iMMFDevSound; sl@0: } sl@0: sl@0: void CDevSoundTestStepBase::StartProcessing(TRequestStatus& /*aStatus*/) sl@0: { sl@0: } sl@0: sl@0: TVerdict CDevSoundTestStepBase::EndProcessingAndReturnResult(TDes8& aMessage) sl@0: { sl@0: aMessage.Copy(_L("Done")); sl@0: sl@0: return iVerdict; sl@0: } sl@0: sl@0: /****************************************************************************** sl@0: * sl@0: * DevSound methods sl@0: * sl@0: *****************************************************************************/ sl@0: sl@0: TVerdict CDevSoundTestStepBase::ConstructDevSound() sl@0: { sl@0: TRAPD(err, iMMFDevSound = CMMFDevSound::NewL()); sl@0: if (err) sl@0: { sl@0: return EInconclusive; sl@0: } sl@0: else sl@0: { sl@0: return EPass; sl@0: } sl@0: } sl@0: sl@0: TVerdict CDevSoundTestStepBase::DoTestStepPreambleL() sl@0: { sl@0: return( ConstructDevSound() ); sl@0: } sl@0: sl@0: /** sl@0: * sl@0: * T`estInitialize sl@0: * @param aMode sl@0: * @result TVerdict sl@0: * sl@0: */ sl@0: sl@0: TVerdict CDevSoundTestStepBase::TestInitialize(TMMFState aMode) sl@0: { sl@0: iCallbackError = KErrNone; sl@0: iExpectedValue = KErrNone; sl@0: sl@0: ResetCallbacks(); sl@0: sl@0: // Initialize sl@0: TRAPD(err, iMMFDevSound->InitializeL(*this, aMode)); sl@0: sl@0: if (err) sl@0: { sl@0: return EInconclusive; sl@0: } sl@0: else sl@0: { sl@0: CActiveScheduler::Start(); sl@0: if (iCallbackError != iExpectedValue) sl@0: { sl@0: return EFail; sl@0: } sl@0: if (iCallbackArray[EInitComplete] != 1) sl@0: { sl@0: return EFail; sl@0: } sl@0: } sl@0: return EPass; sl@0: } sl@0: sl@0: /** sl@0: * sl@0: * TestSetVolume sl@0: * @param aVol sl@0: * sl@0: */ sl@0: void CDevSoundTestStepBase::TestSetVolume(TInt aVol) sl@0: { sl@0: iMMFDevSound->SetVolume(aVol); sl@0: } sl@0: sl@0: /** sl@0: * sl@0: * TestSetPriority sl@0: * @param aPriority sl@0: * sl@0: */ sl@0: void CDevSoundTestStepBase::TestSetPriority(TInt aPriority) sl@0: { sl@0: TMMFPrioritySettings prioritySettings; sl@0: sl@0: prioritySettings.iPref = EMdaPriorityPreferenceNone; sl@0: prioritySettings.iPriority = aPriority; sl@0: sl@0: iMMFDevSound->SetPrioritySettings( prioritySettings ); sl@0: } sl@0: sl@0: /** sl@0: * sl@0: * TestSetGain sl@0: * @param aGain sl@0: * sl@0: */ sl@0: void CDevSoundTestStepBase::TestSetGain(TInt aGain) sl@0: { sl@0: iMMFDevSound->SetGain(aGain); sl@0: } sl@0: sl@0: /** sl@0: * sl@0: * TestPlayTone sl@0: * @param aFreq sl@0: * @param aDur sl@0: * @result TVerdict sl@0: * sl@0: */ sl@0: TVerdict CDevSoundTestStepBase::TestPlayTone(TInt aFreq, TTimeIntervalMicroSeconds aDur) sl@0: { sl@0: iCallbackError = KErrNone; sl@0: sl@0: ResetCallbacks(); sl@0: sl@0: TRAPD(err, iMMFDevSound->PlayToneL(aFreq, aDur)); sl@0: if (err) sl@0: { sl@0: iCallbackError = err; sl@0: return EFail; sl@0: } sl@0: else sl@0: { sl@0: // Start the active scheduler and catch the callback sl@0: CActiveScheduler::Start(); sl@0: if (iCallbackError != iExpectedValue) sl@0: { sl@0: return EFail; sl@0: } sl@0: if (iCallbackArray[EToneFinished] != 1) sl@0: { sl@0: return EFail; sl@0: } sl@0: TInt tot = GetCallbackTotal(); sl@0: if (tot > 1) sl@0: { sl@0: return EFail; sl@0: } sl@0: } sl@0: return EPass; sl@0: } sl@0: sl@0: /** sl@0: * sl@0: * ResetCallbacks sl@0: * sl@0: */ sl@0: void CDevSoundTestStepBase::ResetCallbacks() sl@0: { sl@0: //Initialize callback array sl@0: iCallbackArray.Reset(); sl@0: } sl@0: sl@0: /** sl@0: * sl@0: * GetCallbackTotal sl@0: * @result TInt sl@0: * sl@0: */ sl@0: TInt CDevSoundTestStepBase::GetCallbackTotal() sl@0: { sl@0: TInt total = 0; sl@0: for (TInt i = EInitComplete; i < EDeviceMsg; i++) sl@0: { sl@0: total += iCallbackArray[i]; sl@0: } sl@0: return total; sl@0: } sl@0: sl@0: /****************************************************************************** sl@0: * sl@0: * DevSound mixin methods sl@0: * sl@0: *****************************************************************************/ sl@0: sl@0: /** sl@0: * sl@0: * InitializeComplete sl@0: * @param aError sl@0: * sl@0: */ sl@0: void CDevSoundTestStepBase::InitializeComplete (TInt aError) sl@0: { sl@0: iCallbackArray[EInitComplete] ++; sl@0: iCallbackError = aError; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: sl@0: /** sl@0: * sl@0: * ToneFinished sl@0: * @param aError sl@0: * sl@0: */ sl@0: void CDevSoundTestStepBase::ToneFinished (TInt aError) sl@0: { sl@0: iCallbackArray[EToneFinished] ++; sl@0: iCallbackError = aError; sl@0: } sl@0: sl@0: /** sl@0: * sl@0: * BufferToBeFilled sl@0: * @param aBuffer sl@0: * sl@0: */ sl@0: void CDevSoundTestStepBase::BufferToBeFilled (CMMFBuffer* aBuffer) sl@0: { sl@0: iBuffer = aBuffer; sl@0: if (aBuffer != NULL) sl@0: { sl@0: iCallbackError = KErrNone; sl@0: } sl@0: else sl@0: { sl@0: iCallbackError = KErrNotFound; sl@0: } sl@0: iCallbackArray[EBuffToFill] ++; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: sl@0: /** sl@0: * sl@0: * PlayError sl@0: * @param aError sl@0: * sl@0: */ sl@0: void CDevSoundTestStepBase::PlayError (TInt aError) sl@0: { sl@0: iCallbackError = aError; sl@0: iCallbackArray[EPlayError] ++; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: sl@0: /** sl@0: * sl@0: * BufferToBeEmptied sl@0: * @param aBuffer sl@0: * sl@0: */ sl@0: void CDevSoundTestStepBase::BufferToBeEmptied (CMMFBuffer* /*aBuffer*/) sl@0: { sl@0: iCallbackArray[EBuffToEmpty] ++; sl@0: } sl@0: sl@0: /** sl@0: * sl@0: * RecordError sl@0: * @param aError sl@0: * sl@0: */ sl@0: void CDevSoundTestStepBase::RecordError (TInt aError) sl@0: { sl@0: iCallbackError = aError; sl@0: iCallbackArray[ERecError] ++; sl@0: } sl@0: sl@0: /** sl@0: * sl@0: * ConvertError sl@0: * sl@0: */ sl@0: void CDevSoundTestStepBase::ConvertError (TInt /*aError*/) sl@0: {} sl@0: sl@0: /** sl@0: * sl@0: * DeviceMessage sl@0: * sl@0: */ sl@0: void CDevSoundTestStepBase::DeviceMessage (TUid, const TDesC8& /*aMsg*/) sl@0: {}