sl@0: // Copyright (c) 2002-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: // This program is designed the test of the MMF_ACLNT. sl@0: // sl@0: // sl@0: sl@0: /** sl@0: @file OpenFileByHandle_PlayTone.cpp sl@0: */ sl@0: sl@0: #include "OpenFileByHandle_PlayTone.h" sl@0: sl@0: //const TInt KHeapSizeToneTestEKA2 = 128000; // Heapsize for tone tests on EKA2 sl@0: sl@0: //------------------------------------------------------------------ sl@0: sl@0: /** sl@0: * Constructor sl@0: */ sl@0: CTestMmfAclntOpenToneFile::CTestMmfAclntOpenToneFile(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName) sl@0: : CTestMmfAclntTone(aTestName) sl@0: { sl@0: // store the name of this test case sl@0: // this is the name that is used by the script file sl@0: // Each test step initialises it's own name sl@0: iSectName = aSectName; sl@0: iKeyName= aKeyName; sl@0: } sl@0: sl@0: CTestMmfAclntOpenToneFile* CTestMmfAclntOpenToneFile::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName) sl@0: { sl@0: CTestMmfAclntOpenToneFile* self = new (ELeave) CTestMmfAclntOpenToneFile(aTestName,aSectName,aKeyName); sl@0: return self; sl@0: } sl@0: sl@0: TVerdict CTestMmfAclntOpenToneFile::DoTestStepPreambleL() sl@0: { sl@0: TPtrC filename; sl@0: if(!GetStringFromConfig(iSectName, iKeyName, filename)) sl@0: { sl@0: return EInconclusive; sl@0: } sl@0: sl@0: // Create a sequence file sl@0: TInt length; sl@0: RFs fs; sl@0: sl@0: fs.Connect(); sl@0: CleanupClosePushL(fs); sl@0: #ifdef __IPC_V2_PRESENT__ sl@0: User::LeaveIfError(fs.ShareAuto()); sl@0: #else sl@0: User::LeaveIfError(fs.Share(RSessionBase::EExplicitAttach)); sl@0: #endif sl@0: RFile file; sl@0: User::LeaveIfError(file.Replace(fs,filename,EFileWrite)); sl@0: CleanupClosePushL(file); sl@0: User::LeaveIfError(file.Write(KFixedSequenceData())); sl@0: User::LeaveIfError(file.Size(length)); sl@0: CleanupStack::PopAndDestroy(2, &fs); sl@0: sl@0: return CTestMmfAclntStep::DoTestStepPreambleL(); sl@0: } sl@0: sl@0: /** sl@0: * Play a tone file sl@0: */ sl@0: TVerdict CTestMmfAclntOpenToneFile::DoTestStepL( void ) sl@0: { sl@0: INFO_PRINTF1( _L("TestTone : Play File")); sl@0: sl@0: TVerdict ret = EFail; sl@0: sl@0: RFs fs; sl@0: sl@0: User::LeaveIfError(fs.Connect()); sl@0: CleanupClosePushL(fs); sl@0: User::LeaveIfError(fs.ShareProtected()); sl@0: sl@0: TPtrC filename; sl@0: if(!GetStringFromConfig(iSectName, iKeyName, filename)) sl@0: { sl@0: return EInconclusive; sl@0: } sl@0: sl@0: iError = KErrTimedOut; sl@0: // perform test using this file sl@0: CMdaAudioToneUtility* toneUtil = CMdaAudioToneUtility::NewL(*this); sl@0: CleanupStack::PushL(toneUtil); sl@0: sl@0: RFile file; sl@0: User::LeaveIfError( file.Open( fs, filename, EFileRead | EFileShareAny ) ); sl@0: CleanupClosePushL(file); sl@0: sl@0: toneUtil->PrepareToPlayFileSequence(file); sl@0: CleanupStack::PopAndDestroy(&file); sl@0: sl@0: // Wait for prepare sl@0: INFO_PRINTF1( _L("Initialise CMdaAudioToneUtility")); sl@0: CActiveScheduler::Start(); sl@0: sl@0: User::LeaveIfError( file.Open( fs, filename, EFileRead | EFileShareAny ) ); sl@0: CleanupClosePushL(file); sl@0: sl@0: toneUtil->PrepareToPlayFileSequence(file); sl@0: // Wait for prepare sl@0: INFO_PRINTF1( _L("re-initialise CMdaAudioToneUtility")); sl@0: CActiveScheduler::Start(); sl@0: sl@0: if(iError == KErrNone) sl@0: { sl@0: ret = DoTestL(toneUtil); sl@0: } sl@0: sl@0: if(ret == EFail) sl@0: { sl@0: ERR_PRINTF2( _L("CMdaAudioToneUtility failed with error %d"),iError ); sl@0: } sl@0: sl@0: CleanupStack::PopAndDestroy(3, &fs); sl@0: sl@0: return ret; sl@0: }