First public contribution.
1 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // CPP file: Audio Resource Notification tests for Audio Output Stream.
19 @file TestOutputStreamARN.cpp
22 #include "TestAudioClientUtilitiesARN.h"
24 const TInt KSampleRate = 8000;
25 const TInt KBytesPerSample = 2;
26 //------------------------------------------------------------------------------
27 //********************PREQ 797 - Audio Resource Notification********************
28 //------------------------------------------------------------------------------
31 //CTestMdaAudioOutputStreamCallbackSupport
37 CTestMdaAudioOutputStreamCallbackSupport* CTestMdaAudioOutputStreamCallbackSupport::NewL(MTestAudioOutputStreamCallback& aCallback)
39 return new(ELeave) CTestMdaAudioOutputStreamCallbackSupport(aCallback);
45 void CTestMdaAudioOutputStreamCallbackSupport::MaoscOpenComplete(TInt aError)
47 iCallback.MaoscOpenCompleteTest(aError, *this);
53 void CTestMdaAudioOutputStreamCallbackSupport::MaoscBufferCopied(TInt aError, const TDesC8& aBuffer)
55 iCallback.MaoscBufferCopiedTest(aError, aBuffer, *this);
61 void CTestMdaAudioOutputStreamCallbackSupport::MaoscPlayComplete(TInt aError)
63 iCallback.MaoscPlayCompleteTest(aError, *this);
67 * MarncResourceAvailable
69 void CTestMdaAudioOutputStreamCallbackSupport::MarncResourceAvailable(TUid aNotificationEventId, const TDesC8& aNotificationData)
71 iCallback.MarncResourceAvailableTest(aNotificationEventId, aNotificationData, *this);
77 CTestMdaAudioOutputStreamCallbackSupport::CTestMdaAudioOutputStreamCallbackSupport(MTestAudioOutputStreamCallback& aCallback):iCallback(aCallback)
83 //CTestStepAudioOutputStreamARN
89 CTestStepAudioOutputStreamARN::CTestStepAudioOutputStreamARN(const TDesC& aTestName)
91 iTestStepName = aTestName;
98 * MMdaAudioOutputStreamCallback->MaoscOpenComplete
100 void CTestStepAudioOutputStreamARN::MaoscOpenCompleteTest(TInt aError, CTestMdaAudioOutputStreamCallbackSupport& aMdaAudioOutputStreamCallbackSupport)
102 if (&aMdaAudioOutputStreamCallbackSupport == iMdaAudioOutputStreamCallbackSupport1)
104 INFO_PRINTF2(_L("iTestAudioOutputStream1::MMdaAudioOutputStreamCallback->MaoscOpenComplete (%d)"),aError);
105 TRAP(iError, FsmL(EMaoscOpenComplete1, aError));
107 else if (&aMdaAudioOutputStreamCallbackSupport == iMdaAudioOutputStreamCallbackSupport2)
109 INFO_PRINTF2(_L("iTestAudioOutputStream2::MMdaAudioOutputStreamCallback->MaoscOpenComplete (%d)"),aError);
110 TRAP(iError, FsmL(EMaoscOpenComplete2, aError));
112 else if (&aMdaAudioOutputStreamCallbackSupport == iMdaAudioOutputStreamCallbackSupport3)
114 INFO_PRINTF2(_L("iTestAudioOutputStream3::MMdaAudioOutputStreamCallback->MaoscOpenComplete (%d)"),aError);
115 TRAP(iError, FsmL(EMaoscOpenComplete3, aError));
120 * MMdaAudioOutputStreamCallback->MaoscBufferCopied
122 void CTestStepAudioOutputStreamARN::MaoscBufferCopiedTest(TInt aError, const TDesC8& /*aBuffer*/, CTestMdaAudioOutputStreamCallbackSupport& aMdaAudioOutputStreamCallbackSupport)
124 if (&aMdaAudioOutputStreamCallbackSupport == iMdaAudioOutputStreamCallbackSupport1)
126 INFO_PRINTF2(_L("iTestAudioOutputStream1::MMdaAudioOutputStreamCallback->MaoscBufferCopied (%d)"),aError);
127 TRAP(iError, FsmL(EMaoscBufferCopied1, aError));
129 else if (&aMdaAudioOutputStreamCallbackSupport == iMdaAudioOutputStreamCallbackSupport2)
131 INFO_PRINTF2(_L("iTestAudioOutputStream2::MMdaAudioOutputStreamCallback->MaoscBufferCopied (%d)"),aError);
132 TRAP(iError, FsmL(EMaoscBufferCopied2, aError));
134 else if (&aMdaAudioOutputStreamCallbackSupport == iMdaAudioOutputStreamCallbackSupport3)
136 INFO_PRINTF2(_L("iTestAudioOutputStream3::MMdaAudioOutputStreamCallback->MaoscBufferCopied (%d)"),aError);
137 TRAP(iError, FsmL(EMaoscBufferCopied3, aError));
142 * MMdaAudioOutputStreamCallback->MaoscPlayComplete
144 void CTestStepAudioOutputStreamARN::MaoscPlayCompleteTest(TInt aError, CTestMdaAudioOutputStreamCallbackSupport& aMdaAudioOutputStreamCallbackSupport)
146 if (&aMdaAudioOutputStreamCallbackSupport == iMdaAudioOutputStreamCallbackSupport1)
148 INFO_PRINTF2(_L("iTestAudioOutputStream1::MMdaAudioOutputStreamCallback->MaoscPlayComplete (%d)"),aError);
149 TRAP(iError, FsmL(EMaoscPlayComplete1, aError));
151 else if (&aMdaAudioOutputStreamCallbackSupport == iMdaAudioOutputStreamCallbackSupport2)
153 INFO_PRINTF2(_L("iTestAudioOutputStream2::MMdaAudioOutputStreamCallback->MaoscPlayComplete (%d)"),aError);
154 TRAP(iError, FsmL(EMaoscPlayComplete2, aError));
156 else if (&aMdaAudioOutputStreamCallbackSupport == iMdaAudioOutputStreamCallbackSupport3)
158 INFO_PRINTF2(_L("iTestAudioOutputStream3::MMdaAudioOutputStreamCallback->MaoscPlayComplete (%d)"),aError);
159 TRAP(iError, FsmL(EMaoscPlayComplete3, aError));
164 * MMMFAudioResourceNotificationCallback->MarncResourceAvailable
166 void CTestStepAudioOutputStreamARN::MarncResourceAvailableTest(TUid aNotificationEventId, const TDesC8& aNotificationData, CTestMdaAudioOutputStreamCallbackSupport& aMdaAudioOutputStreamCallbackSupport)
168 if (aNotificationEventId == KMMFEventCategoryAudioResourceAvailable)
170 INFO_PRINTF1(_L("iAudioOutputStream::MMMFAudioResourceNotificationCallback -> KMMFEventCategoryAudioResourceAvailable"));
172 //Convert TDesc8 to TInt64
173 TMMFTimeIntervalMicroSecondsPckg timeIntvbuf;
174 timeIntvbuf.Copy(aNotificationData);
175 TTimeIntervalMicroSeconds intPos = timeIntvbuf();
178 if (&aMdaAudioOutputStreamCallbackSupport == iMdaAudioOutputStreamCallbackSupport1)
180 INFO_PRINTF1(_L("iTestAudioOutputStream1 -> MMMFAudioResourceNotificationCallback NotificationReceived"));
181 TRAP(iError, FsmL(EMarncResourceAvailableOS1, KErrNone));
183 else if (&aMdaAudioOutputStreamCallbackSupport == iMdaAudioOutputStreamCallbackSupport2)
185 INFO_PRINTF1(_L("iTestAudioOutputStream2 -> MMMFAudioResourceNotificationCallback NotificationReceived"));
186 TRAP(iError, FsmL(EMarncResourceAvailableOS2, KErrNone));
188 else if (&aMdaAudioOutputStreamCallbackSupport == iMdaAudioOutputStreamCallbackSupport3)
190 INFO_PRINTF1(_L("iTestAudioOutputStream3 -> MMMFAudioResourceNotificationCallback NotificationReceived"));
191 TRAP(iError, FsmL(EMarncResourceAvailableOS3, KErrNone));
196 INFO_PRINTF1(_L("MMMFAudioResourceNotificationCallback, but NOT KMMFEventCategoryAudioResourceAvailable"));
201 * DoTestStepPreambleL
203 TVerdict CTestStepAudioOutputStreamARN::DoTestStepPreambleL()
205 // Local Variable to hold verdict
208 // Install the scheduler
209 verdict = CTestMmfAclntStep::DoTestStepPreambleL();
211 if (verdict == EFail)
216 // Connect RFs session
217 TInt err = iFs.Connect();
220 INFO_PRINTF2(_L("Error connecting to File session (RFs) = %d"), err);
224 // Initialise iTestAudioOutputStream1
225 INFO_PRINTF1(_L("Initialise CMdaAudioOutputStream1 : EMdaPriorityNormal"));
226 iMdaAudioOutputStreamCallbackSupport1 = CTestMdaAudioOutputStreamCallbackSupport::NewL(*this);
227 TRAP(err, iTestAudioOutputStream1 = CMdaAudioOutputStream::NewL(*iMdaAudioOutputStreamCallbackSupport1, EMdaPriorityNormal, EMdaPriorityPreferenceTimeAndQuality));
228 if (err != KErrNone || iTestAudioOutputStream1 == NULL )
230 INFO_PRINTF2(_L("Error Creating iTestAudioOutputStream1 = %d"), err);
231 return EInconclusive;
235 err = iFile1.Open(iFs, KStreamRawFile1, EFileRead);
238 INFO_PRINTF2(_L("Error opening iFile1 = %d"), err);
242 // Get size of iFile1
243 err = iFile1.Size(iFileSize1);
246 INFO_PRINTF2(_L("Error getting size of iFile1 = %d"), err);
251 iBuf1.CreateMaxL(iFileSize1);
253 // Initialise iTestAudioOutputStream2
254 INFO_PRINTF1(_L("Initialise CMdaAudioOutputStream2 : EMdaPriorityMax"));
255 iMdaAudioOutputStreamCallbackSupport2 = CTestMdaAudioOutputStreamCallbackSupport::NewL(*this);
256 TRAP(err, iTestAudioOutputStream2 = CMdaAudioOutputStream::NewL(*iMdaAudioOutputStreamCallbackSupport2, EMdaPriorityMax, EMdaPriorityPreferenceTimeAndQuality));
257 if (err != KErrNone || iTestAudioOutputStream2 == NULL )
259 INFO_PRINTF2(_L("Error Creating iTestAudioOutputStream2 = %d"), err);
260 return EInconclusive;
264 err = iFile2.Open(iFs, KStreamRawFile2, EFileRead);
267 INFO_PRINTF2(_L("Error opening iFile2 = %d"), err);
271 // Get size of iFile2
272 err = iFile2.Size(iFileSize2);
275 INFO_PRINTF2(_L("Error getting size of iFile2 = %d"), err);
280 iBuf2.CreateMaxL(iFileSize2);
282 // Initialise iTestAudioOutputStream3
283 INFO_PRINTF1(_L("Initialise CMdaAudioOutputStream3 : EMdaPriorityMin"));
284 iMdaAudioOutputStreamCallbackSupport3 = CTestMdaAudioOutputStreamCallbackSupport::NewL(*this);
285 TRAP(err, iTestAudioOutputStream3 = CMdaAudioOutputStream::NewL(*iMdaAudioOutputStreamCallbackSupport3, EMdaPriorityMin, EMdaPriorityPreferenceTimeAndQuality));
286 if (err != KErrNone || iTestAudioOutputStream3 == NULL )
288 INFO_PRINTF2(_L("Error Creating iTestAudioOutputStream3 = %d"), err);
289 return EInconclusive;
293 err = iFile3.Open(iFs, KStreamRawFile3, EFileRead);
296 INFO_PRINTF2(_L("Error opening iFile3 = %d"), err);
300 // Get size of iFile3
301 err = iFile3.Size(iFileSize3);
304 INFO_PRINTF2(_L("Error getting size of iFile3 = %d"), err);
309 iBuf3.CreateMaxL(iFileSize3);
311 // Initialise the CCallBackTimer.
312 iCallBackTimer = CCallBackTimer::NewL(TCallBack(stopActiveScheduler));
318 * DoTestStepPostambleL
320 TVerdict CTestStepAudioOutputStreamARN::DoTestStepPostambleL()
322 // Delete all the iTestAudioOutputStream utilities.
323 delete iTestAudioOutputStream1;
324 iTestAudioOutputStream1=NULL;
325 delete iTestAudioOutputStream2;
326 iTestAudioOutputStream2=NULL;
327 delete iTestAudioOutputStream3;
328 iTestAudioOutputStream3=NULL;
329 // Destroy File Handles
338 // Delete CTestMdaAudioOutputStreamCallbackSupport
339 delete iMdaAudioOutputStreamCallbackSupport1;
340 delete iMdaAudioOutputStreamCallbackSupport2;
341 delete iMdaAudioOutputStreamCallbackSupport3;
342 // Delete the CCallBackTimer.
343 delete iCallBackTimer;
345 // Destroy the scheduler
346 return CTestMmfAclntStep::DoTestStepPostambleL();
352 TVerdict CTestStepAudioOutputStreamARN::DoTestStepL()
360 void CTestStepAudioOutputStreamARN::StateInit()
362 iExpectedEvent=EIdleOutputStream;
363 iExpectedError=KErrNone;
370 void CTestStepAudioOutputStreamARN::StateChange(TMmfAudioOutputStreamEvents aExpectedEvent, TInt aExpectedError)
372 iExpectedEvent=aExpectedEvent;
373 iExpectedError=aExpectedError;
380 TBool CTestStepAudioOutputStreamARN::FsmCheck(TMmfAudioOutputStreamEvents aEventCode, TInt aError)
382 TBool retFsmCheck = EFalse;
383 if (iExpectedEvent != aEventCode)
385 ERR_PRINTF3(_L("ExpectedEvent : %d, ActualEvent : %d"), iExpectedEvent, aEventCode);
386 iTestStepResult = EFail;
387 CActiveScheduler::Stop();
389 else if (iExpectedError != aError)
391 ERR_PRINTF3(_L("ExpectedError : %d, ActualError : %d"), iExpectedError, aError);
392 iTestStepResult = EFail;
393 CActiveScheduler::Stop();
402 CTestStepAudioOutputStreamARN2::CTestStepAudioOutputStreamARN2(const TDesC& aTestName)
404 iTestStepName = aTestName;
409 * DoTestStepPreambleL
411 TVerdict CTestStepAudioOutputStreamARN2::DoTestStepPreambleL()
414 verdict = CTestMmfAclntStep::DoTestStepPreambleL();
415 if (verdict == EFail)
420 iClientList[1] = CFsmAudioOutputStreamClient::NewL(1, EMdaPriorityNormal, EMdaPriorityPreferenceTimeAndQuality, this);
421 iClientList[2] = CFsmAudioOutputStreamClient::NewL(2, EMdaPriorityMax, EMdaPriorityPreferenceTimeAndQuality, this);
422 iClientList[3] = CFsmAudioOutputStreamClient::NewL(3, EMdaPriorityMin, EMdaPriorityPreferenceTimeAndQuality, this);
424 // Connect RFs session
425 TInt err = iFs.Connect();
428 INFO_PRINTF2(_L("Error connecting to File session (RFs) = %d"), err);
432 err = iFileHandle[1].Open(iFs, KStreamRawFile1, EFileRead);
435 INFO_PRINTF2(_L("Error opening iFile1 = %d"), err);
439 err = iFileHandle[2].Open(iFs, KStreamRawFile2, EFileRead);
442 INFO_PRINTF2(_L("Error opening iFile2 = %d"), err);
446 err = iFileHandle[3].Open(iFs, KStreamRawFile3, EFileRead);
449 INFO_PRINTF2(_L("Error opening iFile2 = %d"), err);
453 for(TInt fileNumber=1; fileNumber<=3; fileNumber++)
455 err = iFileHandle[fileNumber].Size(iFileSize[fileNumber]);
458 INFO_PRINTF2(_L("Error getting size of iFile = %d"), err);
461 iBuf[fileNumber].CreateMaxL(iFileSize[fileNumber]);
464 // Initialise the CCallBackTimer.
465 iCallBackTimer = CCallBackTimer::NewL(TCallBack(stopActiveScheduler));
471 * DoTestStepPostambleL
473 TVerdict CTestStepAudioOutputStreamARN2::DoTestStepPostambleL()
475 iClientList.DeleteAll();
476 for(TInt fileNumber=1; fileNumber <=3; fileNumber++)
478 iFileHandle[fileNumber].Close();
481 for(TInt bufNumber=1 ; bufNumber <=3; bufNumber++)
483 iBuf[bufNumber].Close();
486 delete iCallBackTimer;
487 return CTestMmfAclntStep::DoTestStepPostambleL();
494 TVerdict CTestStepAudioOutputStreamARN2::DoTestStepL()
502 void CTestStepAudioOutputStreamARN2::StateChange(TFsmAosState aState)
507 void CTestStepAudioOutputStreamARN2::StopTest()
509 //We can add other cleanup things here
510 CActiveScheduler::Stop();
513 void CTestStepAudioOutputStreamARN2::SetExpectedEvent(TInt aClientNumber, TInt aExpectedEvent, TInt aExpectedError)
515 iClientEventsToMonitor[aClientNumber]= aExpectedEvent;
516 iClientError[aClientNumber] = aExpectedError;
522 TBool CTestStepAudioOutputStreamARN2::FsmCheck(TInt aClientNumber, TInt aEventCode, TInt aError)
524 TBool retFsmCheck = ETrue;
526 if (iState == EStateMonitoringEvents) /*special state to make decisions depending on clients events */
528 if(iClientEventsToMonitor[aClientNumber] == aEventCode && iClientError[aClientNumber] == aError )
530 StateChange(iFsmStateforClient[aClientNumber]);
534 retFsmCheck = EFalse;
539 //Client event has finished
540 iClientsRegistered--;
545 if(iClientEventsToMonitor[aClientNumber] != aEventCode)
547 ERR_PRINTF3(_L("ExpectedEvent : %d, ActualEvent : %d"), iExpectedEvent, aEventCode);
548 retFsmCheck = EFalse;
549 iTestStepResult = EFail;
551 else if(iClientError[aClientNumber] != aError)
553 ERR_PRINTF3(_L("ExpectedError : %d, ActualError : %d"), iExpectedError, aError);
554 retFsmCheck = EFalse;
555 iTestStepResult = EFail;
561 void CTestStepAudioOutputStreamARN2::RegisterClientEventToMonitor(TInt aClientNumber, TInt aEventCode, TInt aError, TFsmAosState aFsmState)
563 iClientsRegistered++;
564 iClientEventsToMonitor[aClientNumber] = aEventCode;
565 iClientError[aClientNumber] = aError;
566 iFsmStateforClient[aClientNumber] = aFsmState;
569 TBool CTestStepAudioOutputStreamARN2::IsMonitoringFinished()
571 if(iClientsRegistered == 0)
581 CFsmAudioOutputStreamClient::CFsmAudioOutputStreamClient(TInt aClientNumber, TInt aPriority, TMdaPriorityPreference aPref, CTestStepAudioOutputStreamARN2* aParent):iClientNumber(aClientNumber),iParent(aParent)
583 iPriority = aPriority;
590 * CFsmAudioOutputStreamClient*
593 CFsmAudioOutputStreamClient* CFsmAudioOutputStreamClient::NewL(TInt aClientNumber, TInt aPriority,TMdaPriorityPreference aPref, CTestStepAudioOutputStreamARN2* aParent)
595 CFsmAudioOutputStreamClient* s = new(ELeave) CFsmAudioOutputStreamClient(aClientNumber, aPriority, aPref, aParent);
596 CleanupStack::PushL(s);
608 void CFsmAudioOutputStreamClient::ConstructL()
610 iMmfAudioOutputStream = CMdaAudioOutputStream::NewL(*this, iPriority, iPref);
613 CFsmAudioOutputStreamClient::~CFsmAudioOutputStreamClient()
615 delete iMmfAudioOutputStream;
618 void CFsmAudioOutputStreamClient::MaoscOpenComplete(TInt aError)
620 iEvent = EAudioOuputStreamOpenComplete;
622 iParent->Fsm(iClientNumber, iEvent, iError);
625 void CFsmAudioOutputStreamClient::MaoscPlayComplete(TInt aError)
627 iEvent = EAudioOutputStreamPlayComplete;
629 iParent->Fsm(iClientNumber, iEvent, iError);
632 void CFsmAudioOutputStreamClient::MaoscBufferCopied(TInt aError, const TDesC8& /*aBuffer*/)
634 iEvent = EAudioOutputStreamBufferCopied;
636 iParent->Fsm(iClientNumber, iEvent, iError);
639 void CFsmAudioOutputStreamClient::MarncResourceAvailable(TUid aNotificationEventId, const TDesC8& aNotificationData)
641 if (aNotificationEventId == KMMFEventCategoryAudioResourceAvailable)
643 iEvent = EAudioOutputStreamResourceAvailable;
645 //Convert TDesc8 to TInt64
646 TMMFTimeIntervalMicroSecondsPckg timeIntvbuf;
647 timeIntvbuf.Copy(aNotificationData);
648 iResumedPosition = timeIntvbuf();
650 iParent->Fsm(iClientNumber, iEvent, iError);
654 void CFsmAudioOutputStreamClient::TestOpen()
656 iMmfAudioOutputStream->Open(NULL);
659 TInt CFsmAudioOutputStreamClient::TestRegisterAsClient()
661 return iMmfAudioOutputStream->RegisterAudioResourceNotification(*this, KMMFEventCategoryAudioResourceAvailable);
664 TInt CFsmAudioOutputStreamClient::TestWrite(const TDesC8 &aData)
666 TRAPD(err,iMmfAudioOutputStream->WriteL(aData));
670 const TTimeIntervalMicroSeconds& CFsmAudioOutputStreamClient::GetCurrentPosition()
672 return iMmfAudioOutputStream->Position();
675 TTimeIntervalMicroSeconds& CFsmAudioOutputStreamClient::GetResumedPosition()
677 return iResumedPosition;
680 TInt CFsmAudioOutputStreamClient::BytesPlayed()
682 return iMmfAudioOutputStream->GetBytes();
689 //CTestMmfAclntARN8021
695 CTestMmfAclntARN8021::CTestMmfAclntARN8021(const TDesC& aTestName)
696 : CTestStepAudioOutputStreamARN(aTestName)
702 CTestMmfAclntARN8021* CTestMmfAclntARN8021::NewL(const TDesC& aTestName)
704 CTestMmfAclntARN8021* self = new (ELeave) CTestMmfAclntARN8021(aTestName);
711 TVerdict CTestMmfAclntARN8021::DoTestL()
713 return( PerformTestL() );
719 void CTestMmfAclntARN8021::FsmL(TMmfAudioOutputStreamEvents aEventCode, TInt aError)
721 if (FsmCheck(aEventCode, aError))
727 // Open iTestAudioOutputStream1
728 iTestAudioOutputStream1->Open(NULL);
729 INFO_PRINTF1(_L("iTestAudioOutputStream1->Open()"));
730 // Set ExpectedEvent & ExpectedError and change the State
731 StateChange(EMaoscOpenComplete1);
734 // Register iTestAudioOutputStream1 for Notification
735 err = iTestAudioOutputStream1->RegisterAudioResourceNotification(*iMdaAudioOutputStreamCallbackSupport1, KMMFEventCategoryAudioResourceAvailable);
736 INFO_PRINTF1(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification()"));
737 if( err != KErrNone )
739 ERR_PRINTF2(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification - Failed with Error : %d"), err);
740 iTestStepResult = EFail;
741 CActiveScheduler::Stop();
745 // Open iTestAudioOutputStream2
746 iTestAudioOutputStream2->Open(NULL);
747 INFO_PRINTF1(_L("iTestAudioOutputStream2->Open()"));
748 // Set ExpectedEvent & ExpectedError and change the State
749 StateChange(EMaoscOpenComplete2);
753 err = iFile2.Read(iBuf2);
756 INFO_PRINTF2(_L("Error reading file %d"), err);
759 // iTestAudioOutputStream2->WriteL()
760 iTestAudioOutputStream2->WriteL(iBuf2);
761 INFO_PRINTF1(_L("iTestAudioOutputStream2->WriteL()"));
762 // Set ExpectedEvent & ExpectedError and change the State
763 StateChange(EMaoscBufferCopied2);
766 // Wait for PlayComplete event for iTestAudioOutputStream2
767 // Set ExpectedEvent & ExpectedError and change the State
768 StateChange(EMaoscPlayComplete2, KErrUnderflow);
771 // Timer to check if Notification Event Occurs.
772 iCallBackTimer->After(2000000);
773 iTestStepResult = EPass;
774 // Set ExpectedEvent & ExpectedError and change the State
775 StateChange(EMarncResourceAvailableOS1);
778 iCallBackTimer->Cancel(); // in case something else stopped the AS
779 INFO_PRINTF1(_L("iTestAudioOutputStream1->NotificationReceived"));
780 iTestStepResult = EFail;
781 CActiveScheduler::Stop();
790 TVerdict CTestMmfAclntARN8021::PerformTestL()
792 INFO_PRINTF1(_L("Register for notification, but make no request to play audio"));
793 iTestStepResult = EFail;
795 // Initialise the state variables
799 FsmL(EIdleOutputStream);
801 // Start the scheduler - Done only once !
802 CActiveScheduler::Start();
804 return iTestStepResult;
808 //CTestMmfAclntARN8022
814 CTestMmfAclntARN8022::CTestMmfAclntARN8022(const TDesC& aTestName)
815 : CTestStepAudioOutputStreamARN2(aTestName)
821 CTestMmfAclntARN8022* CTestMmfAclntARN8022::NewL(const TDesC& aTestName)
823 CTestMmfAclntARN8022* self = new (ELeave) CTestMmfAclntARN8022(aTestName);
830 TVerdict CTestMmfAclntARN8022::DoTestL()
832 return( PerformTestL() );
838 void CTestMmfAclntARN8022::Fsm(TInt aClientNumber, TInt aEventCode, TInt aError)
840 if (FsmCheck(aClientNumber, aEventCode, aError))
842 iTestStepResult = (this->*(iStateHandlers[iState]))();
843 if(iTestStepResult != EPass)
851 void CTestMmfAclntARN8022::StartTestL()
853 iClientList[1]->TestOpen();
854 INFO_PRINTF1(_L("iTestAudioOutputStream1->Open()"));
855 //Wait for EAudioOuputStreamOpenComplete event
856 SetExpectedEvent(1,CFsmAudioOutputStreamClient::EAudioOuputStreamOpenComplete,KErrNone);
857 StateChange(EStateOpenComplete1);
860 void CTestMmfAclntARN8022::InitTest()
862 iStateHandlers[EStateOpenComplete1] = &CTestMmfAclntARN8022::HandleStateOpenComplete1;
863 iStateHandlers[EStateOpenComplete2] = &CTestMmfAclntARN8022::HandleStateOpenComplete2;
864 iStateHandlers[EStateStreaming2] = &CTestMmfAclntARN8022::HandleStateStreaming2;
865 iStateHandlers[EStateStreamingComplete1ErrInUse] = &CTestMmfAclntARN8022::HandleStateStreamingComplete1ErrInUse;
866 iStateHandlers[EStateResourceAvailableOS1] = &CTestMmfAclntARN8022::HandleStateResourceAvailableOS1;
867 iStateHandlers[EStateStreamingComplete2ErrUnderflow] = &CTestMmfAclntARN8022::HandleStateStreamingComplete2ErrUnderflow;
870 TVerdict CTestMmfAclntARN8022::HandleStateOpenComplete1()
872 // Register Client1 for Notification
874 err = iClientList[1]->TestRegisterAsClient();
875 INFO_PRINTF1(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification()"));
878 ERR_PRINTF2(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification - Failed with Error : %d"), err);
881 iClientList[2]->TestOpen();
882 //Wait for EAudioOuputStreamOpenComplete event
883 SetExpectedEvent(2,CFsmAudioOutputStreamClient::EAudioOuputStreamOpenComplete,KErrNone);
884 StateChange(EStateOpenComplete2);
888 TVerdict CTestMmfAclntARN8022::HandleStateOpenComplete2()
890 INFO_PRINTF1(_L("iTestAudioOutputStream2->Open()"));
891 TInt err = iFileHandle[2].Read(iBuf[2]);
894 INFO_PRINTF2(_L("Error reading file %d"), err);
897 INFO_PRINTF1(_L("Pre iTestAudioOutputStream2->WriteL()"));
898 err = iClientList[2]->TestWrite(iBuf[2]);
901 INFO_PRINTF2(_L("iTestAudioOutputStream2->WriteL failed %d"),err);
904 INFO_PRINTF1(_L("iTestAudioOutputStream1->WriteL()"));
905 SetExpectedEvent(2,CFsmAudioOutputStreamClient::EAudioOutputStreamBufferCopied,KErrNone);
906 StateChange(EStateStreaming2);
910 TVerdict CTestMmfAclntARN8022::HandleStateStreaming2()
913 err = iFileHandle[1].Read(iBuf[1]); //-synchronous
916 INFO_PRINTF2(_L("Error reading iFile1 %d"), err);
917 return EInconclusive;
919 INFO_PRINTF1(_L("iTestAudioOutputStream1->WriteL()"));
920 err = iClientList[1]->TestWrite(iBuf[1]); //-Should get Play Error.
923 INFO_PRINTF2(_L("iTestAudioOutputStream1->WriteL failed %d"),err);
924 return EInconclusive;
926 // Set ExpectedEvent & ExpectedError and change the State
927 SetExpectedEvent(1,CFsmAudioOutputStreamClient::EAudioOutputStreamPlayComplete, KErrInUse);
928 StateChange(EStateStreamingComplete1ErrInUse);
932 TVerdict CTestMmfAclntARN8022::HandleStateStreamingComplete1ErrInUse()
934 RegisterClientEventToMonitor(1, CFsmAudioOutputStreamClient::EAudioOutputStreamResourceAvailable, KErrNone, EStateResourceAvailableOS1);
935 RegisterClientEventToMonitor(2, CFsmAudioOutputStreamClient::EAudioOutputStreamPlayComplete, KErrUnderflow, EStateStreamingComplete2ErrUnderflow);
936 StateChange(EStateMonitoringEvents);
940 TVerdict CTestMmfAclntARN8022::HandleStateResourceAvailableOS1()
942 INFO_PRINTF1(_L("iTestAudioOutputStream1->NotificationReceived"));
943 if(IsMonitoringFinished())
945 iTestStepResult = EPass;
950 StateChange(EStateMonitoringEvents);
955 TVerdict CTestMmfAclntARN8022::HandleStateStreamingComplete2ErrUnderflow()
957 INFO_PRINTF1(_L("iTestAudioOutputStream2->PlayComplete"));
958 if(IsMonitoringFinished())
960 iTestStepResult = EPass;
965 StateChange(EStateMonitoringEvents);
973 TVerdict CTestMmfAclntARN8022::PerformTestL()
975 INFO_PRINTF1(_L("Register (b4 play, after Open) and Receive Notification of a Resource Available Event."));
976 INFO_PRINTF1(_L("(when audio resource is currently unavailable and then available)"));
977 iTestStepResult = EFail;
982 // Start the scheduler - Done only once !
983 CActiveScheduler::Start();
985 return iTestStepResult;
989 //CTestMmfAclntARN8023
995 CTestMmfAclntARN8023::CTestMmfAclntARN8023(const TDesC& aTestName)
996 : CTestStepAudioOutputStreamARN2(aTestName)
1002 CTestMmfAclntARN8023* CTestMmfAclntARN8023::NewL(const TDesC& aTestName)
1004 CTestMmfAclntARN8023* self = new (ELeave) CTestMmfAclntARN8023(aTestName);
1011 TVerdict CTestMmfAclntARN8023::DoTestL()
1013 return( PerformTestL() );
1020 void CTestMmfAclntARN8023::Fsm(TInt aClientNumber, TInt aEventCode, TInt aError)
1022 if(FsmCheck(aClientNumber, aEventCode, aError))
1024 iTestStepResult = (this->*(iStateHandlers[iState]))();
1025 if(iTestStepResult != EPass)
1032 void CTestMmfAclntARN8023::InitTest()
1034 iStateHandlers[EStateOpenComplete1] = &CTestMmfAclntARN8023::HandleStateOpenComplete1;
1035 iStateHandlers[EStateOpenComplete2] = &CTestMmfAclntARN8023::HandleStateOpenComplete2;
1036 iStateHandlers[EStateStreaming1] = &CTestMmfAclntARN8023::HandleStateStreaming1;
1037 iStateHandlers[EStateStreaming2] = &CTestMmfAclntARN8023::HandleStateStreaming2;
1038 iStateHandlers[EStateStreamingComplete1ErrInUse] = &CTestMmfAclntARN8023::HandleStateStreamingComplete1ErrInUse;
1039 iStateHandlers[EStateResourceAvailableOS1] = &CTestMmfAclntARN8023::HandleStateResourceAvailableOS1;
1040 iStateHandlers[EStateStreamingComplete2ErrUnderflow] = &CTestMmfAclntARN8023::HandleStateStreamingComplete2ErrUnderflow;
1043 void CTestMmfAclntARN8023::StartTestL()
1046 iClientList[1]->TestOpen();
1047 INFO_PRINTF1(_L("iTestAudioOutputStream1->Open()"));
1048 //Wait for EAudioOuputStreamOpenComplete event
1049 SetExpectedEvent(1,CFsmAudioOutputStreamClient::EAudioOuputStreamOpenComplete,KErrNone);
1050 StateChange(EStateOpenComplete1);
1053 TVerdict CTestMmfAclntARN8023::HandleStateOpenComplete1()
1055 TInt err = KErrNone;
1056 err = iFileHandle[1].Read(iBuf[1]);
1059 INFO_PRINTF2(_L("Error reading iFile1 %d"), err);
1062 err = iClientList[1]->TestWrite(iBuf[1]);
1063 if( err != KErrNone)
1065 INFO_PRINTF2(_L("iTestAudioOutputStream1->WriteL failed %d"),err);
1068 INFO_PRINTF1(_L("iTestAudioOutputStream1->WriteL()"));
1069 SetExpectedEvent(1,CFsmAudioOutputStreamClient::EAudioOutputStreamBufferCopied,KErrNone);
1070 StateChange(EStateStreaming1);
1074 TVerdict CTestMmfAclntARN8023::HandleStateStreaming1()
1076 TInt err = KErrNone;
1077 err = iClientList[1]->TestRegisterAsClient();
1080 ERR_PRINTF2(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification - Failed with Error : %d"), err);
1081 return EInconclusive;
1084 iClientList[2]->TestOpen();
1085 //Wait for EAudioOuputStreamOpenComplete event
1086 SetExpectedEvent(2,CFsmAudioOutputStreamClient::EAudioOuputStreamOpenComplete,KErrNone);
1087 StateChange(EStateOpenComplete2);
1091 TVerdict CTestMmfAclntARN8023::HandleStateOpenComplete2()
1093 TInt err = iFileHandle[2].Read(iBuf[2]);
1096 INFO_PRINTF2(_L("Error reading iFile2 %d"), err);
1097 return EInconclusive;
1099 err = iClientList[2]->TestWrite(iBuf[2]);
1100 if( err != KErrNone)
1102 INFO_PRINTF2(_L("iTestAudioOutputStream2->WriteL failed %d"),err);
1103 return EInconclusive;
1105 INFO_PRINTF1(_L("iTestAudioOutputStream2->WriteL()"));
1106 SetExpectedEvent(1,CFsmAudioOutputStreamClient::EAudioOutputStreamPlayComplete, KErrInUse);
1107 StateChange(EStateStreamingComplete1ErrInUse);
1111 TVerdict CTestMmfAclntARN8023::HandleStateStreamingComplete1ErrInUse()
1113 SetExpectedEvent(2,CFsmAudioOutputStreamClient::EAudioOutputStreamBufferCopied,KErrNone);
1114 StateChange(EStateStreaming2);
1118 TVerdict CTestMmfAclntARN8023::HandleStateStreaming2()
1120 RegisterClientEventToMonitor(1,CFsmAudioOutputStreamClient::EAudioOutputStreamResourceAvailable,KErrNone,EStateResourceAvailableOS1);
1121 RegisterClientEventToMonitor(2,CFsmAudioOutputStreamClient::EAudioOutputStreamPlayComplete,KErrUnderflow,EStateStreamingComplete2ErrUnderflow);
1122 StateChange(EStateMonitoringEvents);
1126 TVerdict CTestMmfAclntARN8023::HandleStateResourceAvailableOS1()
1128 INFO_PRINTF1(_L("iTestAudioOutputStream1->NotificationReceived"));
1129 if(IsMonitoringFinished())
1131 iTestStepResult = EPass;
1136 StateChange(EStateMonitoringEvents);
1141 TVerdict CTestMmfAclntARN8023::HandleStateStreamingComplete2ErrUnderflow()
1143 INFO_PRINTF1(_L("iTestAudioOutputStream2->PlayComplete"));
1144 if(IsMonitoringFinished())
1146 iTestStepResult = EPass;
1151 StateChange(EStateMonitoringEvents); //Didn't finish monitoring
1159 TVerdict CTestMmfAclntARN8023::PerformTestL()
1161 INFO_PRINTF1(_L("Register (at the time of Play) and Receive Notification of a Resource Available Event."));
1162 INFO_PRINTF1(_L("(when audio resource is currently available and subsequently unavailable, and then available)"));
1163 iTestStepResult = EFail;
1169 // Start the scheduler - Done only once !
1170 CActiveScheduler::Start();
1172 return iTestStepResult;
1176 //CTestMmfAclntARN8024
1182 CTestMmfAclntARN8024::CTestMmfAclntARN8024(const TDesC& aTestName)
1183 : CTestStepAudioOutputStreamARN(aTestName)
1189 CTestMmfAclntARN8024* CTestMmfAclntARN8024::NewL(const TDesC& aTestName)
1191 CTestMmfAclntARN8024* self = new (ELeave) CTestMmfAclntARN8024(aTestName);
1198 TVerdict CTestMmfAclntARN8024::DoTestL()
1200 return( PerformTestL() );
1206 void CTestMmfAclntARN8024::FsmL(TMmfAudioOutputStreamEvents aEventCode, TInt aError)
1208 if (FsmCheck(aEventCode, aError))
1210 TInt err = KErrNone;
1214 // Open iTestAudioOutputStream1
1215 iTestAudioOutputStream1->Open(NULL);
1216 INFO_PRINTF1(_L("iTestAudioOutputStream1->Open()"));
1217 // Set ExpectedEvent & ExpectedError and change the State
1218 StateChange(EMaoscOpenComplete1);
1222 err = iFile1.Read(iBuf1); //-synchronous
1223 if (err != KErrNone)
1225 INFO_PRINTF2(_L("Error reading iFile1 %d"), err);
1228 // iTestAudioOutputStream1->WriteL()
1229 INFO_PRINTF1(_L("iTestAudioOutputStream1->WriteL()"));
1230 iTestAudioOutputStream1->WriteL(iBuf1); //-Should get Play Error.
1231 // Set ExpectedEvent & ExpectedError and change the State
1232 StateChange(EMaoscBufferCopied1);
1235 // Open iTestAudioOutputStream2
1236 iTestAudioOutputStream2->Open(NULL);
1237 INFO_PRINTF1(_L("iTestAudioOutputStream2->Open()"));
1238 // Set ExpectedEvent & ExpectedError and change the State
1239 StateChange(EMaoscOpenComplete2);
1243 err = iFile2.Read(iBuf2);
1244 if (err != KErrNone)
1246 INFO_PRINTF2(_L("Error reading file %d"), err);
1249 // iTestAudioOutputStream2->WriteL()
1250 iTestAudioOutputStream2->WriteL(iBuf2);
1251 INFO_PRINTF1(_L("iTestAudioOutputStream2->WriteL()"));
1252 // Set ExpectedEvent & ExpectedError and change the State
1253 StateChange(EMaoscPlayComplete1, KErrInUse);
1256 // Wait for BufferCopied event for iTestAudioOutputStream2
1257 // Set ExpectedEvent & ExpectedError and change the State
1258 StateChange(EMaoscBufferCopied2);
1261 // Cancellation of notification request for iTestAudioOutputStream1
1262 err = iTestAudioOutputStream1->CancelRegisterAudioResourceNotification(KMMFEventCategoryAudioResourceAvailable);
1263 INFO_PRINTF2(_L("iTestAudioOutputStream1->CancelRegisterAudioResourceNotification : Return Code = %d "), err);
1264 if( err != KErrNone )
1266 ERR_PRINTF2(_L("iTestAudioOutputStream1->CancelRegisterAudioResourceNotification - Failed with Error : %d"), err);
1267 iTestStepResult = EFail;
1268 CActiveScheduler::Stop();
1272 // Wait for PlayComplete event for iTestAudioOutputStream2
1273 // Set ExpectedEvent & ExpectedError and change the State
1274 StateChange(EMaoscPlayComplete2, KErrUnderflow);
1277 // Timer to check if Notification Event Occurs.
1278 iCallBackTimer->After(2000000);
1279 iTestStepResult = EPass;
1280 // Set ExpectedEvent & ExpectedError and change the State
1281 StateChange(EMarncResourceAvailableOS1);
1284 iCallBackTimer->Cancel(); // in case something else stopped the AS
1285 INFO_PRINTF1(_L("iTestAudioOutputStream1->NotificationReceived"));
1286 iTestStepResult = EFail;
1287 CActiveScheduler::Stop();
1296 TVerdict CTestMmfAclntARN8024::PerformTestL()
1298 INFO_PRINTF1(_L("Registration (b4 File Open) and Cancellation of the notification request"));
1299 iTestStepResult = EFail;
1301 // Initialise the state variables
1304 // Register iTestAudioOutputStream1 for Notification
1305 TInt err = iTestAudioOutputStream1->RegisterAudioResourceNotification(*iMdaAudioOutputStreamCallbackSupport1, KMMFEventCategoryAudioResourceAvailable);
1306 INFO_PRINTF1(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification()"));
1307 if( err != KErrNone )
1309 ERR_PRINTF2(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification - Failed with Error : %d"), err);
1313 // Begin the process
1314 FsmL(EIdleOutputStream);
1316 // Start the scheduler - Done only once !
1317 CActiveScheduler::Start();
1319 return iTestStepResult;
1323 //CTestMmfAclntARN8025
1329 CTestMmfAclntARN8025::CTestMmfAclntARN8025(const TDesC& aTestName)
1330 : CTestStepAudioOutputStreamARN2(aTestName)
1336 CTestMmfAclntARN8025* CTestMmfAclntARN8025::NewL(const TDesC& aTestName)
1338 CTestMmfAclntARN8025* self = new (ELeave) CTestMmfAclntARN8025(aTestName);
1345 TVerdict CTestMmfAclntARN8025::DoTestL()
1347 return( PerformTestL() );
1351 void CTestMmfAclntARN8025::InitTest()
1353 iStateHandlers[EStateOpenComplete1] = &CTestMmfAclntARN8025::HandleStateOpenComplete1;
1354 iStateHandlers[EStateOpenComplete2] = &CTestMmfAclntARN8025::HandleStateOpenComplete2;
1355 iStateHandlers[EStateStreaming1] = &CTestMmfAclntARN8025::HandleStateStreaming1;
1356 iStateHandlers[EStateStreaming2] = &CTestMmfAclntARN8025::HandleStateStreaming2;
1357 iStateHandlers[EStateStreamingComplete1ErrInUse] = &CTestMmfAclntARN8025::HandleStateStreamingComplete1ErrInUse;
1358 iStateHandlers[EStateResourceAvailableOS1] = &CTestMmfAclntARN8025::HandleStateResourceAvailableOS1;
1359 iStateHandlers[EStateStreamingComplete2ErrUnderflow] = &CTestMmfAclntARN8025::HandleStateStreamingComplete2ErrUnderflow;
1365 void CTestMmfAclntARN8025::Fsm(TInt aClientNumber, TInt aEventCode, TInt aError)
1367 if(FsmCheck(aClientNumber, aEventCode, aError))
1369 iTestStepResult = (this->*(iStateHandlers[iState]))();
1370 if(iTestStepResult != EPass)
1377 void CTestMmfAclntARN8025::StartTestL()
1380 iClientList[1]->TestOpen();
1381 INFO_PRINTF1(_L("iTestAudioOutputStream1->Open()"));
1382 //Wait for EAudioOuputStreamOpenComplete event
1383 SetExpectedEvent(1,CFsmAudioOutputStreamClient::EAudioOuputStreamOpenComplete,KErrNone);
1384 StateChange(EStateOpenComplete1);
1387 TVerdict CTestMmfAclntARN8025::HandleStateOpenComplete1()
1389 TInt err = KErrNone;
1390 err = iFileHandle[1].Read(iBuf[1]);
1393 INFO_PRINTF2(_L("Error reading iFile1 %d"), err);
1396 err = iClientList[1]->TestWrite(iBuf[1]);
1397 if( err != KErrNone)
1399 INFO_PRINTF2(_L("iTestAudioOutputStream1->WriteL failed %d"),err);
1402 INFO_PRINTF1(_L("iTestAudioOutputStream1->WriteL()"));
1403 SetExpectedEvent(1,CFsmAudioOutputStreamClient::EAudioOutputStreamBufferCopied,KErrNone);
1404 StateChange(EStateStreaming1);
1408 TVerdict CTestMmfAclntARN8025::HandleStateStreaming1()
1410 TInt err = KErrNone;
1411 err = iClientList[1]->TestRegisterAsClient();
1414 ERR_PRINTF2(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification - Failed with Error : %d"), err);
1415 return EInconclusive;
1418 iClientList[2]->TestOpen();
1419 INFO_PRINTF1(_L("iTestAudioOutputStream2->Open()"));
1420 //Wait for EAudioOuputStreamOpenComplete event
1421 SetExpectedEvent(2,CFsmAudioOutputStreamClient::EAudioOuputStreamOpenComplete,KErrNone);
1422 StateChange(EStateOpenComplete2);
1426 TVerdict CTestMmfAclntARN8025::HandleStateOpenComplete2()
1428 TInt err = iFileHandle[2].Read(iBuf[2]);
1431 INFO_PRINTF2(_L("Error reading iFile2 %d"), err);
1432 return EInconclusive;
1434 err = iClientList[2]->TestWrite(iBuf[2]);
1435 if( err != KErrNone)
1437 INFO_PRINTF2(_L("iTestAudioOutputStream1->WriteL failed %d"),err);
1438 return EInconclusive;
1440 INFO_PRINTF1(_L("iTestAudioOutputStream2->WriteL()"));
1441 SetExpectedEvent(1,CFsmAudioOutputStreamClient::EAudioOutputStreamPlayComplete, KErrInUse);
1442 StateChange(EStateStreamingComplete1ErrInUse);
1446 TVerdict CTestMmfAclntARN8025::HandleStateStreamingComplete1ErrInUse()
1448 iPositionStop = (static_cast<TInt64>(iClientList[1]->BytesPlayed())* KMicroSecsInOneSec)/(KSampleRate*KBytesPerSample);
1449 SetExpectedEvent(2,CFsmAudioOutputStreamClient::EAudioOutputStreamBufferCopied,KErrNone);
1450 StateChange(EStateStreaming2);
1454 TVerdict CTestMmfAclntARN8025::HandleStateStreaming2()
1456 RegisterClientEventToMonitor(1,CFsmAudioOutputStreamClient::EAudioOutputStreamResourceAvailable,KErrNone,EStateResourceAvailableOS1);
1457 RegisterClientEventToMonitor(2,CFsmAudioOutputStreamClient::EAudioOutputStreamPlayComplete,KErrUnderflow,EStateStreamingComplete2ErrUnderflow);
1458 StateChange(EStateMonitoringEvents);
1462 TVerdict CTestMmfAclntARN8025::HandleStateResourceAvailableOS1()
1464 INFO_PRINTF1(_L("iTestAudioOutputStream1->NotificationReceived"));
1466 if(IsMonitoringFinished())
1468 iTestStepResult = EPass;
1473 StateChange(EStateMonitoringEvents);
1475 TTimeIntervalMicroSeconds positionResume = iClientList[1]->GetResumedPosition();
1476 iPositionResume = ((positionResume.Int64()) * KMicroSecsInOneSec / KSampleRate8000Hz);
1477 if(iPositionResume == iPositionStop)
1479 INFO_PRINTF3(_L("iTestAudioOutputStream1->Audio Resource Position Matches, Expected=%d, Actual=%d"), I64LOW(iPositionStop.Int64()), I64LOW(iPositionResume.Int64()));
1480 iTestStepResult = EPass;
1484 ERR_PRINTF3(_L("iTestAudioOutputStream1->Audio Resource Position does NOT Match, Expected=%d, Actual=%d"), I64LOW(iPositionStop.Int64()), I64LOW(iPositionResume.Int64()));
1485 iTestStepResult=EFail;
1487 return iTestStepResult;
1490 TVerdict CTestMmfAclntARN8025::HandleStateStreamingComplete2ErrUnderflow()
1492 INFO_PRINTF1(_L("iTestAudioOutputStream2->PlayComplete"));
1493 if(IsMonitoringFinished())
1495 iTestStepResult = EPass;
1500 StateChange(EStateMonitoringEvents); //Didn't finish monitoring
1508 TVerdict CTestMmfAclntARN8025::PerformTestL()
1510 INFO_PRINTF1( _L("Get the actual position from where the paused audio can be resumed."));
1511 iTestStepResult = EFail;
1517 // Start the scheduler - Done only once !
1518 CActiveScheduler::Start();
1520 return iTestStepResult;
1524 //CTestMmfAclntARN8026
1530 CTestMmfAclntARN8026::CTestMmfAclntARN8026(const TDesC& aTestName)
1531 : CTestStepAudioOutputStreamARN(aTestName)
1537 CTestMmfAclntARN8026* CTestMmfAclntARN8026::NewL(const TDesC& aTestName)
1539 CTestMmfAclntARN8026* self = new (ELeave) CTestMmfAclntARN8026(aTestName);
1546 TVerdict CTestMmfAclntARN8026::DoTestL()
1548 return( PerformTestL() );
1554 TBool CTestMmfAclntARN8026::FsmCheck(TMmfAudioOutputStreamEvents aEventCode, TInt aError)
1556 TBool retFsmCheck = EFalse;
1557 if (iExpectedEvent != aEventCode)
1559 if ((aEventCode == EMaoscPlayComplete2))
1561 retFsmCheck = ETrue;
1562 if (iEventOccured == EMarncResourceAvailableOS1)
1568 iEventOccured = EMaoscPlayComplete2;
1571 else if (aEventCode == EMarncResourceAvailableOS1)
1573 retFsmCheck = ETrue;
1574 if (iEventOccured == EMaoscPlayComplete2)
1580 iEventOccured = EMarncResourceAvailableOS1;
1585 ERR_PRINTF3(_L("ExpectedEvent : %d, ActualEvent : %d"), iExpectedEvent, aEventCode);
1586 iTestStepResult = EFail;
1587 CActiveScheduler::Stop();
1590 else if (iExpectedError != aError)
1592 ERR_PRINTF3(_L("ExpectedError : %d, ActualError : %d"), iExpectedError, aError);
1593 iTestStepResult = EFail;
1594 CActiveScheduler::Stop();
1598 retFsmCheck = ETrue;
1606 void CTestMmfAclntARN8026::FsmL(TMmfAudioOutputStreamEvents aEventCode, TInt aError)
1608 if (FsmCheck(aEventCode, aError))
1610 TInt err = KErrNone;
1614 // Open iTestAudioOutputStream1
1615 iTestAudioOutputStream1->Open(NULL);
1616 INFO_PRINTF1(_L("iTestAudioOutputStream1->Open()"));
1617 // Set ExpectedEvent & ExpectedError and change the State
1618 StateChange(EMaoscOpenComplete1);
1622 err = iFile1.Read(iBuf1); //-synchronous
1623 if (err != KErrNone)
1625 INFO_PRINTF2(_L("Error reading iFile1 %d"), err);
1628 // iTestAudioOutputStream1->WriteL()
1629 INFO_PRINTF1(_L("iTestAudioOutputStream1->WriteL()"));
1630 iTestAudioOutputStream1->WriteL(iBuf1); //-Should get Play Error.
1631 // Set ExpectedEvent & ExpectedError and change the State
1632 StateChange(EMaoscBufferCopied1);
1635 // Register iTestAudioOutputStream1 for Notification
1636 err = iTestAudioOutputStream1->RegisterAudioResourceNotification(*iMdaAudioOutputStreamCallbackSupport1, KMMFEventCategoryAudioResourceAvailable);
1637 INFO_PRINTF1(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification()"));
1638 if( err != KErrNone )
1640 ERR_PRINTF2(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification - Failed with Error : %d"), err);
1641 iTestStepResult = EFail;
1642 CActiveScheduler::Stop();
1646 // Register iTestAudioOutputStream3 for Notification
1647 err = iTestAudioOutputStream3->RegisterAudioResourceNotification(*iMdaAudioOutputStreamCallbackSupport3, KMMFEventCategoryAudioResourceAvailable);
1648 INFO_PRINTF1(_L("iTestAudioOutputStream3->RegisterAudioResourceNotification()"));
1649 if( err != KErrNone )
1651 ERR_PRINTF2(_L("iTestAudioOutputStream3->RegisterAudioResourceNotification - Failed with Error : %d"), err);
1652 iTestStepResult = EFail;
1653 CActiveScheduler::Stop();
1657 // Open iTestAudioOutputStream3
1658 iTestAudioOutputStream3->Open(NULL);
1659 INFO_PRINTF1(_L("iTestAudioOutputStream3->Open()"));
1660 // Set ExpectedEvent & ExpectedError and change the State
1661 StateChange(EMaoscOpenComplete3);
1664 // Open iTestAudioOutputStream2
1665 iTestAudioOutputStream2->Open(NULL);
1666 INFO_PRINTF1(_L("iTestAudioOutputStream2->Open()"));
1667 // Set ExpectedEvent & ExpectedError and change the State
1668 StateChange(EMaoscOpenComplete2);
1672 err = iFile2.Read(iBuf2);
1673 if (err != KErrNone)
1675 INFO_PRINTF2(_L("Error reading file %d"), err);
1678 // iTestAudioOutputStream2->WriteL()
1679 iTestAudioOutputStream2->WriteL(iBuf2);
1680 INFO_PRINTF1(_L("iTestAudioOutputStream2->WriteL()"));
1681 // Set ExpectedEvent & ExpectedError and change the State
1682 StateChange(EMaoscPlayComplete1, KErrInUse);
1685 // Wait for BufferCopied event for iTestAudioOutputStream2
1686 // Set ExpectedEvent & ExpectedError and change the State
1687 StateChange(EMaoscBufferCopied2);
1691 err = iFile3.Read(iBuf3); //-synchronous
1692 if (err != KErrNone)
1694 INFO_PRINTF2(_L("Error reading iFile2 %d"), err);
1697 // iTestAudioOutputStream3->WriteL()
1698 INFO_PRINTF1(_L("iTestAudioOutputStream3->WriteL()"));
1699 iTestAudioOutputStream3->WriteL(iBuf3);
1700 // Set ExpectedEvent & ExpectedError and change the State
1701 StateChange(EMaoscBufferCopied3, KErrInUse);
1704 // Set ExpectedEvent & ExpectedError and change the State
1705 StateChange(EMaoscPlayComplete3, KErrInUse);
1708 // Set ExpectedEvent & ExpectedError and change the State
1709 StateChange(EMaoscPlayComplete2, KErrUnderflow);
1712 // Timer to check if Notification Event Occurs.
1713 iCallBackTimer->After(2000000);
1714 // Set ExpectedEvent & ExpectedError and change the State
1715 StateChange(EMarncResourceAvailableOS1);
1718 iCallBackTimer->Cancel(); // in case something else stopped the AS
1719 INFO_PRINTF1(_L("iTestAudioOutputStream1->NotificationReceived"));
1720 err = iTestAudioOutputStream1->WillResumePlay();
1721 INFO_PRINTF1(_L("iTestAudioOutputStream1->WillResumePlay()"));
1722 if( err != KErrNone )
1724 ERR_PRINTF2(_L("iTestAudioOutputStream1->WillResumePlay() - Failed with Error : %d"), err);
1725 iTestStepResult = EFail;
1726 CActiveScheduler::Stop();
1729 // Set the resume position.. or may be not, since its an offset.
1730 // iTestAudioOutputStream1->SetPosition(iPosition);
1731 // iTestAudioOutputStream1->WriteL()
1732 iTestAudioOutputStream1->WriteL(iBuf1);
1733 INFO_PRINTF1(_L("iTestAudioOutputStream1->WriteL()"));
1734 StateChange(EMaoscBufferCopied1);
1737 // Wait for PlayComplete event for iTestAudioOutputStream1
1738 // Set ExpectedEvent & ExpectedError and change the State
1739 StateChange(EMaoscPlayComplete1, KErrUnderflow);
1742 // Timer to check if Notification Event Occurs.
1743 iCallBackTimer->After(2000000);
1744 // Set ExpectedEvent & ExpectedError and change the State
1745 StateChange(EMarncResourceAvailableOS3);
1748 iCallBackTimer->Cancel(); // in case something else stopped the AS
1749 INFO_PRINTF1(_L("iTestAudioOutputStream3->NotificationReceived"));
1750 iTestStepResult = EPass;
1751 CActiveScheduler::Stop();
1760 TVerdict CTestMmfAclntARN8026::PerformTestL()
1762 INFO_PRINTF1( _L("Call WillResumePlay()"));
1763 iTestStepResult = EFail;
1765 // Initialise the state variables
1768 // Begin the process
1769 FsmL(EIdleOutputStream);
1771 // Start the scheduler - Done only once !
1772 CActiveScheduler::Start();
1774 return iTestStepResult;
1783 //CTestMmfAclntARN1321
1789 CTestMmfAclntARN1321::CTestMmfAclntARN1321(const TDesC& aTestName)
1790 : CTestStepAudioOutputStreamARN(aTestName)
1796 CTestMmfAclntARN1321* CTestMmfAclntARN1321::NewL(const TDesC& aTestName)
1798 CTestMmfAclntARN1321* self = new (ELeave) CTestMmfAclntARN1321(aTestName);
1805 TVerdict CTestMmfAclntARN1321::DoTestL()
1807 return( PerformTestL() );
1813 void CTestMmfAclntARN1321::FsmL(TMmfAudioOutputStreamEvents aEventCode, TInt aError)
1815 if (FsmCheck(aEventCode, aError))
1817 TInt err = KErrNone;
1821 // Open iTestAudioOutputStream1
1822 iTestAudioOutputStream1->Open(NULL);
1823 INFO_PRINTF1(_L("iTestAudioOutputStream1->Open()"));
1824 // Set ExpectedEvent & ExpectedError and change the State
1825 StateChange(EMaoscOpenComplete1);
1828 // Register iTestAudioOutputStream1 for Notification
1829 err = iTestAudioOutputStream1->RegisterAudioResourceNotification(*iMdaAudioOutputStreamCallbackSupport1, KMMFEventCategoryPlaybackComplete);
1830 INFO_PRINTF1(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification(*iMdaAudioOutputStreamCallbackSupport1, KMMFEventCategoryPlaybackComplete)"));
1831 if( err == KErrNotSupported )
1833 INFO_PRINTF1(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification - Returned KErrNotSupported ") );
1834 iTestStepResult = EPass;
1838 ERR_PRINTF2(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification - Failed with Error : %d"), err);
1839 iTestStepResult = EFail;
1841 CActiveScheduler::Stop();
1850 TVerdict CTestMmfAclntARN1321::PerformTestL()
1852 INFO_PRINTF1( _L("Register for notification with an unsupported event type."));
1853 iTestStepResult = EFail;
1855 // Initialise the state variables
1858 // Begin the process
1859 FsmL(EIdleOutputStream);
1861 // Start the scheduler - Done only once !
1862 CActiveScheduler::Start();
1864 return iTestStepResult;
1868 //CTestMmfAclntARN1322
1874 CTestMmfAclntARN1322::CTestMmfAclntARN1322(const TDesC& aTestName)
1875 : CTestStepAudioOutputStreamARN(aTestName)
1881 CTestMmfAclntARN1322* CTestMmfAclntARN1322::NewL(const TDesC& aTestName)
1883 CTestMmfAclntARN1322* self = new (ELeave) CTestMmfAclntARN1322(aTestName);
1890 TVerdict CTestMmfAclntARN1322::DoTestL()
1892 return( PerformTestL() );
1898 void CTestMmfAclntARN1322::FsmL(TMmfAudioOutputStreamEvents aEventCode, TInt aError)
1900 if (FsmCheck(aEventCode, aError))
1902 TInt err = KErrNone;
1906 // Open iTestAudioOutputStream1
1907 iTestAudioOutputStream1->Open(NULL);
1908 INFO_PRINTF1(_L("iTestAudioOutputStream1->Open()"));
1909 // Set ExpectedEvent & ExpectedError and change the State
1910 StateChange(EMaoscOpenComplete1);
1913 // Register iTestAudioOutputStream1 for Notification
1914 err = iTestAudioOutputStream1->RegisterAudioResourceNotification(*iMdaAudioOutputStreamCallbackSupport1, KMMFEventCategoryAudioResourceAvailable);
1915 INFO_PRINTF1(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification()"));
1916 if( err != KErrNone )
1918 ERR_PRINTF2(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification - Failed with Error : %d"), err);
1919 iTestStepResult = EFail;
1920 CActiveScheduler::Stop();
1924 // Cancellation of notification request for iTestAudioOutputStream1
1925 err = iTestAudioOutputStream1->CancelRegisterAudioResourceNotification(KMMFEventCategoryPlaybackComplete);
1926 INFO_PRINTF1(_L("iTestAudioOutputStream1->CancelRegisterAudioResourceNotification(KMMFEventCategoryPlaybackComplete)"));
1927 if( err == KErrNotSupported )
1929 INFO_PRINTF1(_L("iTestAudioOutputStream1->CancelRegisterAudioResourceNotification - Returned KErrNotSupported ") );
1930 iTestStepResult = EPass;
1934 ERR_PRINTF2(_L("iTestAudioOutputStream1->CancelRegisterAudioResourceNotification - Failed with Error : %d"), err);
1935 iTestStepResult = EFail;
1937 CActiveScheduler::Stop();
1946 TVerdict CTestMmfAclntARN1322::PerformTestL()
1948 INFO_PRINTF1( _L("Cancel the request for notification with an unsupported event type."));
1949 iTestStepResult = EFail;
1951 // Initialise the state variables
1954 // Begin the process
1955 FsmL(EIdleOutputStream);
1957 // Start the scheduler - Done only once !
1958 CActiveScheduler::Start();
1960 return iTestStepResult;
1964 //CTestMmfAclntARN1323
1970 CTestMmfAclntARN1323::CTestMmfAclntARN1323(const TDesC& aTestName)
1971 : CTestStepAudioOutputStreamARN(aTestName)
1977 CTestMmfAclntARN1323* CTestMmfAclntARN1323::NewL(const TDesC& aTestName)
1979 CTestMmfAclntARN1323* self = new (ELeave) CTestMmfAclntARN1323(aTestName);
1986 TVerdict CTestMmfAclntARN1323::DoTestL()
1988 return( PerformTestL() );
1994 void CTestMmfAclntARN1323::FsmL(TMmfAudioOutputStreamEvents aEventCode, TInt aError)
1996 if (FsmCheck(aEventCode, aError))
1998 TInt err = KErrNone;
2002 // Open iTestAudioOutputStream1
2003 iTestAudioOutputStream1->Open(NULL);
2004 INFO_PRINTF1(_L("iTestAudioOutputStream1->Open()"));
2005 // Set ExpectedEvent & ExpectedError and change the State
2006 StateChange(EMaoscOpenComplete1);
2009 // Cancellation of notification request for iTestAudioOutputStream1
2010 err = iTestAudioOutputStream1->CancelRegisterAudioResourceNotification(KMMFEventCategoryAudioResourceAvailable);
2011 INFO_PRINTF1(_L("iTestAudioOutputStream1->CancelRegisterAudioResourceNotification()"));
2012 if( err == KErrCancel )
2014 INFO_PRINTF1(_L("iTestAudioOutputStream1->CancelRegisterAudioResourceNotification - Returned KErrCancel ") );
2015 iTestStepResult = EPass;
2019 ERR_PRINTF2(_L("iTestAudioOutputStream1->CancelRegisterAudioResourceNotification - Failed with Error : %d"), err);
2020 iTestStepResult = EFail;
2022 CActiveScheduler::Stop();
2031 TVerdict CTestMmfAclntARN1323::PerformTestL()
2033 INFO_PRINTF1(_L("Cancel when no resource Notification is requested."));
2034 iTestStepResult = EFail;
2036 // Initialise the state variables
2039 // Begin the process
2040 FsmL(EIdleOutputStream);
2042 // Start the scheduler - Done only once !
2043 CActiveScheduler::Start();
2045 return iTestStepResult;
2049 //CTestMmfAclntARN1324
2055 CTestMmfAclntARN1324::CTestMmfAclntARN1324(const TDesC& aTestName)
2056 : CTestStepAudioOutputStreamARN(aTestName)
2062 CTestMmfAclntARN1324* CTestMmfAclntARN1324::NewL(const TDesC& aTestName)
2064 CTestMmfAclntARN1324* self = new (ELeave) CTestMmfAclntARN1324(aTestName);
2071 TVerdict CTestMmfAclntARN1324::DoTestL()
2073 return( PerformTestL() );
2079 void CTestMmfAclntARN1324::FsmL(TMmfAudioOutputStreamEvents aEventCode, TInt aError)
2081 if (FsmCheck(aEventCode, aError))
2083 TInt err = KErrNone;
2087 // Open iTestAudioOutputStream1
2088 iTestAudioOutputStream1->Open(NULL);
2089 INFO_PRINTF1(_L("iTestAudioOutputStream1->Open()"));
2090 // Set ExpectedEvent & ExpectedError and change the State
2091 StateChange(EMaoscOpenComplete1);
2094 // Register iTestAudioOutputStream1 for Notification
2095 err = iTestAudioOutputStream1->RegisterAudioResourceNotification(*iMdaAudioOutputStreamCallbackSupport1, KMMFEventCategoryAudioResourceAvailable);
2096 INFO_PRINTF1(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification()#1"));
2097 if( err != KErrNone )
2099 ERR_PRINTF2(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification#1 - Failed with Error : %d"), err);
2100 iTestStepResult = EFail;
2101 CActiveScheduler::Stop();
2105 // Register iTestAudioOutputStream1 for Notification (again)
2106 err = iTestAudioOutputStream1->RegisterAudioResourceNotification(*iMdaAudioOutputStreamCallbackSupport1, KMMFEventCategoryAudioResourceAvailable);
2107 INFO_PRINTF1(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification()#2"));
2108 if( err == KErrAlreadyExists )
2110 INFO_PRINTF1(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification#2 - Returned KErrAlreadyExists ") );
2111 iTestStepResult = EPass;
2115 ERR_PRINTF2(_L("iTestAudioOutputStream1->RegisterAudioResourceNotification#2 - Failed with Error : %d"), err);
2116 iTestStepResult = EFail;
2118 CActiveScheduler::Stop();
2127 TVerdict CTestMmfAclntARN1324::PerformTestL()
2129 INFO_PRINTF1(_L("Multiple Registration for notification for the same event type."));
2130 iTestStepResult = EFail;
2132 // Initialise the state variables
2135 // Begin the process
2136 FsmL(EIdleOutputStream);
2138 // Start the scheduler - Done only once !
2139 CActiveScheduler::Start();
2141 return iTestStepResult;