2010wk46_02 default tip
authorhgs
Tue, 02 Nov 2010 12:28:51 +0000
changeset 6 fe9d1bf55678
parent 5 b220a9341636
2010wk46_02
devsound/a3fdevsound/bwins/MmfDevSoundProxy.def
devsound/a3fdevsound/bwins/mmfaudioserver.def
devsound/a3fdevsound/bwins/mmfdevsoundadaptor.def
devsound/a3fdevsound/eabi/MmfDevSoundProxy.def
devsound/a3fdevsound/eabi/mmfaudioserver.def
devsound/a3fdevsound/eabi/mmfdevsoundadaptor.def
devsound/a3fdevsound/inc/mmfaudioserverinterface.h
devsound/a3fdevsound/src/devsoundadaptor/mmfdevsoundadaptation.cpp
devsound/a3fdevsound/src/devsoundadaptor/mmfdevsoundadaptation.h
devsound/a3fdevsound/src/devsoundadaptor/mmfdevsoundadaptationbody.cpp
devsound/a3fdevsound/src/devsoundadaptor/mmfdevsoundadaptationbody.h
devsound/a3fdevsound/src/mmfaudioserver/mmfaudioserver.cpp
devsound/a3fdevsound/src/mmfaudioserver/mmfaudioserver.h
devsound/a3fdevsound/src/mmfaudioserver/mmfaudioserverinterface.cpp
devsound/a3fdevsound/src/mmfaudioserver/mmfaudioserverinterfaceimpl.h
devsound/a3fdevsound/src/mmfdevsoundproxy/mmfdevsoundproxy.cpp
devsound/a3fdevsound/src/mmfdevsoundproxy/mmfdevsoundproxy.h
devsound/a3fdevsound/src/mmfdevsoundserver/mmfdevsoundsession.cpp
devsound/a3fdevsound/src/mmfdevsoundserver/mmfdevsoundsession.h
eaacplusutil_stub/emgroup/bld.inf
eaacplusutil_stub/group/bld.inf
eaacplusutil_stub/group/bld_common.inf
frametable_stub/emgroup/bld.inf
frametable_stub/group/bld.inf
frametable_stub/group/bld_common.inf
mmaudio_pub/drm_audio_player_api/tsrc/data/mmc/drm/test3gp.dcf
mmaudio_pub/drm_audio_player_api/tsrc/data/mmc/drm/testmp3.dcf
mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/group/TSU_MMF_DEVSOUND_SUITE.iby
mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/group/bld.inf
mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/inc/TSU_MMF_DEVSOUND_STEP.h
mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/mmpfiles/tsu_mmf_devsound_starttest.mmp
mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/scripts/TSU_MMF_DEVSOUND_SUITE_debug.script
mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/src/TSU_MMF_DEVSOUND_STEP.cpp
mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/src/TSU_MMF_DEVSOUND_SUITE.cpp
mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/teststart/tsu_mmf_devsound_starttest.cpp
mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/teststart/tsu_mmf_devsound_starttest.h
mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/teststart/tsu_mmf_devsound_starttest.hrh
mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/teststart/tsu_mmf_devsound_starttest.rss
package_definition.xml
--- a/devsound/a3fdevsound/bwins/MmfDevSoundProxy.def	Tue Nov 02 12:13:59 2010 +0000
+++ b/devsound/a3fdevsound/bwins/MmfDevSoundProxy.def	Tue Nov 02 12:28:51 2010 +0000
@@ -2,7 +2,7 @@
 	??0RMMFDevSoundProxy@@QAE@XZ @ 1 NONAME ; RMMFDevSoundProxy::RMMFDevSoundProxy(void)
 	?AsyncCustomCommand@RMMFDevSoundProxy@@QAEXVTUid@@AAVTRequestStatus@@ABVTDesC8@@2PAVTDes8@@@Z @ 2 NONAME ; void RMMFDevSoundProxy::AsyncCustomCommand(class TUid, class TRequestStatus &, class TDesC8 const &, class TDesC8 const &, class TDes8 *)
 	?BufferToBeEmptiedData@RMMFDevSoundProxy@@QAEHAAV?$TPckgBuf@VTMMFDevSoundProxyHwBuf@@@@@Z @ 3 NONAME ; int RMMFDevSoundProxy::BufferToBeEmptiedData(class TPckgBuf<class TMMFDevSoundProxyHwBuf> &)
-	?BufferToBeFilledData@RMMFDevSoundProxy@@QAEHAAV?$TPckgBuf@VTMMFDevSoundProxyHwBuf@@@@@Z @ 4  NONAME ABSENT ; int RMMFDevSoundProxy::BufferToBeFilledData(class TPckgBuf<class TMMFDevSoundProxyHwBuf> &) 
+	?BufferToBeFilledData@RMMFDevSoundProxy@@QAEHAAV?$TPckgBuf@VTMMFDevSoundProxyHwBuf@@@@@Z @ 4 NONAME ABSENT ; int RMMFDevSoundProxy::BufferToBeFilledData(class TPckgBuf<class TMMFDevSoundProxyHwBuf> &) 
 	?CancelInitialize@RMMFDevSoundProxy@@UAEHXZ @ 5 NONAME ; int RMMFDevSoundProxy::CancelInitialize(void)
 	?CancelRegisterAsClient@RMMFDevSoundProxy@@QAEHVTUid@@@Z @ 6 NONAME ; int RMMFDevSoundProxy::CancelRegisterAsClient(class TUid)
 	?Capabilities@RMMFDevSoundProxy@@QAE?AVTMMFCapabilities@@XZ @ 7 NONAME ; class TMMFCapabilities RMMFDevSoundProxy::Capabilities(void)
@@ -14,8 +14,8 @@
 	?CustomCommandSync@RMMFDevSoundProxy@@UAEHABV?$TPckgBuf@VTMMFMessageDestination@@@@HABVTDesC8@@1AAVTDes8@@@Z @ 13 NONAME ; int RMMFDevSoundProxy::CustomCommandSync(class TPckgBuf<class TMMFMessageDestination> const &, int, class TDesC8 const &, class TDesC8 const &, class TDes8 &)
 	?CustomInterface@RMMFDevSoundProxy@@QAEPAXVTUid@@@Z @ 14 NONAME ; void * RMMFDevSoundProxy::CustomInterface(class TUid)
 	?EmptyBuffers@RMMFDevSoundProxy@@QAEHXZ @ 15 NONAME ; int RMMFDevSoundProxy::EmptyBuffers(void)
-	?FixedSequenceCount@RMMFDevSoundProxy@@QAEHXZ @ 16 NONAME ; int RMMFDevSoundProxy::FixedSequenceCount(void)
-	?FixedSequenceName@RMMFDevSoundProxy@@QAEABVTDesC16@@H@Z @ 17 NONAME ; class TDesC16 const & RMMFDevSoundProxy::FixedSequenceName(int)
+	?FixedSequenceCount@RMMFDevSoundProxy@@QAEHXZ @ 16 NONAME ABSENT ; int RMMFDevSoundProxy::FixedSequenceCount(void)
+	?FixedSequenceName@RMMFDevSoundProxy@@QAEABVTDesC16@@H@Z @ 17 NONAME ABSENT ; class TDesC16 const & RMMFDevSoundProxy::FixedSequenceName(int)
 	?Gain@RMMFDevSoundProxy@@QAEHXZ @ 18 NONAME ; int RMMFDevSoundProxy::Gain(void)
 	?GetPlayBalanceL@RMMFDevSoundProxy@@QAEXAAH0@Z @ 19 NONAME ; void RMMFDevSoundProxy::GetPlayBalanceL(int &, int &)
 	?GetRecordBalanceL@RMMFDevSoundProxy@@QAEXAAH0@Z @ 20 NONAME ; void RMMFDevSoundProxy::GetRecordBalanceL(int &, int &)
@@ -32,7 +32,7 @@
 	?PlayDTMFStringL@RMMFDevSoundProxy@@QAEXABVTDesC16@@@Z @ 31 NONAME ; void RMMFDevSoundProxy::PlayDTMFStringL(class TDesC16 const &)
 	?PlayData@RMMFDevSoundProxy@@QAEXXZ @ 32 NONAME ; void RMMFDevSoundProxy::PlayData(void)
 	?PlayDualToneL@RMMFDevSoundProxy@@QAEXHHABVTTimeIntervalMicroSeconds@@@Z @ 33 NONAME ; void RMMFDevSoundProxy::PlayDualToneL(int, int, class TTimeIntervalMicroSeconds const &)
-	?PlayFixedSequenceL@RMMFDevSoundProxy@@QAEXH@Z @ 34 NONAME ; void RMMFDevSoundProxy::PlayFixedSequenceL(int)
+	?PlayFixedSequenceL@RMMFDevSoundProxy@@QAEXH@Z @ 34 NONAME ABSENT ; void RMMFDevSoundProxy::PlayFixedSequenceL(int)
 	?PlayInitL@RMMFDevSoundProxy@@QAEXXZ @ 35 NONAME ; void RMMFDevSoundProxy::PlayInitL(void)
 	?PlayToneL@RMMFDevSoundProxy@@QAEXHABVTTimeIntervalMicroSeconds@@@Z @ 36 NONAME ; void RMMFDevSoundProxy::PlayToneL(int, class TTimeIntervalMicroSeconds const &)
 	?PlayToneSequenceL@RMMFDevSoundProxy@@QAEXABVTDesC8@@@Z @ 37 NONAME ; void RMMFDevSoundProxy::PlayToneSequenceL(class TDesC8 const &)
@@ -61,5 +61,5 @@
 	?SetClientThreadInfo@RMMFDevSoundProxy@@QAEHAAVTThreadId@@@Z @ 60 NONAME ; int RMMFDevSoundProxy::SetClientThreadInfo(class TThreadId &)
 	?IsResumeSupported@RMMFDevSoundProxy@@QAEHXZ @ 61 NONAME ; int RMMFDevSoundProxy::IsResumeSupported(void)
 	?Resume@RMMFDevSoundProxy@@QAEHXZ @ 62 NONAME ; int RMMFDevSoundProxy::Resume(void)
-	?BufferToBeFilledData@RMMFDevSoundProxy@@QAEHHAAV?$TPckgBuf@VTMMFDevSoundProxyHwBuf@@@@@Z @ 63  NONAME ; int RMMFDevSoundProxy::BufferToBeFilledData(int, class TPckgBuf<class TMMFDevSoundProxyHwBuf> &)
+	?BufferToBeFilledData@RMMFDevSoundProxy@@QAEHHAAV?$TPckgBuf@VTMMFDevSoundProxyHwBuf@@@@@Z @ 63 NONAME ; int RMMFDevSoundProxy::BufferToBeFilledData(int, class TPckgBuf<class TMMFDevSoundProxyHwBuf> &)
 
--- a/devsound/a3fdevsound/bwins/mmfaudioserver.def	Tue Nov 02 12:13:59 2010 +0000
+++ b/devsound/a3fdevsound/bwins/mmfaudioserver.def	Tue Nov 02 12:28:51 2010 +0000
@@ -2,4 +2,5 @@
 	?NewL@CAudioSvrLoader@@SAPAV1@XZ @ 1 NONAME ; class CAudioSvrLoader * CAudioSvrLoader::NewL(void)
 	?KDevsoundServerPriority@@3HB @ 2 NONAME ABSENT ; int const KDevsoundServerPriority
 	?KDevsoundSvrPriority@@3W4TThreadPriority@@B @ 3 NONAME ; enum TThreadPriority const KDevsoundSvrPriority
+	?NewL@CAudioSvrLoader@@SAPAV1@H@Z @ 4 NONAME ; class CAudioSvrLoader * CAudioSvrLoader::NewL(int)
 
--- a/devsound/a3fdevsound/bwins/mmfdevsoundadaptor.def	Tue Nov 02 12:13:59 2010 +0000
+++ b/devsound/a3fdevsound/bwins/mmfdevsoundadaptor.def	Tue Nov 02 12:28:51 2010 +0000
@@ -7,8 +7,8 @@
 	?Config@CMMFDevSoundAdaptation@@QBE?AVTMMFCapabilities@@XZ @ 6 NONAME ; class TMMFCapabilities CMMFDevSoundAdaptation::Config(void) const
 	?CustomInterface@CMMFDevSoundAdaptation@@QAEPAXVTUid@@@Z @ 7 NONAME ; void * CMMFDevSoundAdaptation::CustomInterface(class TUid)
 	?EmptyBuffers@CMMFDevSoundAdaptation@@QAEHXZ @ 8 NONAME ; int CMMFDevSoundAdaptation::EmptyBuffers(void)
-	?FixedSequenceCount@CMMFDevSoundAdaptation@@QAEHXZ @ 9 NONAME ; int CMMFDevSoundAdaptation::FixedSequenceCount(void)
-	?FixedSequenceName@CMMFDevSoundAdaptation@@QAEABVTDesC16@@H@Z @ 10 NONAME ; class TDesC16 const & CMMFDevSoundAdaptation::FixedSequenceName(int)
+	?FixedSequenceCount@CMMFDevSoundAdaptation@@QAEHXZ @ 9 NONAME ABSENT ; int CMMFDevSoundAdaptation::FixedSequenceCount(void)
+	?FixedSequenceName@CMMFDevSoundAdaptation@@QAEABVTDesC16@@H@Z @ 10 NONAME ABSENT ; class TDesC16 const & CMMFDevSoundAdaptation::FixedSequenceName(int)
 	?Gain@CMMFDevSoundAdaptation@@QAEHXZ @ 11 NONAME ; int CMMFDevSoundAdaptation::Gain(void)
 	?GetPlayBalanceL@CMMFDevSoundAdaptation@@QAEXAAH0@Z @ 12 NONAME ; void CMMFDevSoundAdaptation::GetPlayBalanceL(int &, int &)
 	?GetRecordBalanceL@CMMFDevSoundAdaptation@@QAEXAAH0@Z @ 13 NONAME ; void CMMFDevSoundAdaptation::GetRecordBalanceL(int &, int &)
@@ -24,7 +24,7 @@
 	?PlayDTMFStringL@CMMFDevSoundAdaptation@@QAEXABVTDesC16@@@Z @ 23 NONAME ; void CMMFDevSoundAdaptation::PlayDTMFStringL(class TDesC16 const &)
 	?PlayData@CMMFDevSoundAdaptation@@QAEXXZ @ 24 NONAME ; void CMMFDevSoundAdaptation::PlayData(void)
 	?PlayDualToneL@CMMFDevSoundAdaptation@@QAEXHHABVTTimeIntervalMicroSeconds@@@Z @ 25 NONAME ; void CMMFDevSoundAdaptation::PlayDualToneL(int, int, class TTimeIntervalMicroSeconds const &)
-	?PlayFixedSequenceL@CMMFDevSoundAdaptation@@QAEXH@Z @ 26 NONAME ; void CMMFDevSoundAdaptation::PlayFixedSequenceL(int)
+	?PlayFixedSequenceL@CMMFDevSoundAdaptation@@QAEXH@Z @ 26 NONAME ABSENT ; void CMMFDevSoundAdaptation::PlayFixedSequenceL(int)
 	?PlayInitL@CMMFDevSoundAdaptation@@QAEXXZ @ 27 NONAME ; void CMMFDevSoundAdaptation::PlayInitL(void)
 	?PlayToneL@CMMFDevSoundAdaptation@@QAEXHABVTTimeIntervalMicroSeconds@@@Z @ 28 NONAME ; void CMMFDevSoundAdaptation::PlayToneL(int, class TTimeIntervalMicroSeconds const &)
 	?PlayToneSequenceL@CMMFDevSoundAdaptation@@QAEXABVTDesC8@@@Z @ 29 NONAME ; void CMMFDevSoundAdaptation::PlayToneSequenceL(class TDesC8 const &)
@@ -34,7 +34,7 @@
 	?RecordInitL@CMMFDevSoundAdaptation@@QAEXXZ @ 33 NONAME ; void CMMFDevSoundAdaptation::RecordInitL(void)
 	?SamplesPlayed@CMMFDevSoundAdaptation@@QAEHXZ @ 34 NONAME ; int CMMFDevSoundAdaptation::SamplesPlayed(void)
 	?SamplesRecorded@CMMFDevSoundAdaptation@@QAEHXZ @ 35 NONAME ; int CMMFDevSoundAdaptation::SamplesRecorded(void)
-	?SetClientConfig@CMMFDevSoundAdaptation@@QAEHABVTProcessId@@@Z @ 36  NONAME ; int CMMFDevSoundAdaptation::SetClientConfig(class TProcessId const &)
+	?SetClientConfig@CMMFDevSoundAdaptation@@QAEHABVTProcessId@@@Z @ 36 NONAME ; int CMMFDevSoundAdaptation::SetClientConfig(class TProcessId const &)
 	?SetConfigL@CMMFDevSoundAdaptation@@QAEXABVTMMFCapabilities@@@Z @ 37 NONAME ; void CMMFDevSoundAdaptation::SetConfigL(class TMMFCapabilities const &)
 	?SetDTMFLengths@CMMFDevSoundAdaptation@@QAEHAAVTTimeIntervalMicroSeconds32@@00@Z @ 38 NONAME ; int CMMFDevSoundAdaptation::SetDTMFLengths(class TTimeIntervalMicroSeconds32 &, class TTimeIntervalMicroSeconds32 &, class TTimeIntervalMicroSeconds32 &)
 	?SetGain@CMMFDevSoundAdaptation@@QAEHHAAH@Z @ 39 NONAME ; int CMMFDevSoundAdaptation::SetGain(int, int &)
@@ -56,5 +56,5 @@
 	?BufferErrorEvent@CMMFDevSoundAdaptation@@QAEXXZ @ 55 NONAME ; void CMMFDevSoundAdaptation::BufferErrorEvent(void)
 	?ProcessingError@CMMFDevSoundAdaptation@@QAEHAAH@Z @ 56 NONAME ; int CMMFDevSoundAdaptation::ProcessingError(int &)
 	?RollbackAdaptorActiveStateToBeforeCommit@CMMFDevSoundAdaptation@@QAEXXZ @ 57 NONAME ; void CMMFDevSoundAdaptation::RollbackAdaptorActiveStateToBeforeCommit(void)
-	?SetClientConfig@CMMFDevSoundAdaptation@@QAEHABVTProcessId@@0@Z @ 58  NONAME ; int CMMFDevSoundAdaptation::SetClientConfig(class TProcessId const &, class TProcessId const &)
+	?SetClientConfig@CMMFDevSoundAdaptation@@QAEHABVTProcessId@@0@Z @ 58 NONAME ; int CMMFDevSoundAdaptation::SetClientConfig(class TProcessId const &, class TProcessId const &)
 
--- a/devsound/a3fdevsound/eabi/MmfDevSoundProxy.def	Tue Nov 02 12:13:59 2010 +0000
+++ b/devsound/a3fdevsound/eabi/MmfDevSoundProxy.def	Tue Nov 02 12:28:51 2010 +0000
@@ -22,7 +22,7 @@
 	_ZN17RMMFDevSoundProxy16RegisterAsClientE4TUidRK6TDesC8 @ 21 NONAME
 	_ZN17RMMFDevSoundProxy17CustomCommandSyncERK8TPckgBufI22TMMFMessageDestinationEiRK6TDesC8S7_ @ 22 NONAME
 	_ZN17RMMFDevSoundProxy17CustomCommandSyncERK8TPckgBufI22TMMFMessageDestinationEiRK6TDesC8S7_R5TDes8 @ 23 NONAME
-	_ZN17RMMFDevSoundProxy17FixedSequenceNameEi @ 24 NONAME
+	_ZN17RMMFDevSoundProxy17FixedSequenceNameEi @ 24 NONAME ABSENT
 	_ZN17RMMFDevSoundProxy17GetRecordBalanceLERiS0_ @ 25 NONAME
 	_ZN17RMMFDevSoundProxy17PlayToneSequenceLERK6TDesC8 @ 26 NONAME
 	_ZN17RMMFDevSoundProxy17SetRecordBalanceLEii @ 27 NONAME
@@ -30,8 +30,8 @@
 	_ZN17RMMFDevSoundProxy18AsyncCustomCommandE4TUidR14TRequestStatusRK6TDesC8S5_P5TDes8 @ 29 NONAME
 	_ZN17RMMFDevSoundProxy18CustomCommandAsyncERK8TPckgBufI22TMMFMessageDestinationEiRK6TDesC8S7_R14TRequestStatus @ 30 NONAME
 	_ZN17RMMFDevSoundProxy18CustomCommandAsyncERK8TPckgBufI22TMMFMessageDestinationEiRK6TDesC8S7_R5TDes8R14TRequestStatus @ 31 NONAME
-	_ZN17RMMFDevSoundProxy18FixedSequenceCountEv @ 32 NONAME
-	_ZN17RMMFDevSoundProxy18PlayFixedSequenceLEi @ 33 NONAME
+	_ZN17RMMFDevSoundProxy18FixedSequenceCountEv @ 32 NONAME ABSENT
+	_ZN17RMMFDevSoundProxy18PlayFixedSequenceLEi @ 33 NONAME ABSENT
 	_ZN17RMMFDevSoundProxy19SetPrioritySettingsERK20TMMFPrioritySettings @ 34 NONAME
 	_ZN17RMMFDevSoundProxy20BufferToBeFilledDataER8TPckgBufI22TMMFDevSoundProxyHwBufE @ 35 NONAME ABSENT
 	_ZN17RMMFDevSoundProxy21BufferToBeEmptiedDataER8TPckgBufI22TMMFDevSoundProxyHwBufE @ 36 NONAME
--- a/devsound/a3fdevsound/eabi/mmfaudioserver.def	Tue Nov 02 12:13:59 2010 +0000
+++ b/devsound/a3fdevsound/eabi/mmfaudioserver.def	Tue Nov 02 12:28:51 2010 +0000
@@ -13,4 +13,5 @@
 	_ZTV22CMMFAudioServerSession @ 12 NONAME
 	_ZTV30CStartAndMonitorDevSoundThread @ 13 NONAME
 	_ZTVN15CMMFAudioServer25CDelayAudioServerShutDownE @ 14 NONAME
+	_ZN15CAudioSvrLoader4NewLEi @ 15 NONAME
 
--- a/devsound/a3fdevsound/eabi/mmfdevsoundadaptor.def	Tue Nov 02 12:13:59 2010 +0000
+++ b/devsound/a3fdevsound/eabi/mmfdevsoundadaptor.def	Tue Nov 02 12:28:51 2010 +0000
@@ -20,12 +20,12 @@
 	_ZN22CMMFDevSoundAdaptation15SetClientConfigERK16TMMFClientConfig @ 19 NONAME ABSENT
 	_ZN22CMMFDevSoundAdaptation15SetPlayBalanceLEiiRi @ 20 NONAME
 	_ZN22CMMFDevSoundAdaptation16CancelInitializeEv @ 21 NONAME
-	_ZN22CMMFDevSoundAdaptation17FixedSequenceNameEi @ 22 NONAME
+	_ZN22CMMFDevSoundAdaptation17FixedSequenceNameEi @ 22 NONAME ABSENT
 	_ZN22CMMFDevSoundAdaptation17GetRecordBalanceLERiS0_ @ 23 NONAME
 	_ZN22CMMFDevSoundAdaptation17PlayToneSequenceLERK6TDesC8 @ 24 NONAME
 	_ZN22CMMFDevSoundAdaptation17SetRecordBalanceLEiiRi @ 25 NONAME
-	_ZN22CMMFDevSoundAdaptation18FixedSequenceCountEv @ 26 NONAME
-	_ZN22CMMFDevSoundAdaptation18PlayFixedSequenceLEi @ 27 NONAME
+	_ZN22CMMFDevSoundAdaptation18FixedSequenceCountEv @ 26 NONAME ABSENT
+	_ZN22CMMFDevSoundAdaptation18PlayFixedSequenceLEi @ 27 NONAME ABSENT
 	_ZN22CMMFDevSoundAdaptation19SetPrioritySettingsERK20TMMFPrioritySettings @ 28 NONAME
 	_ZN22CMMFDevSoundAdaptation26ProcessingFinishedReceivedERi @ 29 NONAME
 	_ZN22CMMFDevSoundAdaptation4GainEv @ 30 NONAME
--- a/devsound/a3fdevsound/inc/mmfaudioserverinterface.h	Tue Nov 02 12:13:59 2010 +0000
+++ b/devsound/a3fdevsound/inc/mmfaudioserverinterface.h	Tue Nov 02 12:28:51 2010 +0000
@@ -42,9 +42,11 @@
 	/**
 	Constructs and returns a pointer to a new CAudioSvrLoader object.
 	Leaves on failure. 
+	@param aStayOpen optional parameter to control whether or not the server should stay open permanently, defaults to EFalse
 	@return CAudioSvrLoader* - on success, pointer to new class instance. 
 	*/	
 	IMPORT_C static CAudioSvrLoader* NewL();
+	IMPORT_C static CAudioSvrLoader* NewL(TBool aStayOpen);
 	/**
 	Destructor.
 	*/
--- a/devsound/a3fdevsound/src/devsoundadaptor/mmfdevsoundadaptation.cpp	Tue Nov 02 12:13:59 2010 +0000
+++ b/devsound/a3fdevsound/src/devsoundadaptor/mmfdevsoundadaptation.cpp	Tue Nov 02 12:28:51 2010 +0000
@@ -578,23 +578,6 @@
 	}
 
 // -----------------------------------------------------------------------------
-// CMMFDevSoundAdaptation::PlayFixedSequenceL
-// Initializes audio device and start playing the specified pre-defined tone
-// sequence.
-// Leaves on failure.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMMFDevSoundAdaptation::PlayFixedSequenceL(
-								TInt aSequenceNumber)
-	{
-	DP_CONTEXT(CMMFDevSoundAdaptation::PlayFixedSequenceL *CD1*, CtxDevSound, DPLOCAL);
-	DP_IN();
-	iBody->PlayFixedSequenceL(aSequenceNumber);
-	DP_OUT();
-	}
-
-// -----------------------------------------------------------------------------
 // CMMFDevSoundAdaptation::SetToneRepeats
 // Defines the number of times the audio is to be repeated during the tone
 // playback operation. A period of silence can follow each playing of tone.
@@ -680,38 +663,6 @@
 	}
 
 // -----------------------------------------------------------------------------
-// CMMFDevSoundAdaptation::FixedSequenceCount
-// Returns the number of available pre-defined tone sequences.
-// This is the number of fixed sequence supported by DevSound by default.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CMMFDevSoundAdaptation::FixedSequenceCount()
-	{
-	DP_CONTEXT(CMMFDevSoundAdaptation::FixedSequenceCount *CD1*, CtxDevSound, DPLOCAL);
-	DP_IN();
-	TInt retVal = iBody->FixedSequenceCount();
-	DP0_RET(retVal, "%d");			
-	}
-
-// -----------------------------------------------------------------------------
-// CMMFDevSoundAdaptation::FixedSequenceName
-// Returns the name assigned to a specific pre-defined tone sequence.
-// This is the number of fixed sequence supported by DevSound by default.
-// The function raises a panic if sequence number specified invalid.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CMMFDevSoundAdaptation::FixedSequenceName(
-								TInt aSequenceNumber)
-	{
-	DP_CONTEXT(CMMFDevSoundAdaptation::FixedSequenceName *CD1*, CtxDevSound, DPLOCAL);
-	DP_IN();
-	DP_OUT();
-	return(iBody->FixedSequenceName(aSequenceNumber));						
-	}
-
-// -----------------------------------------------------------------------------
 // CMMFDevSoundAdaptation::GetSupportedInputDataTypesL
 // see sounddevice.h
 // (other items were commented in a header).
--- a/devsound/a3fdevsound/src/devsoundadaptor/mmfdevsoundadaptation.h	Tue Nov 02 12:13:59 2010 +0000
+++ b/devsound/a3fdevsound/src/devsoundadaptor/mmfdevsoundadaptation.h	Tue Nov 02 12:28:51 2010 +0000
@@ -641,20 +641,6 @@
 	IMPORT_C void PlayToneSequenceL(const TDesC8& aData);
 
 	/**
-	* Initializes the audio device and starts playing the specified
-	* pre-defined tone sequence.
-	* Leaves on failure.
-	* @since
-	* @param TInt aSequenceNumber The index identifying the specific
-	*        pre-defined tone sequence. Index values are relative to zero.
-	*        This can be any value from zero to the value returned by a call
-	*        to FixedSequenceCount() - 1. The function raises a panic if the
-	*        sequence number is not within this range.
-	* @return void
-	*/
-	IMPORT_C void PlayFixedSequenceL(TInt aSequenceNumber);
-
-	/**
 	* Defines the number of times the audio is to be repeated during the
 	* tone playback operation. A period of silence can follow each playing
 	* of a tone. The tone playing can be repeated indefinitely
@@ -728,32 +714,6 @@
 	IMPORT_C TAny* CustomInterface(TUid aInterfaceId);
 
 	/**
-	* Returns the number of available pre-defined tone sequences.
-	* This is the number of fixed sequence supported by DevSound by default.
-	* @since
-	* @return TInt  The fixed sequence count. This value is implementation
-	*        dependent.
-	*/
-	IMPORT_C TInt FixedSequenceCount();
-
-	/**
-	* Returns the name assigned to a specific pre-defined tone sequence.
-	* This is the number of the fixed sequence supported by DevSound by
-	* default.
-	* The function raises a panic if sequence number specified is invalid.
-	* @since
-	* @param TInt aSequenceNumber The index identifying the specific
-	*        pre-defined tone sequence. Index values are relative to zero.
-	*        This can be any value from zero to the value returned by a call
-	*        to CMdaAudioPlayerUtility::FixedSequenceCount() - 1. The
-	*        function raises a panic if sequence number is not within this
-	*        range.
-	* @return const TDesC & A reference to a Descriptor containing the fixed
-	*        sequence name indexed by aSequenceNumber.
-	*/
-	IMPORT_C const TDesC& FixedSequenceName(TInt aSequenceNumber);
-
-	/**
 	* Returns a list of the supported input datatypes that can be sent to
 	* DevSound for playing audio. The datatypes returned are those that the
 	* DevSound supports given the priority settings passed in
--- a/devsound/a3fdevsound/src/devsoundadaptor/mmfdevsoundadaptationbody.cpp	Tue Nov 02 12:13:59 2010 +0000
+++ b/devsound/a3fdevsound/src/devsoundadaptor/mmfdevsoundadaptationbody.cpp	Tue Nov 02 12:28:51 2010 +0000
@@ -799,23 +799,6 @@
 	}
 
 // -----------------------------------------------------------------------------
-// CMMFDevSoundAdaptation::CBody::PlayFixedSequenceL
-// Initializes audio device and start playing the specified pre-defined tone
-// sequence.
-//
-// Leaves on failure.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CMMFDevSoundAdaptation::CBody::PlayFixedSequenceL(TInt /*aSequenceNumber*/)
-	{
-	DP_CONTEXT(CMMFDevSoundAdaptation::CBody::PlayFixedSequenceL *CD1*, CtxDevSound, DPLOCAL);
-	DP_IN();
-	User::Leave(KErrNotSupported);
-	DP_OUT();
-	}
-
-// -----------------------------------------------------------------------------
 // CMMFDevSoundAdaptation::CBody::SetToneRepeats
 // Defines the number of times the audio is to be repeated during the tone
 // playback operation. A period of silence can follow each playing of tone.
@@ -932,36 +915,6 @@
 	}
 
 // -----------------------------------------------------------------------------
-// CMMFDevSoundAdaptation::CBody::FixedSequenceCount
-// Returns the number of available pre-defined tone sequences.
-// This is the number of fixed sequence supported by DevSound by default.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TInt CMMFDevSoundAdaptation::CBody::FixedSequenceCount()
-	{
-	DP_CONTEXT(CMMFDevSoundAdaptation::CBody::FixedSequenceCount *CD1*, CtxDevSound, DPLOCAL);
-	DP_IN();
-	DP0_RET(0, "%d");
-	}
-
-// -----------------------------------------------------------------------------
-// CMMFDevSoundAdaptation::CBody::FixedSequenceName
-// Returns the name assigned to a specific pre-defined tone sequence.
-// This is the number of fixed sequence supported by DevSound by default.
-// The function raises a panic if sequence number specified invalid.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-const TDesC& CMMFDevSoundAdaptation::CBody::FixedSequenceName(
-								TInt /*aSequenceNumber*/)
-	{
-	DP_CONTEXT(CMMFDevSoundAdaptation::CBody::FixedSequenceName *CD1*, CtxDevSound, DPLOCAL);
-	DP_IN();
-	DP0_RET(KNullDesC, "");
-	}
-
-// -----------------------------------------------------------------------------
 // CMMFDevSoundAdaptation::CBody::GetSupportedInputDataTypesL
 // @see sounddevice.h
 // (other items were commented in a header).
--- a/devsound/a3fdevsound/src/devsoundadaptor/mmfdevsoundadaptationbody.h	Tue Nov 02 12:13:59 2010 +0000
+++ b/devsound/a3fdevsound/src/devsoundadaptor/mmfdevsoundadaptationbody.h	Tue Nov 02 12:28:51 2010 +0000
@@ -420,20 +420,6 @@
 	void PlayToneSequenceL(const TDesC8& aData);
 
 	/**
-	* Initializes the audio device and starts playing the specified
-	* pre-defined tone sequence.
-	* Leaves on failure.
-	* @since
-	* @param TInt aSequenceNumber The index identifying the specific
-	*        pre-defined tone sequence. Index values are relative to zero.
-	*        This can be any value from zero to the value returned by a call
-	*        to FixedSequenceCount() - 1. The function raises a panic if the
-	*        sequence number is not within this range.
-	* @return void
-	*/
-	void PlayFixedSequenceL(TInt aSequenceNumber);
-
-	/**
 	* Defines the number of times the audio is to be repeated during the
 	* tone playback operation. A period of silence can follow each playing
 	* of a tone. The tone playing can be repeated indefinitely
@@ -506,32 +492,6 @@
 	TAny* CustomInterface(TUid aInterfaceId);
 
 	/**
-	* Returns the number of available pre-defined tone sequences.
-	* This is the number of fixed sequence supported by DevSound by default.
-	* @since
-	* @return TInt  The fixed sequence count. This value is implementation
-	*        dependent.
-	*/
-	TInt FixedSequenceCount();
-
-	/**
-	* Returns the name assigned to a specific pre-defined tone sequence.
-	* This is the number of the fixed sequence supported by DevSound by
-	* default.
-	* The function raises a panic if sequence number specified is invalid.
-	* @since
-	* @param TInt aSequenceNumber The index identifying the specific
-	*        pre-defined tone sequence. Index values are relative to zero.
-	*        This can be any value from zero to the value returned by a call
-	*        to CMdaAudioPlayerUtility::FixedSequenceCount() - 1. The
-	*        function raises a panic if sequence number is not within this
-	*        range.
-	* @return const TDesC & A reference to a Descriptor containing the fixed
-	*        sequence name indexed by aSequenceNumber.
-	*/
-	const TDesC& FixedSequenceName(TInt aSequenceNumber);
-
-	/**
 	* Returns a list of the supported input datatypes that can be sent to
 	* DevSound for playing audio. The datatypes returned are those that the
 	* DevSound supports given the priority settings passed in
--- a/devsound/a3fdevsound/src/mmfaudioserver/mmfaudioserver.cpp	Tue Nov 02 12:13:59 2010 +0000
+++ b/devsound/a3fdevsound/src/mmfaudioserver/mmfaudioserver.cpp	Tue Nov 02 12:28:51 2010 +0000
@@ -32,8 +32,12 @@
 #ifdef _DEBUG
 #include "e32debug.h"
 #define SYMBIAN_DEBPRN0(str)    RDebug::Print(str, this)
+#define SYMBIAN_DEBPRN1(str, val1)          RDebug::Print(str, this, val1)
+#define SYMBIAN_DEBPRN2(str, val1, val2)    RDebug::Print(str, this, val1, val2)
 #else
 #define SYMBIAN_DEBPRN0(str)
+#define SYMBIAN_DEBPRN1(str, val1)
+#define SYMBIAN_DEBPRN2(str, val1, val2)
 #endif //_DEBUG
 
 
@@ -50,19 +54,22 @@
 
 // ============================ MEMBER FUNCTIONS ===============================
 
+
 // -----------------------------------------------------------------------------
 // CMMFAudioServer::NewL
 // Two-phased constructor.
+// @param aStayOpen whether or not the server should stay open permanently
 // -----------------------------------------------------------------------------
 //
-CMMFAudioServer* CMMFAudioServer::NewL()
-	{
-	CMMFAudioServer* self = new(ELeave) CMMFAudioServer();
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop(self);
-	return self;
-	}
+CMMFAudioServer* CMMFAudioServer::NewL(TBool aStayOpen)
+    {
+    
+    CMMFAudioServer* self = new(ELeave) CMMFAudioServer(aStayOpen);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
 
 // -----------------------------------------------------------------------------
 // CMMFAudioServer::CMMFAudioServer
@@ -70,8 +77,9 @@
 // might leave.
 // -----------------------------------------------------------------------------
 //
-CMMFAudioServer::CMMFAudioServer()
-	: CMmfIpcServer(EPriorityStandard)
+CMMFAudioServer::CMMFAudioServer(TBool aStayOpen)
+	: CMmfIpcServer(EPriorityStandard), iStayOpen (aStayOpen)
+
 	{
 	}
 
@@ -81,19 +89,22 @@
 // -----------------------------------------------------------------------------
 //
 void CMMFAudioServer::ConstructL()
-	{
+ 	{
 	SYMBIAN_DEBPRN0(_L("CMMFAudioServer[0x%x]::ConstructL - enter"));
-
+	
 	SetPinClientDescriptors(ETrue);
 	// Call base class to Start server
 	StartL(KAudioServerName);
 
 	iFourCCConvertor = CFourCCConvertor::NewL();
-	iDelayAudioServerShutDown = CDelayAudioServerShutDown::NewL();
+	
+	if(!iStayOpen)
+	    {
+	    iDelayAudioServerShutDown = CDelayAudioServerShutDown::NewL();
+	    }
 
 	iFactory = CMMFAudioServerFactory::NewL();
 	iFactory->StartL(*this);	
-
 	SYMBIAN_DEBPRN0(_L("CMMFAudioServer[0x%x]::ConstructL - exit"));
 	}
 
@@ -191,16 +202,19 @@
 //
 void CMMFAudioServer::IncrementDevSoundCount()
 	{
-	iDevSoundCount++;
-	//in the case we started the shutdown due to no more DevSound
-	if(iDevSoundCount)
-		{
-		ASSERT(iDelayAudioServerShutDown);
-		if (iDelayAudioServerShutDown)
-			{
-			iDelayAudioServerShutDown->Cancel();
-			}
-		}
+    if(!iStayOpen)
+        {
+        iDevSoundCount++;
+        //in the case we started the shutdown due to no more DevSound
+        if(iDevSoundCount)
+            {
+            ASSERT(iDelayAudioServerShutDown);
+            if (iDelayAudioServerShutDown)
+                {
+                iDelayAudioServerShutDown->Cancel();
+                }
+            }
+        }
 	}
 
 // -----------------------------------------------------------------------------
@@ -211,15 +225,22 @@
 //
 void CMMFAudioServer::DecrementDevSoundCount()
 	{
-	iDevSoundCount--;
-	if (iDevSoundCount == 0)
-		{
-		ASSERT(iDelayAudioServerShutDown);
-		if (iDelayAudioServerShutDown)
-			{
-			iDelayAudioServerShutDown->SetDelay(TTimeIntervalMicroSeconds32(KAudioServerShutDownDelay));
-			}
-		}
+
+    if(!iStayOpen)
+        {
+        iDevSoundCount--;
+        //dont shut down if iStayOpen is set
+        if (iDevSoundCount == 0)
+            {
+            
+            ASSERT(iDelayAudioServerShutDown);
+            if (iDelayAudioServerShutDown)
+                {
+                SYMBIAN_DEBPRN0(_L("CMMFAudioServer[0x%x]::DecrementDevSoundCount - shutting down server"));
+                iDelayAudioServerShutDown->SetDelay(TTimeIntervalMicroSeconds32(KAudioServerShutDownDelay));
+                }
+            }
+        }
 	}
 
 // -----------------------------------------------------------------------------
--- a/devsound/a3fdevsound/src/mmfaudioserver/mmfaudioserver.h	Tue Nov 02 12:13:59 2010 +0000
+++ b/devsound/a3fdevsound/src/mmfaudioserver/mmfaudioserver.h	Tue Nov 02 12:28:51 2010 +0000
@@ -59,13 +59,14 @@
 class CMMFAudioServer : public CMmfIpcServer, public MGlobalProperties
 	{
 public:
-
+	
 	/**
-		Constructs, and returns a pointer to, a new CMMFAudioServer
-		object.
-		@return CMMFAudioServer* A pointer to newly created object.
-	*/
-	static CMMFAudioServer* NewL();
+        Constructs, and returns a pointer to, a new CMMFAudioServer
+        object.
+        @param aStayOpen whether or not the server should stay open permanently
+        @return CMMFAudioServer* A pointer to newly created object.
+    */
+	static CMMFAudioServer* NewL(TBool aStayOpen);
 
 	/**
 		Destructor.
@@ -167,14 +168,12 @@
 		void ConstructL();
 
 		RTimer iShutDownTimer;
+		
 		};
 
 private:
-
 	
-	//Default constructor.
-	
-	CMMFAudioServer();
+	CMMFAudioServer(TBool aStayOpen);
 
 	
 	//Second phase constructor.
@@ -194,6 +193,8 @@
 	mutable RPointerArray<CStartAndMonitorDevSoundThread> iDevSoundServList;
 	
 	CMMFAudioServerFactory* iFactory;
+	//if the server is to stay open permanently
+	TBool iStayOpen;
 	};
 
 /**
--- a/devsound/a3fdevsound/src/mmfaudioserver/mmfaudioserverinterface.cpp	Tue Nov 02 12:13:59 2010 +0000
+++ b/devsound/a3fdevsound/src/mmfaudioserver/mmfaudioserverinterface.cpp	Tue Nov 02 12:28:51 2010 +0000
@@ -29,14 +29,24 @@
 //
 EXPORT_C CAudioSvrLoader* CAudioSvrLoader::NewL()
 	{
-	CAudioSvrLoaderImpl* self = new(ELeave) CAudioSvrLoaderImpl();
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop(self);
-	return self;
+    return CAudioSvrLoader::NewL(EFalse);
 	}
 
 // -----------------------------------------------------------------------------
+// CAudioSvrLoader::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CAudioSvrLoader* CAudioSvrLoader::NewL(TBool aStayOpen)
+    {
+    CAudioSvrLoaderImpl* self = new(ELeave) CAudioSvrLoaderImpl();
+    CleanupStack::PushL(self);
+    self->ConstructL(aStayOpen);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
 // CAudioSvrLoader::CAudioSvrLoader
 // C++ default constructor can NOT contain any code, that
 // might leave.
@@ -87,9 +97,9 @@
 // (other items were commented in a header).
 // -----------------------------------------------------------------------------
 //
- void CAudioSvrLoaderImpl::ConstructL()
+ void CAudioSvrLoaderImpl::ConstructL(TBool aStayOpen)
 	{
-	iServer = CMMFAudioServer::NewL();
+	iServer = CMMFAudioServer::NewL(aStayOpen);
 	}
 
 
--- a/devsound/a3fdevsound/src/mmfaudioserver/mmfaudioserverinterfaceimpl.h	Tue Nov 02 12:13:59 2010 +0000
+++ b/devsound/a3fdevsound/src/mmfaudioserver/mmfaudioserverinterfaceimpl.h	Tue Nov 02 12:28:51 2010 +0000
@@ -34,7 +34,7 @@
 public:
 	~CAudioSvrLoaderImpl();
 protected:
-	void ConstructL();
+	void ConstructL(TBool aStayOpen);
 	CAudioSvrLoaderImpl();
 private:
 	
--- a/devsound/a3fdevsound/src/mmfdevsoundproxy/mmfdevsoundproxy.cpp	Tue Nov 02 12:13:59 2010 +0000
+++ b/devsound/a3fdevsound/src/mmfdevsoundproxy/mmfdevsoundproxy.cpp	Tue Nov 02 12:28:51 2010 +0000
@@ -856,33 +856,6 @@
 	}
 
 // -----------------------------------------------------------------------------
-// RMMFDevSoundProxy::PlayFixedSequenceL
-// Plays the fixed sequence.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RMMFDevSoundProxy::PlayFixedSequenceL(TInt aSequenceNumber)
-	{
-	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayFixedSequenceL - Enter"));
-	if(iState==ETonePlaying)
-		{
-		SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayFixedSequenceL - Exit"));
-		return;
-		}
-			
-	if (!iDevSoundObserver || iState!=EInitialized)
-		{
-		User::Leave(KErrNotReady);
-		}
-
-	TPckgBuf<TInt> seqNum(aSequenceNumber);
-	User::LeaveIfError(SendReceive(EMMFDevSoundProxyPlayFixedSequence, iDestinationPckg, seqNum));
-	iState = ETonePlaying;
-	iToneMode = EFixedSequence;
-	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayFixedSequenceL - Exit"));
-	}
-
-// -----------------------------------------------------------------------------
 // RMMFDevSoundProxy::SetDTMFLengths
 // Set attributes for playing DTMF String.
 // (other items were commented in a header).
@@ -1102,20 +1075,6 @@
 	}
 
 // -----------------------------------------------------------------------------
-// RMMFDevSoundProxy::FixedSequenceName
-// Returns the name of fixed sequence for a given sequence number.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& RMMFDevSoundProxy::FixedSequenceName(TInt /*aSequenceNumber*/)
-	{
-	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::FixedSequenceName - Enter"));
-	_LIT(KNullDesC, "");
-	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::FixedSequenceName - Exit"));
-	return KNullDesC;
-	}
-
-// -----------------------------------------------------------------------------
 // RMMFDevSoundProxy::CustomInterface
 // Returns a pointer to CustomInterface object.
 // (other items were commented in a header).
@@ -1145,25 +1104,6 @@
 	}
 	
 // -----------------------------------------------------------------------------
-// RMMFDevSoundProxy::FixedSequenceCount
-// Returns the number of fixed sequences supported by DevSound.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RMMFDevSoundProxy::FixedSequenceCount()
-	{
-	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::FixedSequenceCount - Enter"));
-	TPckgBuf<TInt> fixSeqCountPckg;
-	SendReceiveResult(EMMFDevSoundProxyFixedSequenceCount,
-					iDestinationPckg,
-					KNullDesC8,
-					fixSeqCountPckg);
-
-	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::FixedSequenceCount - Exit"));
-	return fixSeqCountPckg();
-	}
-
-// -----------------------------------------------------------------------------
 // RMMFDevSoundProxy::BufferToBeFilledData
 // Returns data buffer for playback.
 // -----------------------------------------------------------------------------
--- a/devsound/a3fdevsound/src/mmfdevsoundproxy/mmfdevsoundproxy.h	Tue Nov 02 12:13:59 2010 +0000
+++ b/devsound/a3fdevsound/src/mmfdevsoundproxy/mmfdevsoundproxy.h	Tue Nov 02 12:28:51 2010 +0000
@@ -423,20 +423,6 @@
 	IMPORT_C void PlayToneSequenceL(const TDesC8& aData);
 
 	/**
-	* Initializes the audio device and starts playing the specified
-	* pre-defined tone sequence.
-	* Leaves on failure.
-	* @since 
-	* @param TInt aSequenceNumber The index identifying the specific
-	*        pre-defined tone sequence. Index values are relative to zero.
-	*        This can be any value from zero to the value returned by a call
-	*        to FixedSequenceCount() - 1. The function raises a panic if the
-	*        sequence number is not within this range.
-	* @return void
-	*/
-	IMPORT_C void PlayFixedSequenceL(TInt aSequenceNumber);
-
-	/**
 	* Defines the duration of tone on, tone off and tone pause to be used
 	* during the DTMF tone playback operation.
 	* Supported only during tone playing.
@@ -572,23 +558,6 @@
 	              const TMMFPrioritySettings& aPrioritySettings);
 
 	/**
-	* Returns the name assigned to a specific pre-defined tone sequence.
-	* This is the number of the fixed sequence supported by DevSound by
-	* default.
-	* The function raises a panic if sequence number specified is invalid.
-	* @since 
-	* @param TInt aSequenceNumber The index identifying the specific
-	*        pre-defined tone sequence. Index values are relative to zero.
-	*        This can be any value from zero to the value returned by a call
-	*        to CMdaAudioPlayerUtility::FixedSequenceCount() - 1. The
-	*        function raises a panic if sequence number is not within this
-	*        range.
-	* @return const TDesC & A reference to a Descriptor containing the fixed
-	*        sequence name indexed by aSequenceNumber.
-	*/
-	IMPORT_C const TDesC& FixedSequenceName(TInt aSequenceNumber);
-
-	/**
 	* Retrieves a custom interface to the device.
 	* @since 
 	* @param TUid aInterfaceId The interface UID, defined with the custom
@@ -600,15 +569,6 @@
 	IMPORT_C TAny* CustomInterface(TUid aInterfaceId);
 
 	/**
-	* Returns the number of available pre-defined tone sequences.
-	* This is the number of fixed sequence supported by DevSound by default.
-	* @since 
-	* @return TInt  The fixed sequence count. This value is implementation
-	*        dependent.
-	*/
-	IMPORT_C TInt FixedSequenceCount();
-
-	/**
 	* Returns data buffer from the DevSound server for playback.
 	* @since 
 	* @param TMMFDevSoundProxyHwBufPckg& aSetPckg A reference to pckg to
--- a/devsound/a3fdevsound/src/mmfdevsoundserver/mmfdevsoundsession.cpp	Tue Nov 02 12:13:59 2010 +0000
+++ b/devsound/a3fdevsound/src/mmfdevsoundserver/mmfdevsoundsession.cpp	Tue Nov 02 12:28:51 2010 +0000
@@ -383,9 +383,6 @@
 			case EMMFDevSoundProxyPlayToneSequence:
 				complete = DoPlayToneSequenceL(aMessage);
 				break;
-			case EMMFDevSoundProxyPlayFixedSequence:
-				complete = DoPlayFixedSequenceL(aMessage);
-				break;
 			case EMMFDevSoundProxySetDTMFLengths:
 				complete = DoSetDTMFLengthsL(aMessage);
 				break;
@@ -413,9 +410,6 @@
 			case EMMFDevSoundProxySetPrioritySettings:
 				complete = DoSetPrioritySettingsL(aMessage);
 				break;
-			case EMMFDevSoundProxyFixedSequenceCount:
-				complete = DoFixedSequenceCountL(aMessage);
-				break;
 			case EMMFDevSoundProxyCancelInitialize:
 				complete = DoCancelInitializeL(aMessage);
 				break;
@@ -536,9 +530,6 @@
 		case EMMFDevSoundProxyPlayToneSequence:
 			DoAlreadyCompletedPlayToneSequenceL();
 			break;
-		case EMMFDevSoundProxyPlayFixedSequence:
-			DoAlreadyCompletedPlayFixedSequenceL();
-			break;
 		default:
 			User::Leave(KErrNotSupported);
 			break;
@@ -722,7 +713,6 @@
 		{
 		aMessage.Complete(err);
 		iOperationCompletePending = EFalse;
-		return ETrue;
 		}
 	else
 		{
@@ -1158,33 +1148,6 @@
 	}
 
 //
-// CMMFDevSoundSession::DoPlayFixedSequenceL
-// (other items were commented in a header).
-//
-TBool CMMFDevSoundSession::DoPlayFixedSequenceL(const RMmfIpcMessage& aMessage)
-	{
-    SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DoPlayFixedSequenceL - Enter"));
-    TPckgBuf<TInt> buf;
-	User::LeaveIfError(MessageRead(aMessage,TInt(1),buf));
-	TInt seqNum = buf();
-	iSeqNum = seqNum;
-	iAdapter->PlayFixedSequenceL(seqNum);
-	iOperationCompletePending = ETrue;
-	SYMBIAN_DEBPRN1(_L("CMMFDevSoundSession[0x%x]::DoPlayFixedSequenceL - Exit. Return value is [%d]"), ETrue);
-	return ETrue;
-	}
-
-//
-// CMMFDevSoundSession::DoAlreadyCompletedPlayFixedSequenceL
-// (other items were commented in a header).
-//
-void CMMFDevSoundSession::DoAlreadyCompletedPlayFixedSequenceL()
-	{
-	iAdapter->PlayFixedSequenceL(iSeqNum);
-	iOperationCompletePending = ETrue;
-	}
-
-//
 // CMMFDevSoundSession::DoSetDTMFLengthsL
 // (other items were commented in a header).
 //
@@ -1318,24 +1281,6 @@
 	}
 
 //
-// CMMFDevSoundSession::DoFixedSequenceCountL
-// (other items were commented in a header).
-//
-TBool CMMFDevSoundSession::DoFixedSequenceCountL(
-					const RMmfIpcMessage& aMessage)
-	{
-    SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DoFixedSequenceCountL - Enter"));
-    TPckgBuf<TInt> fixSeqCountPckg;
-	TInt fixSeqCount = iAdapter->FixedSequenceCount();
-	fixSeqCountPckg = fixSeqCount;
-
-	User::LeaveIfError(MessageWrite(aMessage,TInt(2),fixSeqCountPckg));
-    SYMBIAN_DEBPRN1(_L("CMMFDevSoundSession[0x%x]::DoFixedSequenceCountL - Exit. Return value is [%d]"), ETrue);
-	return ETrue;
-	}
-
-
-//
 // CMMFDevSoundSession::DoCopyFourCCArrayDataL
 // (other items were commented in a header).
 //
--- a/devsound/a3fdevsound/src/mmfdevsoundserver/mmfdevsoundsession.h	Tue Nov 02 12:13:59 2010 +0000
+++ b/devsound/a3fdevsound/src/mmfdevsoundserver/mmfdevsoundsession.h	Tue Nov 02 12:28:51 2010 +0000
@@ -560,26 +560,6 @@
 	void DoAlreadyCompletedPlayToneSequenceL();
 
 	/**
-		Method to service signal DevSound to play fixed sequence operation
-		request.
-		Leaves on failure.
-		@since 
-		@param const RMmfIpcMessage& aMessage A reference to message object
-			containing request attributes.
-		@return ETrue if the request is serviced completely else EFalse.
-	*/
-	TBool DoPlayFixedSequenceL(const RMmfIpcMessage& aMessage);
-
-	/**
-		Method to service signal DevSound to play fixed sequence operation
-		request that has already completed, but not finished due to a
-		pre-emption clash during its commit cycle(s).
-		Leaves on failure.
-		@return void
-	*/
-	void DoAlreadyCompletedPlayFixedSequenceL();
-
-	/**
 		Method to service signal DevSound to initilize DTMF String operation
 		request.
 		Leaves on failure.
@@ -664,26 +644,6 @@
 	TBool DoSetPrioritySettingsL(const RMmfIpcMessage& aMessage);
 
 	/**
-		Method to service the request querrying fixed sequence name.
-		Leaves on failure.
-		@since 
-		@param const RMmfIpcMessage& aMessage A reference to message object
-			containing request attributes.
-		@return ETrue if the request is serviced completely else EFalse.
-	*/
-	TBool DoFixedSequenceNameL(const RMmfIpcMessage& aMessage);
-
-	/**
-		Method to service the request querrying fixed sequence count.
-		Leaves on failure.
-		@since 
-		@param const RMmfIpcMessage& aMessage A reference to message object
-			containing request attributes.
-		@return ETrue if the request is serviced completely else EFalse.
-	*/
-	TBool DoFixedSequenceCountL(const RMmfIpcMessage& aMessage);
-
-	/**
 		Method to service the request querrying supported output data types.
 		Leaves on failure.
 		@since 
@@ -1106,20 +1066,6 @@
 	void PlayToneSequenceL(const TDesC8& aData);
 
 	/**
-		Initializes the audio device and starts playing the specified
-		pre-defined tone sequence.
-		Leaves on failure.
-		@since 
-		@param TInt aSequenceNumber The index identifying the specific
-			pre-defined tone sequence. Index values are relative to zero.
-			This can be any value from zero to the value returned by a call
-			to FixedSequenceCount() - 1. The function raises a panic if the
-			sequence number is not within this range.
-		@return void
-	*/
-	void PlayFixedSequenceL(TInt aSequenceNumber);
-
-	/**
 		Defines the number of times the audio is to be repeated during the
 		tone playback operation. A period of silence can follow each playing
 		of a tone. The tone playing can be repeated indefinitely
@@ -1192,32 +1138,6 @@
 	virtual TAny* CustomInterface(TUid aInterfaceId);
 
 	/**
-		Returns the number of available pre-defined tone sequences.
-		This is the number of fixed sequence supported by DevSound by default.
-		@since 
-		@return TInt  The fixed sequence count. This value is implementation
-			dependent.
-	*/
-	TInt FixedSequenceCount();
-
-	/**
-		Returns the name assigned to a specific pre-defined tone sequence.
-		This is the number of the fixed sequence supported by DevSound by
-		default.
-		The function raises a panic if sequence number specified is invalid.
-		@since 
-		@param TInt aSequenceNumber The index identifying the specific
-			pre-defined tone sequence. Index values are relative to zero.
-			This can be any value from zero to the value returned by a call
-			to CMdaAudioPlayerUtility::FixedSequenceCount() - 1. The
-			function raises a panic if sequence number is not within this
-			range.
-		@return const TDesC & A reference to a Descriptor containing the fixed
-			sequence name indexed by aSequenceNumber.
-	*/
-	const TDesC& FixedSequenceName(TInt aSequenceNumber);
-
-	/**
 		Returns a list of the supported input datatypes that can be sent to
 		DevSound for playing audio. The datatypes returned are those that the
 		DevSound supports given the priority settings passed in
--- a/eaacplusutil_stub/emgroup/bld.inf	Tue Nov 02 12:13:59 2010 +0000
+++ b/eaacplusutil_stub/emgroup/bld.inf	Tue Nov 02 12:28:51 2010 +0000
@@ -14,8 +14,7 @@
 // Description:
 //
 
-#ifdef WINS
+PRJ_PLATFORMS
+WINSCW
 
-#include "../group/bld.inf"
-
-#endif
+#include "../group/bld_common.inf"
--- a/eaacplusutil_stub/group/bld.inf	Tue Nov 02 12:13:59 2010 +0000
+++ b/eaacplusutil_stub/group/bld.inf	Tue Nov 02 12:28:51 2010 +0000
@@ -1,57 +1,23 @@
-/*
 
-* 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:  Class definition for the frame table functions.
-
- *
-
-*/
-
-
-
-#include <platform_paths.hrh>
-
-
+// Copyright (c) 2010 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:
+//
 
 PRJ_PLATFORMS
-
-PRJ_EXPORTS
-
-
-PRJ_MMPFILES
-eaacplusutil_stub.mmp
-
-
+// specify the platforms your component needs to be built for here
+// may add platform for OMAP, Helen etc
+DEFAULT
 
-
-
-
-PRJ_TESTMMPFILES
+#include "../group/bld_common.inf"
 
-
-
-PRJ_TESTEXPORTS
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eaacplusutil_stub/group/bld_common.inf	Tue Nov 02 12:28:51 2010 +0000
@@ -0,0 +1,48 @@
+/*
+
+* Copyright (c) 2007-2010 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:  Class definition for the frame table functions.
+
+ *
+
+*/
+
+
+
+PRJ_MMPFILES
+eaacplusutil_stub.mmp
+
+
+
+
+
+
+PRJ_TESTMMPFILES
+
+
+
+PRJ_TESTEXPORTS
+
--- a/frametable_stub/emgroup/bld.inf	Tue Nov 02 12:13:59 2010 +0000
+++ b/frametable_stub/emgroup/bld.inf	Tue Nov 02 12:28:51 2010 +0000
@@ -14,8 +14,7 @@
 // Description:
 //
 
-#ifdef WINS
+PRJ_PLATFORMS
+WINSCW
 
-#include "../group/bld.inf"
-
-#endif
+#include "../group/bld_common.inf"
--- a/frametable_stub/group/bld.inf	Tue Nov 02 12:13:59 2010 +0000
+++ b/frametable_stub/group/bld.inf	Tue Nov 02 12:28:51 2010 +0000
@@ -1,32 +1,23 @@
-/*
-* Copyright (c) 2002-2004 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: frametable Stubs -  Project build file for frametable 
-*
-*/
-
-
-PRJ_PLATFORMS
-
-PRJ_EXPORTS
-
-
-
-PRJ_MMPFILES
-frametable_stub.mmp
-
-
-
-
-
-//  End of File  
+
+// Copyright (c) 2010 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:
+//
+
+PRJ_PLATFORMS
+// specify the platforms your component needs to be built for here
+// may add platform for OMAP, Helen etc
+DEFAULT
+
+#include "../group/bld_common.inf"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/frametable_stub/group/bld_common.inf	Tue Nov 02 12:28:51 2010 +0000
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 2002-2010 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: frametable Stubs -  Project build file for frametable 
+*
+*/
+
+
+PRJ_MMPFILES
+frametable_stub.mmp
+
+
+
+
+
+//  End of File  
--- a/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/group/TSU_MMF_DEVSOUND_SUITE.iby	Tue Nov 02 12:13:59 2010 +0000
+++ b/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/group/TSU_MMF_DEVSOUND_SUITE.iby	Tue Nov 02 12:28:51 2010 +0000
@@ -68,6 +68,7 @@
 
 ECOM_PLUGIN(tsu_mmf_devsound_testinterface.dll, 102070af.rsc)
 ECOM_PLUGIN(tsu_mmf_devsound_testinterface1.dll, 1028664D.rsc)
+ECOM_PLUGIN(tsu_mmf_devsound_starttest.dll, tsu_mmf_devsound_starttest.rsc)
 
 #endif
 
--- a/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/group/bld.inf	Tue Nov 02 12:13:59 2010 +0000
+++ b/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/group/bld.inf	Tue Nov 02 12:28:51 2010 +0000
@@ -21,6 +21,7 @@
 ../mmpfiles/TSU_MMF_DEVSOUND_NOTIFICATION_SUITE.mmp
 ../mmpfiles/TSU_MMF_DEVSOUND_TESTINTERFACE.mmp
 ../mmpfiles/TSU_MMF_DEVSOUND_TESTINTERFACE1.mmp
+../mmpfiles/tsu_mmf_devsound_starttest.mmp
 
 
 PRJ_TESTEXPORTS
--- a/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/inc/TSU_MMF_DEVSOUND_STEP.h	Tue Nov 02 12:13:59 2010 +0000
+++ b/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/inc/TSU_MMF_DEVSOUND_STEP.h	Tue Nov 02 12:28:51 2010 +0000
@@ -2219,6 +2219,32 @@
 /*
  *========================================================================================================
   */
+
+//
+// MM-MMF-DEVSOUND-U-0300-HP
+//
+
+// these delarations should be the same as in tsu_mmf_devsound_starttest.h
+_LIT(KStartToolTestSvrName, "!StartToolSvr");
+const TInt KStartToolTestCaseErrorCode = -999;
+
+class RA3FDevSoundSvrStartToolTest : public RAsyncTestStep
+    {
+public:
+    static RA3FDevSoundSvrStartToolTest* NewL(const TDesC& aTestName);
+private:
+    RA3FDevSoundSvrStartToolTest(const TDesC& aTestName);
+    // from RAsyncTestStep
+    void KickoffTestL();
+    void CloseTest();
+    };
+
+class RSrvStartTestSession : public RSessionBase
+// virtually dummy client session, try to connect to server which is expected to fail
+    {
+public:
+    TInt CreateSession();
+    };
 	
 /**
  *
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/mmpfiles/tsu_mmf_devsound_starttest.mmp	Tue Nov 02 12:28:51 2010 +0000
@@ -0,0 +1,39 @@
+// Copyright (c) 2010 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:
+//
+
+TARGET tsu_mmf_devsound_starttest.dll
+CAPABILITY ALL -TCB
+TARGETTYPE plugin
+
+// ECom Dll recognition UID followed by the unique UID for this dll
+UID 0x10009D8D 0x20031c96
+VENDORID 0x70000001
+
+SOURCEPATH	../teststart
+
+SOURCE	tsu_mmf_devsound_starttest.cpp
+
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+start resource tsu_mmf_devsound_starttest.rss
+target tsu_mmf_devsound_starttest.rsc
+end
+
+LIBRARY	euser.lib
+LIBRARY ecom.lib
+
+
+
+SMPSAFE
--- a/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/scripts/TSU_MMF_DEVSOUND_SUITE_debug.script	Tue Nov 02 12:13:59 2010 +0000
+++ b/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/scripts/TSU_MMF_DEVSOUND_SUITE_debug.script	Tue Nov 02 12:28:51 2010 +0000
@@ -1,4 +1,4 @@
-// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2003-2010 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"
@@ -174,3 +174,9 @@
 
 RUN_TEST_STEP 60000, TSU_MMF_DEVSOUND_SUITE, MM-MMF-DEVSOUND-U-0104-HP, c:\tsu_mmf_devsound_record.ini
 TEST_COMPLETE
+
+// Test that the teststart server has started - talks to tsu_mmf_devsound_starttest.dll
+//
+//! @SYMTestCaseID MM-MMF-DEVSOUND-U-0300-HP
+RUN_TEST_STEP 60000, TSU_MMF_DEVSOUND_SUITE, MM-MMF-DEVSOUND-U-0300-HP
+TEST_COMPLETE
--- a/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/src/TSU_MMF_DEVSOUND_STEP.cpp	Tue Nov 02 12:13:59 2010 +0000
+++ b/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/src/TSU_MMF_DEVSOUND_STEP.cpp	Tue Nov 02 12:28:51 2010 +0000
@@ -11535,6 +11535,60 @@
     iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
     }
 
-
-
-
+// MM-MMF-DEVSOUND-U-0300-HP
+// RA3FDevSoundSvrStartToolTest
+// Try to connect to the MAudioSvrService TestServer - will only work if the test MAudioSvrService plugin has itself worked
+
+RA3FDevSoundSvrStartToolTest* RA3FDevSoundSvrStartToolTest::NewL(const TDesC& aTestName)
+    {
+    RA3FDevSoundSvrStartToolTest* result = new (ELeave) RA3FDevSoundSvrStartToolTest(aTestName);
+    return result;
+    }
+
+RA3FDevSoundSvrStartToolTest::RA3FDevSoundSvrStartToolTest(const TDesC& aTestName)
+    {
+    iTestStepName = aTestName;
+    }
+
+void RA3FDevSoundSvrStartToolTest::KickoffTestL()
+    {
+    // we try and connect to the test server. This should exit with a special fail code
+    // which shows that the message has got there ok. If the first version does not
+    // work we try a second time - to cover the scenario where this is the first time
+    // and perhaps the server takes a little while to start
+    CMMFDevSound* devsound = CMMFDevSound::NewL(); // need a devsound to ensure we have audiosvr
+    CleanupStack::PushL(devsound);
+    RSrvStartTestSession client;
+    CleanupClosePushL(client);
+    TBool worked = EFalse;
+    TInt err;
+    for (TInt index=0; index<2 && !worked; index++)
+        {
+        INFO_PRINTF3(_L("Attempt to connect to server '%S'(%d)"), &KStartToolTestSvrName, index);
+        err = client.CreateSession();
+        INFO_PRINTF2(_L("Error from server is %d"), err);
+        if (err==KStartToolTestCaseErrorCode)
+            {
+            INFO_PRINTF1(_L("Error is that expected"));
+            worked = ETrue;
+            }
+        User::After(5000000); // wait 5s to give server a chance to come up fully, in case
+        }
+    if (!worked)
+        {
+        INFO_PRINTF3(_L("Error received is wrong - %d not %d"), err, KStartToolTestCaseErrorCode);
+        StopTest(0, EFail);
+        }
+    CleanupStack::PopAndDestroy(2, devsound); // client and devsound
+    StopTest();
+    }
+
+void RA3FDevSoundSvrStartToolTest::CloseTest()
+    {
+    // nothing to do
+    }
+
+TInt RSrvStartTestSession::CreateSession()
+    {
+    return RSessionBase::CreateSession(KStartToolTestSvrName, TVersion(0,0,0));
+    }
--- a/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/src/TSU_MMF_DEVSOUND_SUITE.cpp	Tue Nov 02 12:13:59 2010 +0000
+++ b/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/src/TSU_MMF_DEVSOUND_SUITE.cpp	Tue Nov 02 12:28:51 2010 +0000
@@ -1,4 +1,4 @@
-// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2002-2010 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"
@@ -255,6 +255,8 @@
 	//SMP: MultCustomInterface framework test
 	CTestSuite::AddTestStepL(RTestStepMultipleCustomInterface::NewL());	
 	
+	CTestSuite::AddTestStepL(RA3FDevSoundSvrStartToolTest::NewL(_L("MM-MMF-DEVSOUND-U-0300-HP")));
+	
 #else
 	CTestSuite::AddTestStepL(RNonA3FDevSoundPauseAndResumePlayingTest::NewL(_L("MM-MMF-DEVSOUND-U-0087-HP")));
 #endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/teststart/tsu_mmf_devsound_starttest.cpp	Tue Nov 02 12:28:51 2010 +0000
@@ -0,0 +1,125 @@
+// Copyright (c) 2010 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:
+//
+
+#include <ecom/ecom.h>
+#include <ecom/implementationproxy.h>
+#include "tsu_mmf_devsound_starttest.h"
+
+// CStartToolTest 
+
+MAudioSvrService* CStartToolTest::NewL()
+	{
+    CStartToolTest* result = new (ELeave) CStartToolTest;
+	return result;
+	}
+
+CStartToolTest::~CStartToolTest()
+    {
+    REComSession::DestroyedImplementation(iDestructorKey);
+    }
+	
+CStartToolTest::CStartToolTest()
+	{
+    delete iServer;
+	}
+	
+void CStartToolTest::PassDestructorKey(TUid aDestructorKey)
+	{
+	iDestructorKey = aDestructorKey;
+	}
+
+TInt CStartToolTest::Load()
+    {
+    TRAPD(err, iServer = CStartToolTestSvr::NewL());
+    return err;
+    }
+	
+TInt CStartToolTest::Start()
+    {
+    RDebug::Print(_L("CStartToolTest::StartL()"));
+    TRAPD(err, iServer->StartL());
+    return err;
+    }
+
+void CStartToolTest::Release()
+    {
+    delete this;
+    }
+
+void CStartToolTest::Stop()
+    {
+    // assume we don't have to handle this as such, and if we did the subsequent delete would do.
+    }
+
+// CStartToolTestSvr
+
+CStartToolTestSvr* CStartToolTestSvr::NewL()
+    {
+    CStartToolTestSvr* result = new (ELeave) CStartToolTestSvr;
+    CleanupStack::PushL(result);
+    result->ConstructL();
+    CleanupStack::Pop(result);
+    return result;
+    }
+
+CStartToolTestSvr::CStartToolTestSvr():
+        CServer2(0)
+    {
+    // nothing to do
+    }
+
+CStartToolTestSvr::~CStartToolTestSvr()
+    {
+    // nothing to do
+    }
+
+void CStartToolTestSvr::ConstructL()
+    {
+    // nothing to do
+    }
+
+void CStartToolTestSvr::StartL()
+    {
+    CServer2::StartL(KStartToolTestSvrName);
+    }
+
+CSession2* CStartToolTestSvr::NewSessionL(const TVersion& /*aVersion*/,const RMessage2& /*aMessage*/) const
+    {
+    RDebug::Print(_L("CStartToolTestSvr::NewSessionL"));
+    User::Leave(KTestCaseErrorCode); // new session fails with special error code. test expected to check that
+    return NULL;
+    }
+
+//
+// ImplementationTable
+//
+
+const TImplementationProxy ImplementationTable[] = 
+    {
+    IMPLEMENTATION_PROXY_ENTRY(KUidStartTestPlugin, CStartToolTest::NewL)
+    };
+
+
+//
+// ImplementationGroupProxy
+//
+//
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+    {
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+
+    return ImplementationTable;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/teststart/tsu_mmf_devsound_starttest.h	Tue Nov 02 12:28:51 2010 +0000
@@ -0,0 +1,72 @@
+// Copyright (c) 2010 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:
+//
+
+#ifndef TSU_MMF_DEVSOUND_STARTTEST_H
+#define TSU_MMF_DEVSOUND_STARTTEST_H
+
+#include <e32base.h>
+#include <mmf/common/mmfipc.h>
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <mmf/common/mmfipcserver.h>
+#endif
+#include <a3f/mmfaudiosvrservice.h>
+#include "tsu_mmf_devsound_starttest.hrh"
+
+class CStartToolTestSvr;
+
+class CStartToolTest : public CBase,
+                       public MAudioSvrService
+
+	{
+public:
+	static MAudioSvrService* NewL();
+	~CStartToolTest();
+	
+private:
+	CStartToolTest();
+	
+	// from MAudioSvrService
+    void PassDestructorKey(TUid aDestructorKey);
+    TInt Load();
+    void Release();
+    TInt Start();
+    void Stop();
+	
+private:
+	TUid iDestructorKey;
+	CStartToolTestSvr* iServer;
+	};
+
+_LIT(KStartToolTestSvrName, "!StartToolSvr");
+const TInt KTestCaseErrorCode = -999;
+
+class CStartToolTestSvr: public CServer2
+    {
+public:
+    static CStartToolTestSvr* NewL();
+    ~CStartToolTestSvr();
+    
+    void StartL();
+    
+private:
+    CStartToolTestSvr();
+    void ConstructL();
+    
+    // from CServer2
+    CSession2* NewSessionL(const TVersion& aVersion,const RMessage2& aMessage) const;
+    };
+
+
+#endif 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/teststart/tsu_mmf_devsound_starttest.hrh	Tue Nov 02 12:28:51 2010 +0000
@@ -0,0 +1,22 @@
+// Copyright (c) 2010 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:
+//
+
+#ifndef TSU_MMF_DEVSOUND_STARTTEST_HRH
+#define TSU_MMF_DEVSOUND_STARTTEST_HRH
+
+#define KUidStartTestDll    0x20031C96
+#define KUidStartTestPlugin 0x20031C97
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/teststart/tsu_mmf_devsound_starttest.rss	Tue Nov 02 12:28:51 2010 +0000
@@ -0,0 +1,42 @@
+// Copyright (c) 2010 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:
+//
+
+#include <ecom/registryinfo.rh>
+#include <a3f/mmfaudiosvrservice.hrh>
+#include "tsu_mmf_devsound_starttest.hrh"
+
+RESOURCE REGISTRY_INFO theInfo
+	{
+	dll_uid = KUidStartTestDll;	
+	interfaces = 
+		{
+		INTERFACE_INFO
+			{
+			interface_uid = KUidA3fAudioServicePlugin;  // audiosvr start tool
+			implementations = 
+				{
+				IMPLEMENTATION_INFO
+					{
+					implementation_uid = KUidStartTestPlugin;
+					version_no = 1;
+					display_name = "";
+					default_data = "" ; // UID of implementation
+					opaque_data = "";
+					}
+				};
+			}
+		};
+	}
+
--- a/package_definition.xml	Tue Nov 02 12:13:59 2010 +0000
+++ b/package_definition.xml	Tue Nov 02 12:28:51 2010 +0000
@@ -13,7 +13,7 @@
    <component id="a3fdevsound" name="A3F DevSound" introduced="^2" purpose="optional">
     <unit bldFile="devsound/a3fdevsound/group" mrp="devsound/a3fdevsound/group/multimedia_a3f_devsound.mrp"/>
    </component>
-   <component id="a3facf" name="A3F Audio Component Framework" introduced="^2" purpose="m">
+   <component id="a3facf" name="A3F Audio Component Framework" introduced="^2" purpose="optional">
     <unit bldFile="devsound/a3facf/group" mrp="devsound/a3facf/group/multimedia_a3f_acf.mrp"/>
    </component>
    <component id="a3ftrace" name="A3F Trace Utility" introduced="^2" purpose="development">