Revision: 201015
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 03 May 2010 12:59:52 +0300
changeset 14 80975da52420
parent 12 5a06f39ad45b
child 16 43d09473c595
child 19 4a629bc82c5e
Revision: 201015 Kit: 201018
mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/3gpaudioplaycontroller/Src/3GPAudioPlayControllerPlugin.cpp
mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Src/AdvancedAudioPlayController.cpp
mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/aacaudioplaycontroller/Data/101FAFB3.rss
mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/amraudioplaycontroller/Data/101FAFB9.rss
mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/awbaudioplaycontroller/Data/101FAFBC.rss
mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/mp3audioplaycontroller/Data/101FAFB6.rss
mmfenh/enhancedmediaclient/Client/src/Components/ClientProgDLSource/ClientProgDLSource.h
mmfenh/enhancedmediaclient/Client/src/Components/ClientProgDLSource/DownloadGateway.h
mmfenh/profilesettingsmonitor/inc/ProfileSettingsMonitorServerImpl.h
mmfenh/progressivedownload/ProgressiveDownloadUtility/group/PDProperties.mmp
mmfenh/progressivedownload/ProgressiveDownloadUtility/group/ProgressiveDownloadUtility.mmp
mmfenh/progressivedownload/ProgressiveDownloadUtility/src/EMCPdPlayUtility.h
mmmw_plat/configuration_components_factory_api/inc/ConfigurationComponentsFactory.h
mmmw_plat/enhanced_media_client_api/tsrc/Conf/EnhanMediaTestClass.cfg
mmmw_plat/enhanced_media_client_api/tsrc/EnhanMediaTestClass/inc/CEMCConstants.h
mmmw_plat/enhanced_media_client_api/tsrc/EnhanMediaTestClass/inc/EnhanMediaTestClass.h
mmmw_plat/enhanced_media_client_api/tsrc/EnhanMediaTestClass/src/EnhanMediaTestClassBlocks.cpp
mmmw_plat/group/bld.inf
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/bmarm/openmaxaltestmoduleu.def
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/bwins/openmaxaltestmoduleu.def
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_common.cfg
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_engine_aiodcitf.cfg
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_engine_audenccapitf.cfg
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_engine_engineitf.cfg
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_global.cfg
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_objectitf.cfg
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_ro_audioencoderitf.cfg
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_ro_mdinsertionitf.cfg
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_ro_recorditf.cfg
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/data/c/omxaltestdata/test.wav
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/eabi/openmaxaltestmoduleu.def
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/group/bld.inf
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/group/openmaxaltestmodule.mmp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/group/openmaxaltestmodule.pkg
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/group/openmaxaltestmodule_doxyfile.txt
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/inc/openmaxaltestmodule.h
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/init/testframework.ini
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxalcommontests.cpp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxaldynitfmgmtitfcallbacks.cpp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxaldynitfmgmtitftests.cpp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxalobjectcallbacks.cpp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxalobjectitftests.cpp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxaltestmodule.cpp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxaltestmoduleblocks.cpp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/engine/openmaxalaudioencodercapabiltiesitftests.cpp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/engine/openmaxalaudioiodevicecapabilitiesitfcallbacks.cpp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/engine/openmaxalaudioiodevicecapabilitiesitftests.cpp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/engine/openmaxalengineitftests.cpp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/engine/openmaxalenginetests.cpp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/recorder/openmaxalaudioencoderitftests.cpp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/recorder/openmaxalmetadatainsertionitfcallbacks.cpp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/recorder/openmaxalmetadatainsertionitftests.cpp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/recorder/openmaxalrecorditfcallbacks.cpp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/recorder/openmaxalrecorditftests.cpp
mmmw_plat/system_tone_service_api/group/bld.inf
mmmw_plat/system_tone_service_api/inc/systemtoneservice.h
mmmw_plat/system_tone_service_api/tsrc/bmarm/systemtoneservicestifu.def
mmmw_plat/system_tone_service_api/tsrc/bwins/systemtoneservicestifu.def
mmmw_plat/system_tone_service_api/tsrc/conf/systemtoneservicestif.cfg
mmmw_plat/system_tone_service_api/tsrc/conf/systemtoneservicestif_calendaralarm.cfg
mmmw_plat/system_tone_service_api/tsrc/conf/systemtoneservicestif_common.cfg
mmmw_plat/system_tone_service_api/tsrc/eabi/systemtoneservicestifu.def
mmmw_plat/system_tone_service_api/tsrc/group/bld.inf
mmmw_plat/system_tone_service_api/tsrc/group/systemtoneservicestif.mmp
mmmw_plat/system_tone_service_api/tsrc/group/systemtoneservicestif.pkg
mmmw_plat/system_tone_service_api/tsrc/group/systemtoneservicestif_DoxyFile.txt
mmmw_plat/system_tone_service_api/tsrc/inc/systemtoneservicestif.h
mmmw_plat/system_tone_service_api/tsrc/init/testframework.ini
mmmw_plat/system_tone_service_api/tsrc/src/systemtoneservicestif.cpp
mmmw_plat/system_tone_service_api/tsrc/src/systemtoneservicestifblocks.cpp
mmmw_plat/telephony_multimedia_service_api/inc/tms.h
mmmw_plat/telephony_multimedia_service_api/inc/tmsclientsinkobsrvr.h
mmmw_plat/telephony_multimedia_service_api/inc/tmsclientsourceobsrvr.h
mmmw_plat/telephony_multimedia_service_api/inc/tmsdtmfobsrvr.h
mmmw_plat/telephony_multimedia_service_api/inc/tmseffectobsrvr.h
mmmw_plat/telephony_multimedia_service_api/inc/tmsglobalroutingobsrvr.h
mmmw_plat/telephony_multimedia_service_api/inc/tmsinbandtoneobsrvr.h
mmmw_plat/telephony_multimedia_service_api/inc/tmsringtoneobsrvr.h
mmmw_plat/telephony_multimedia_service_api/inc/tmsstreamobsrvr.h
mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/inc/TMSAudioServicesTestClass.h
mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/sis/create_sis.bat
mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/src/TimeoutController.cpp
mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/src/TmsAudioServicesTestClassBlocks.cpp
mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/src/TmsAudioServicesTestClassBlocksCallbacks.cpp
mmserv/group/bld.inf
mmserv/radioutility/presetutility/bwins/FmPresetUtilityu.def
mmserv/radioutility/presetutility/bwins/presetutilityu.def
mmserv/radioutility/presetutility/cenrep/10207b87.txt
mmserv/radioutility/presetutility/conf/presetutility.confml
mmserv/radioutility/presetutility/conf/presetutility_10207B87.crml
mmserv/radioutility/presetutility/eabi/FmPresetUtilityu.def
mmserv/radioutility/presetutility/eabi/presetutilityu.def
mmserv/radioutility/presetutility/group/backup_registration.xml
mmserv/radioutility/presetutility/group/bld.inf
mmserv/radioutility/presetutility/group/fmpresetutility.mmp
mmserv/radioutility/presetutility/group/presetutility.mmp
mmserv/radioutility/presetutility/inc/cenrepbookkeeping.h
mmserv/radioutility/presetutility/inc/cenrephandler.h
mmserv/radioutility/presetutility/inc/presetcrkeys.h
mmserv/radioutility/presetutility/inc/presetutilitybody.h
mmserv/radioutility/presetutility/inc/trace.h
mmserv/radioutility/presetutility/inc/traceconfiguration.hrh
mmserv/radioutility/presetutility/rom/fmpresetutility.iby
mmserv/radioutility/presetutility/rom/presetutility.iby
mmserv/radioutility/presetutility/src/cenrepbookkeeping.cpp
mmserv/radioutility/presetutility/src/cenrephandler.cpp
mmserv/radioutility/presetutility/src/old_api/radiofmpresetcentralrepositoryhandler.cpp
mmserv/radioutility/presetutility/src/old_api/radiofmpresetcentralrepositoryhandler.h
mmserv/radioutility/presetutility/src/old_api/radiofmpresetutility.cpp
mmserv/radioutility/presetutility/src/preset.cpp
mmserv/radioutility/presetutility/src/presetutility.cpp
mmserv/radioutility/presetutility/src/presetutilitybody.cpp
mmserv/radioutility/presetutility/tsrc/Bmarm/PresetUtilityTestModuleU.DEF
mmserv/radioutility/presetutility/tsrc/Bwins/PresetUtilityTestModuleU.DEF
mmserv/radioutility/presetutility/tsrc/EABI/PresetUtilityTestModuleU.def
mmserv/radioutility/presetutility/tsrc/cenrep/10207B87.txt
mmserv/radioutility/presetutility/tsrc/cenrep/presetutility.confml
mmserv/radioutility/presetutility/tsrc/cenrep/presetutility_10207B87.crml
mmserv/radioutility/presetutility/tsrc/conf/10207B87.txt
mmserv/radioutility/presetutility/tsrc/conf/PresetUtilityTestModule.cfg
mmserv/radioutility/presetutility/tsrc/conf/presetutility.confml
mmserv/radioutility/presetutility/tsrc/conf/presetutility_10207B87.crml
mmserv/radioutility/presetutility/tsrc/group/Bld.inf
mmserv/radioutility/presetutility/tsrc/group/PresetUtilityTestModule.mmp
mmserv/radioutility/presetutility/tsrc/group/PresetUtilityTestModule.pkg
mmserv/radioutility/presetutility/tsrc/group/PresetUtilityTestModule_DoxyFile.txt
mmserv/radioutility/presetutility/tsrc/group/PresetUtilityTestModule_nrm.mmp
mmserv/radioutility/presetutility/tsrc/group/RestoreOrigCenrep.cmd
mmserv/radioutility/presetutility/tsrc/group/TestEnvInit.cmd
mmserv/radioutility/presetutility/tsrc/inc/PresetUtilityTestModule.h
mmserv/radioutility/presetutility/tsrc/init/PresetUtilityTestModule.ini
mmserv/radioutility/presetutility/tsrc/src/PresetUtilityTestModule.cpp
mmserv/radioutility/presetutility/tsrc/src/PresetUtilityTestModuleBlocks.cpp
mmserv/radioutility/radioserver/Server/Src/RadioServer.cpp
mmserv/sts/bwins/systemtoneservice.def
mmserv/sts/data/create_sts_stub_sis.bat
mmserv/sts/data/sts_stub.pkg
mmserv/sts/data/sts_stub.sis
mmserv/sts/eabi/systemtoneservice.def
mmserv/sts/group/bld.inf
mmserv/sts/group/systemtoneservice.mmp
mmserv/sts/inc/sts.h
mmserv/sts/inc/stsclientservercommon.h
mmserv/sts/inc/stsimplementation.h
mmserv/sts/inc/stsplayer.h
mmserv/sts/rom/systemtoneservice.iby
mmserv/sts/sis/create_all_sis.bat
mmserv/sts/sis/create_sis.bat
mmserv/sts/sis/create_udeb_sis.bat
mmserv/sts/sis/systemtoneservice.pkg
mmserv/sts/sis/systemtoneservice_udeb.pkg
mmserv/sts/src/systemtoneservice.cpp
mmserv/sts/stsimplementation/group/bld.inf
mmserv/sts/stsimplementation/group/stsimplementation.mmp
mmserv/sts/stsimplementation/src/rstssession.cpp
mmserv/sts/stsimplementation/src/rstssession.h
mmserv/sts/stsimplementation/src/stsimplementation.cpp
mmserv/sts/stsplayer/group/bld.inf
mmserv/sts/stsplayer/group/stsplayer.mmp
mmserv/sts/stsplayer/src/sts.cpp
mmserv/sts/stsplayer/src/stsplayer.cpp
mmserv/sts/stsserver/group/bld.inf
mmserv/sts/stsserver/group/stsserver.mmp
mmserv/sts/stsserver/src/stsserver.cpp
mmserv/sts/stsserver/src/stsserver.h
mmserv/sts/stsserver/src/stsserverexe.cpp
mmserv/sts/stsserver/src/stsserversession.cpp
mmserv/sts/stsserver/src/stsserversession.h
mmserv/sts/tsrc/ststester/data/ststester_reg.rss
mmserv/sts/tsrc/ststester/group/bld.inf
mmserv/sts/tsrc/ststester/group/ststester.mmp
mmserv/sts/tsrc/ststester/inc/ststestermain.h
mmserv/sts/tsrc/ststester/sis/create_sis.bat
mmserv/sts/tsrc/ststester/sis/ststester.pkg
mmserv/sts/tsrc/ststester/src/profileutilmacro.h
mmserv/sts/tsrc/ststester/src/ststester.cpp
mmserv/sts/tsrc/ststester/src/ststester.h
mmserv/sts/tsrc/ststester/src/ststestermain.cpp
mmserv/sts/tsrc/ststester/src/testappbase.cpp
mmserv/sts/tsrc/ststester/src/testappbase.h
mmserv/tms/inc/tmsclientserver.h
mmserv/tms/inc/tmsproxy.h
mmserv/tms/inc/tmsqueuehandler.h
mmserv/tms/tmsapi/src/tmsinbandtone.cpp
mmserv/tms/tmscallserver/group/tmscallserver.mmp
mmserv/tms/tmscallserver/inc/calladpt.h
mmserv/tms/tmscallserver/inc/callcsadpt.h
mmserv/tms/tmscallserver/inc/callipadpt.h
mmserv/tms/tmscallserver/inc/cpeaudiodtmftoneplayer.h
mmserv/tms/tmscallserver/inc/csdownlink.h
mmserv/tms/tmscallserver/inc/cspdevsound.h
mmserv/tms/tmscallserver/inc/cspdtmfprovider.h
mmserv/tms/tmscallserver/inc/cspeteldtmfmonitor.h
mmserv/tms/tmscallserver/inc/cspeteldtmfstopmonitor.h
mmserv/tms/tmscallserver/inc/csuplink.h
mmserv/tms/tmscallserver/inc/delaytimer.h
mmserv/tms/tmscallserver/inc/dtmfnotifier.h
mmserv/tms/tmscallserver/inc/dtmftoneplayerobserver.h
mmserv/tms/tmscallserver/inc/ipcallstream.h
mmserv/tms/tmscallserver/inc/mccpdtmfobserver.h
mmserv/tms/tmscallserver/inc/mcspdevsoundobserver.h
mmserv/tms/tmscallserver/inc/tarsettings.h
mmserv/tms/tmscallserver/inc/tmscalladpt.h
mmserv/tms/tmscallserver/inc/tmscallcsadpt.h
mmserv/tms/tmscallserver/inc/tmscallipadpt.h
mmserv/tms/tmscallserver/inc/tmscsdevsound.h
mmserv/tms/tmscallserver/inc/tmscsdevsoundobserver.h
mmserv/tms/tmscallserver/inc/tmscsdownlink.h
mmserv/tms/tmscallserver/inc/tmscsuplink.h
mmserv/tms/tmscallserver/inc/tmsdelaytimer.h
mmserv/tms/tmscallserver/inc/tmsdtmfnotifier.h
mmserv/tms/tmscallserver/inc/tmsdtmfobserver.h
mmserv/tms/tmscallserver/inc/tmsdtmfprovider.h
mmserv/tms/tmscallserver/inc/tmsdtmftoneplayer.h
mmserv/tms/tmscallserver/inc/tmsdtmftoneplayerobserver.h
mmserv/tms/tmscallserver/inc/tmseteldtmfmonitor.h
mmserv/tms/tmscallserver/inc/tmseteldtmfstopmonitor.h
mmserv/tms/tmscallserver/inc/tmsipcallstream.h
mmserv/tms/tmscallserver/inc/tmstarsettings.h
mmserv/tms/tmscallserver/src/calladpt.cpp
mmserv/tms/tmscallserver/src/callcsadpt.cpp
mmserv/tms/tmscallserver/src/callipadpt.cpp
mmserv/tms/tmscallserver/src/cpeaudiodtmftoneplayer.cpp
mmserv/tms/tmscallserver/src/csdownlink.cpp
mmserv/tms/tmscallserver/src/cspdevsound.cpp
mmserv/tms/tmscallserver/src/cspdtmfprovider.cpp
mmserv/tms/tmscallserver/src/cspeteldtmfmonitor.cpp
mmserv/tms/tmscallserver/src/cspeteldtmfstopmonitor.cpp
mmserv/tms/tmscallserver/src/csuplink.cpp
mmserv/tms/tmscallserver/src/delaytimer.cpp
mmserv/tms/tmscallserver/src/dtmfnotifier.cpp
mmserv/tms/tmscallserver/src/ipcalldownlink.cpp
mmserv/tms/tmscallserver/src/ipcalldownlinkds.cpp
mmserv/tms/tmscallserver/src/ipcallstreambase.cpp
mmserv/tms/tmscallserver/src/ipcalluplink.cpp
mmserv/tms/tmscallserver/src/ipcalluplinkds.cpp
mmserv/tms/tmscallserver/src/tarsettings.cpp
mmserv/tms/tmscallserver/src/tmscalladpt.cpp
mmserv/tms/tmscallserver/src/tmscallcsadpt.cpp
mmserv/tms/tmscallserver/src/tmscallipadpt.cpp
mmserv/tms/tmscallserver/src/tmscallserver.cpp
mmserv/tms/tmscallserver/src/tmscallsession.cpp
mmserv/tms/tmscallserver/src/tmscsdevsound.cpp
mmserv/tms/tmscallserver/src/tmscsdownlink.cpp
mmserv/tms/tmscallserver/src/tmscsuplink.cpp
mmserv/tms/tmscallserver/src/tmsdelaytimer.cpp
mmserv/tms/tmscallserver/src/tmsdtmfnotifier.cpp
mmserv/tms/tmscallserver/src/tmsdtmfprovider.cpp
mmserv/tms/tmscallserver/src/tmsdtmftoneplayer.cpp
mmserv/tms/tmscallserver/src/tmseteldtmfmonitor.cpp
mmserv/tms/tmscallserver/src/tmseteldtmfstopmonitor.cpp
mmserv/tms/tmscallserver/src/tmsipcalldownlink.cpp
mmserv/tms/tmscallserver/src/tmsipcalldownlinkds.cpp
mmserv/tms/tmscallserver/src/tmsipcallstreambase.cpp
mmserv/tms/tmscallserver/src/tmsipcalluplink.cpp
mmserv/tms/tmscallserver/src/tmsipcalluplinkds.cpp
mmserv/tms/tmscallserver/src/tmstarsettings.cpp
mmserv/tms/tmsfactory/src/tmsfactoryimpl.cpp
mmserv/tms/tmsimpl/inc/tmsvolumeeffectbodyimpl.h
mmserv/tms/tmsimpl/src/tmsamrbodyimpl.cpp
mmserv/tms/tmsimpl/src/tmsamrimpl.cpp
mmserv/tms/tmsimpl/src/tmsbufferimpl.cpp
mmserv/tms/tmsimpl/src/tmscallimpl.cpp
mmserv/tms/tmsimpl/src/tmsclientsinkbodyimpl.cpp
mmserv/tms/tmsimpl/src/tmsclientsinkimpl.cpp
mmserv/tms/tmsimpl/src/tmsclientsourcebodyimpl.cpp
mmserv/tms/tmsimpl/src/tmsclientsourceimpl.cpp
mmserv/tms/tmsimpl/src/tmsdtmfbodyimpl.cpp
mmserv/tms/tmsimpl/src/tmsdtmfimpl.cpp
mmserv/tms/tmsimpl/src/tmseffectimpl.cpp
mmserv/tms/tmsimpl/src/tmsformatbodyimpl.cpp
mmserv/tms/tmsimpl/src/tmsformatimpl.cpp
mmserv/tms/tmsimpl/src/tmsg711bodyimpl.cpp
mmserv/tms/tmsimpl/src/tmsg711impl.cpp
mmserv/tms/tmsimpl/src/tmsg729bodyimpl.cpp
mmserv/tms/tmsimpl/src/tmsg729impl.cpp
mmserv/tms/tmsimpl/src/tmsgaineffectbodyimpl.cpp
mmserv/tms/tmsimpl/src/tmsgaineffectimpl.cpp
mmserv/tms/tmsimpl/src/tmsglobalgaineffectimpl.cpp
mmserv/tms/tmsimpl/src/tmsglobalroutingimpl.cpp
mmserv/tms/tmsimpl/src/tmsglobalvoleffectimpl.cpp
mmserv/tms/tmsimpl/src/tmsilbcbodyimpl.cpp
mmserv/tms/tmsimpl/src/tmsilbcimpl.cpp
mmserv/tms/tmsimpl/src/tmsinbandtoneimpl.cpp
mmserv/tms/tmsimpl/src/tmsmembuffer.cpp
mmserv/tms/tmsimpl/src/tmsmicsourcebodyimpl.cpp
mmserv/tms/tmsimpl/src/tmsmicsourceimpl.cpp
mmserv/tms/tmsimpl/src/tmsmodemsinkbodyimpl.cpp
mmserv/tms/tmsimpl/src/tmsmodemsinkimpl.cpp
mmserv/tms/tmsimpl/src/tmsmodemsourcebodyimpl.cpp
mmserv/tms/tmsimpl/src/tmsmodemsourceimpl.cpp
mmserv/tms/tmsimpl/src/tmspcmbodyimpl.cpp
mmserv/tms/tmsimpl/src/tmspcmimpl.cpp
mmserv/tms/tmsimpl/src/tmsqueuehandler.cpp
mmserv/tms/tmsimpl/src/tmsringtoneimpl.cpp
mmserv/tms/tmsimpl/src/tmssinkimpl.cpp
mmserv/tms/tmsimpl/src/tmssourceimpl.cpp
mmserv/tms/tmsimpl/src/tmsspeakersinkbodyimpl.cpp
mmserv/tms/tmsimpl/src/tmsspeakersinkimpl.cpp
mmserv/tms/tmsimpl/src/tmsstreambodyimpl.cpp
mmserv/tms/tmsimpl/src/tmsstreamimpl.cpp
mmserv/tms/tmsimpl/src/tmsvolumeeffectbodyimpl.cpp
mmserv/tms/tmsimpl/src/tmsvolumeeffectimpl.cpp
mmserv/tms/tmsproxy/src/tmsproxy.cpp
mmserv/tms/tmsproxy/src/tmsqueuehandler.cpp
mmserv/tms/tmsserver/inc/tmsserversession.h
mmserv/tms/tmsserver/src/tmscenrepaudiohandler.cpp
mmserv/tms/tmsserver/src/tmsrtaudiohdlr.cpp
mmserv/tms/tmsserver/src/tmsserver.cpp
mmserv/tms/tmsserver/src/tmsserversession.cpp
mmserv/tms/tmsutility/src/tmsutility.cpp
mmserv/voipaudioservices/VoIPServer/src/VoIPDownlinkThread.cpp
mmserv/voipaudioservices/VoIPServer/src/VoIPServerSession.cpp
mmserv/voipaudioservices/VoIPServer/src/VoIPUplinkThread.cpp
package_definition.xml
--- a/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/3gpaudioplaycontroller/Src/3GPAudioPlayControllerPlugin.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/3gpaudioplaycontroller/Src/3GPAudioPlayControllerPlugin.cpp	Mon May 03 12:59:52 2010 +0300
@@ -109,6 +109,7 @@
     delete iAudioUtility; // see 3gp
     delete iAacUtil;
     iAudioUtility = NULL;
+    iAacUtil = NULL;
 	iDataSourceAdapter = C3gpDataSourceAdapter::NewL();
 	iSharedBufferMaxNum = 1;
 	iSharedBufferMaxSize = KFirstBufferSize;
--- a/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Src/AdvancedAudioPlayController.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Src/AdvancedAudioPlayController.cpp	Mon May 03 12:59:52 2010 +0300
@@ -801,6 +801,7 @@
         User::Leave(KErrAlreadyExists);
         }
 
+
 	// set iReadHeader here in case prime is not called before set position is used.
     // reset before adding data source
     DP0(_L("CAdvancedAudioPlayController::AddDataSourceL reseting iSharedBufferCnt iReadHeader iInitPosition position vars"));
@@ -1654,7 +1655,7 @@
 
 	TTimeIntervalMicroSeconds positionMicroSeconds(0);
 
-    if (iState == EPlaying)
+    if (iState == EPlaying || iState == EAutoPaused)
     	{
     	DP1 (_L("CAdvancedAudioPlayController::PositionL iTimePositionInMicroSecs [%d] msec"), iTimePositionInMicroSecs);
         // adjust the position here since devsound returns the incremented postion value during loopplay
@@ -2218,8 +2219,12 @@
 	DP0(_L("CAdvancedAudioPlayController::DoInitializeSinkL"));
 	iSinkInitDataReady = EFalse;
 	
+	  if (!iAudioOutput)
+	        {
+	        User::Leave(KErrNotReady);
+	        }	
 	//both source and sink have been added
-     if(iAudioOutput && iDataSourceAdapter)     
+     if(iDataSourceAdapter)     
          {
          iAudioOutput->SetDataSourceAdapter(iDataSourceAdapter);
          }
@@ -2247,20 +2252,15 @@
     // Read the default codec configuration parameters from resource file
 	RArray<TInt>& codecConfigData = const_cast<RArray<TInt>&>(iAudioResource->CodecConfigParametersL());
 	// Override default values with values found from header, if available
-	GetCodecConfigData(codecConfigData);
-        if (!iAudioOutput)
-	   {		
-		User::Leave(KErrNotReady);
-           }  
-        else
-           {
-	       iAudioOutput->ConfigureL(iSampleRate, iSinkNumChannels, iDataType, codecConfigData);
-               DP0(_L("CAdvancedAudioPlayController::DoInitializeSinkL, output configured"));
-  	       iAudioOutput->PrimeL();
-               DP0(_L("CAdvancedAudioPlayController::DoInitializeSinkL, output primed"));
-	   }		    
-	// we would use this code when we have a NULL sink
-/*	if (iDuration > 0)
+	 GetCodecConfigData(codecConfigData);
+   iAudioOutput->ConfigureL(iSampleRate, iSinkNumChannels, iDataType, codecConfigData);
+   DP0(_L("CAdvancedAudioPlayController::DoInitializeSinkL, output configured"));
+   iAudioOutput->PrimeL();
+   DP0(_L("CAdvancedAudioPlayController::DoInitializeSinkL, output primed"));
+   
+   	// we would use this code when we have a NULL sink
+	
+	/*	if (iDuration > 0)
 		{
 		DP0(_L("CAdvancedAudioPlayController::BufferFilledL, unblocking duration"));
 		iBlockDuration = EFalse;
--- a/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/aacaudioplaycontroller/Data/101FAFB3.rss	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/aacaudioplaycontroller/Data/101FAFB3.rss	Mon May 03 12:59:52 2010 +0300
@@ -46,7 +46,7 @@
 					version_no = 1;
 					display_name = "AAC Audio Controller Plugin";
 					default_data = "?";
-					opaque_data = "<s>Nokia<i>0x101F5D07<p>0x101FAFB5<d>";
+					opaque_data = "<s>Nokia<i>0x101F5D07<p>0x101FAFB5<a>0x200000<d>";
                                         rom_only = 0;					
 					}
 				};
--- a/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/amraudioplaycontroller/Data/101FAFB9.rss	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/amraudioplaycontroller/Data/101FAFB9.rss	Mon May 03 12:59:52 2010 +0300
@@ -46,7 +46,7 @@
 					version_no = 1;
 					display_name = "AMR Audio Play Controller Plugin";
 					default_data = "?";
-					opaque_data = "<s>Nokia<i>0x101F5D07<p>0x101FAFBB<d>";
+					opaque_data = "<s>Nokia<i>0x101F5D07<p>0x101FAFBB<a>0x200000<d>";
                                         rom_only = 0;					
 					}
 				};
--- a/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/awbaudioplaycontroller/Data/101FAFBC.rss	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/awbaudioplaycontroller/Data/101FAFBC.rss	Mon May 03 12:59:52 2010 +0300
@@ -46,7 +46,7 @@
 					version_no = 1;
 					display_name = "AWB Audio Play Controller Plugin";
 					default_data = "?";
-					opaque_data = "<s>Nokia<i>0x101F5D07<p>0x101FAFBE<d>";
+					opaque_data = "<s>Nokia<i>0x101F5D07<p>0x101FAFBE<a>0x200000<d>";
                                         rom_only = 0;					
 					}
 				};
--- a/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/mp3audioplaycontroller/Data/101FAFB6.rss	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/mp3audioplaycontroller/Data/101FAFB6.rss	Mon May 03 12:59:52 2010 +0300
@@ -46,7 +46,7 @@
 					version_no = 1;
 					display_name = "MP3 Audio Controller Plugin";
 					default_data = "?";
-					opaque_data = "<s>Nokia<i>0x101F5D07<p>0x101FAFB8<d>";
+					opaque_data = "<s>Nokia<i>0x101F5D07<p>0x101FAFB8<a>0x200000<d>";
                                         rom_only = 0;					
 					}
 				};
--- a/mmfenh/enhancedmediaclient/Client/src/Components/ClientProgDLSource/ClientProgDLSource.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmfenh/enhancedmediaclient/Client/src/Components/ClientProgDLSource/ClientProgDLSource.h	Mon May 03 12:59:52 2010 +0300
@@ -21,7 +21,7 @@
 
 #include <e32base.h>
 #include <ProgDLSource.h>
-#include <DownloadMgrClient.h>
+#include <downloadmgrclient.h>
 #include <mmfcontrollerframework.h>
 #include <MultimediaDataSource.h>
 
--- a/mmfenh/enhancedmediaclient/Client/src/Components/ClientProgDLSource/DownloadGateway.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmfenh/enhancedmediaclient/Client/src/Components/ClientProgDLSource/DownloadGateway.h	Mon May 03 12:59:52 2010 +0300
@@ -20,7 +20,7 @@
 #define DOWNLOADGATEWAY_H
 
 #include <e32base.h>
-#include <DownloadMgrClientApiExt.h>
+#include <downloadmgrclientapiext.h>
 #include <ProgDLSource.h>
 
 namespace multimedia
--- a/mmfenh/profilesettingsmonitor/inc/ProfileSettingsMonitorServerImpl.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmfenh/profilesettingsmonitor/inc/ProfileSettingsMonitorServerImpl.h	Mon May 03 12:59:52 2010 +0300
@@ -42,7 +42,7 @@
 public MProEngActiveProfileObserver
 	{
 public:
-	IMPORT_C static CProfileSettingsMonitorServerImpl* NewL(); 
+	static CProfileSettingsMonitorServerImpl* NewL(); 
 	~CProfileSettingsMonitorServerImpl();
 	
 	//MProEngProfileActivationObserver
--- a/mmfenh/progressivedownload/ProgressiveDownloadUtility/group/PDProperties.mmp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmfenh/progressivedownload/ProgressiveDownloadUtility/group/PDProperties.mmp	Mon May 03 12:59:52 2010 +0300
@@ -37,7 +37,6 @@
 SYSTEMINCLUDE	/epoc32/include/mmf/server
 SYSTEMINCLUDE	/epoc32/include/kernel
 SYSTEMINCLUDE	/epoc32/include/mmf/common
-SYSTEMINCLUDE   /epoc32/include/mm
 SYSTEMINCLUDE   /epoc32/include/caf
 
 SOURCEPATH   	../src
--- a/mmfenh/progressivedownload/ProgressiveDownloadUtility/group/ProgressiveDownloadUtility.mmp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmfenh/progressivedownload/ProgressiveDownloadUtility/group/ProgressiveDownloadUtility.mmp	Mon May 03 12:59:52 2010 +0300
@@ -37,7 +37,7 @@
 SYSTEMINCLUDE	/epoc32/include/mmf/server
 SYSTEMINCLUDE	/epoc32/include/kernel
 SYSTEMINCLUDE	/epoc32/include/mmf/common
-SYSTEMINCLUDE   /epoc32/include/mm
+
 
 
 SOURCEPATH   	../src
--- a/mmfenh/progressivedownload/ProgressiveDownloadUtility/src/EMCPdPlayUtility.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmfenh/progressivedownload/ProgressiveDownloadUtility/src/EMCPdPlayUtility.h	Mon May 03 12:59:52 2010 +0300
@@ -32,7 +32,7 @@
 
 #include <mmf/common/mmcaf.h>
 
-#include <DownloadMgrClient.h>
+#include <downloadmgrclient.h>
 #include "MAudioPdPlayUtility.h"
 #include "MProgressiveDownloadUtility.h"
 
--- a/mmmw_plat/configuration_components_factory_api/inc/ConfigurationComponentsFactory.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmmw_plat/configuration_components_factory_api/inc/ConfigurationComponentsFactory.h	Mon May 03 12:59:52 2010 +0300
@@ -76,15 +76,19 @@
      * Constructor
      *
      */
+    #ifdef __WINSCW__
     IMPORT_C CConfigurationComponentsFactory();
+    IMPORT_C void ConstructL();
+    #else 
+    CConfigurationComponentsFactory();
+    void ConstructL();
+    #endif
 
     /**
      * Second phase constructor. The derived class should call this during
      * construction.
      *
      */
-    IMPORT_C void ConstructL();
-
     protected:  // Data
         // Actual implementation class.
         class CBody;
--- a/mmmw_plat/enhanced_media_client_api/tsrc/Conf/EnhanMediaTestClass.cfg	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmmw_plat/enhanced_media_client_api/tsrc/Conf/EnhanMediaTestClass.cfg	Mon May 03 12:59:52 2010 +0300
@@ -55,8 +55,8 @@
 AudioEnhs CreateSink
 AudioEnhs AddObserver 4
 AudioEnhs StreamAddSink 4
-AudioEnhs ControlTypeL 4
-AudioEnhs ControlControlTypeL 4
+AudioEnhs Control_Type 4
+AudioEnhs Control_ControlType 4
 //waittestclass AudioEnhs
 AudioEnhs StreamRemoveSink 4
 AudioEnhs RemoveObserver 4
@@ -72,11 +72,22 @@
 AudioEnhs CreateStream
 AudioEnhs CreateEffect 7
 AudioEnhs AddObserver 7
+AudioEnhs CreateEffect 20
+AudioEnhs AddObserver 20
 AudioEnhs StreamAddEffect 7
 waittestclass AudioEnhs
+AudioEnhs StreamAddEffect 20
+waittestclass AudioEnhs
+AudioEnhs Control_Type 20
+AudioEnhs Control_ControlType 20
+
+AudioEnhs BalGetBalance
 AudioEnhs RemoveObserver 7
 AudioEnhs RemoveEffect 7
 AudioEnhs DeleteEffect 7
+AudioEnhs RemoveObserver 20
+AudioEnhs RemoveEffect 20
+AudioEnhs DeleteEffect 20
 AudioEnhs DeleteFactory
 delete AudioEnhs
 [Endtest]
@@ -90,13 +101,6 @@
 AudioEnhs AddObserver 9
 AudioEnhs StreamAddEffect 9
 waittestclass AudioEnhs
-allownextresult -18
-AudioEnhs AudioEffect_Enable 9
-allownextresult -18
-AudioEnhs EffectApply 7
-allownextresult -18
-AudioEnhs AudioEffect_Disable 9
-allownextresult -18
 AudioEnhs RemoveObserver 9
 AudioEnhs RemoveEffect 9
 AudioEnhs DeleteEffect 9
@@ -111,8 +115,8 @@
 AudioEnhs CreateStream
 AudioEnhs AddObserver 3
 //waittestclass AudioEnhs
-AudioEnhs ControlTypeL 3
-AudioEnhs ControlControlTypeL 3
+AudioEnhs Control_Type 3
+AudioEnhs Control_ControlType 3
 AudioEnhs RemoveObserver 3
 AudioEnhs DeleteStream
 AudioEnhs DeleteFactory
@@ -132,9 +136,11 @@
 AudioEnhs AddObserver 4
 AudioEnhs CreateEffect 7
 AudioEnhs AddObserver 7
+
 AudioEnhs StreamAddSource 0
 AudioEnhs StreamAddSink 4
 AudioEnhs StreamAddEffect 7
+
 waittestclass AudioEnhs
 AudioEnhs FileSOpen
 AudioEnhs StreamOpen
@@ -195,6 +201,11 @@
 AudioEnhs EffectApply 7
 pause 5000
 AudioEnhs StreamStart
+
+AudioEnhs AudioEffect_Disable 7
+
+
+
 AudioEnhs CloseSource
 AudioEnhs StreamClose
 waittestclass AudioEnhs
@@ -279,8 +290,8 @@
 AudioEnhs DRMRemoveAllowedOutputDevice 2
 //AudioEnhs DRMGetAllowedOutputDevice 4
 //AudioEnhs DRMRemoveAllowedOutputDevice 4
-AudioEnhs ControlTypeL 1
-AudioEnhs ControlControlTypeL 1
+AudioEnhs Control_Type 1
+AudioEnhs Control_ControlType 1
 pause 3000
 AudioEnhs StreamStart
 pause 5000
@@ -316,10 +327,10 @@
 AudioEnhs StreamStart
 pause 4000
 AudioEnhs StreamPause
-AudioEnhs ControlTypeL 2
-AudioEnhs ControlControlTypeL 2 
-AudioEnhs ControlTypeL 3
-AudioEnhs ControlControlTypeL 3 
+AudioEnhs Control_Type 2
+AudioEnhs Control_ControlType 2 
+AudioEnhs Control_Type 3
+AudioEnhs Control_ControlType 3 
 AudioEnhs DescSGetBitRate
 AudioEnhs DSGetSize
 pause 2000
@@ -358,8 +369,8 @@
 AudioEnhs StreamStart
 pause 4000
 AudioEnhs StreamPause
-AudioEnhs ControlTypeL 2
-AudioEnhs ControlControlTypeL 2 
+AudioEnhs Control_Type 2
+AudioEnhs Control_ControlType 2 
 AudioEnhs DescSGetBitRate
 AudioEnhs DSGetSize
 pause 2000
@@ -401,10 +412,10 @@
 AudioEnhs AudioEffect_Enforce 1
 AudioEnhs AudioEffect_IsEnabled
 AudioEnhs AudioEffect_HaveUpdateRights
-AudioEnhs ControlTypeL 0
-AudioEnhs ControlControlTypeL 0
-AudioEnhs ControlTypeL 5
-AudioEnhs ControlControlTypeL 5
+AudioEnhs Control_Type 0
+AudioEnhs Control_ControlType 0
+AudioEnhs Control_Type 5
+AudioEnhs Control_ControlType 5
 AudioEnhs FileSGetSize
 AudioEnhs FileSGetBitRate
 AudioEnhs StreamStart
@@ -470,10 +481,10 @@
 AudioEnhs StreamGetPositionL
 AudioEnhs StreamSetPositionL 0
 AudioEnhs StreamGetPositionL
-AudioEnhs ControlTypeL 0
-AudioEnhs ControlControlTypeL 0
-AudioEnhs ControlTypeL 5
-AudioEnhs ControlControlTypeL 5
+AudioEnhs Control_Type 0
+AudioEnhs Control_ControlType 0
+AudioEnhs Control_Type 5
+AudioEnhs Control_ControlType 5
 pause 3000
 AudioEnhs StreamStart
 pause 4000
@@ -563,8 +574,8 @@
 AudioEnhs ER_SetRoomHFLevel 0
 AudioEnhs ER_SetRoomLevel -1000
 AudioEnhs AudioEffect_IsEnabled
-//AudioEnhs AudioEffect_IsEnforced
-//AudioEnhs AudioEffect_Uid
+AudioEnhs AudioEffect_IsEnforced
+AudioEnhs AudioEffect_Uid
 AudioEnhs AudioEffect_HaveUpdateRights
 AudioEnhs AudioEffect_Enforce 1
 pause 2000
@@ -574,8 +585,8 @@
 AudioEnhs EffectApply 8
 AudioEnhs StreamPause
 pause 2000
-AudioEnhs ControlTypeL 8
-AudioEnhs ControlControlTypeL 8
+AudioEnhs Control_Type 8
+AudioEnhs Control_ControlType 8
 AudioEnhs StreamStart
 AudioEnhs CloseSource
 AudioEnhs StreamClose
@@ -629,10 +640,20 @@
 waittestclass AudioEnhs
 AudioEnhs StreamPrime
 waittestclass AudioEnhs
-AudioEnhs ControlTypeL 9
-AudioEnhs ControlControlTypeL 9
+AudioEnhs Control_Type 9
+AudioEnhs Control_ControlType 9
 AudioEnhs StreamStart
 pause 5000
+
+AudioEnhs AudioEffect_IsEnabled
+AudioEnhs AudioEffect_IsEnforced
+AudioEnhs AudioEffect_Enable 9
+AudioEnhs AudioEffect_Uid
+AudioEnhs AudioEffect_HaveUpdateRights
+AudioEnhs AudioEffect_Enforce 1
+AudioEnhs EffectApply 9
+AudioEnhs AudioEffect_Disable 9
+
 AudioEnhs CloseSource
 AudioEnhs StreamClose
 waittestclass AudioEnhs
@@ -675,16 +696,16 @@
 AudioEnhs SW_SetStereoWideningLevelL 100
 waittestclass AudioEnhs
 AudioEnhs AudioEffect_IsEnabled
-//AudioEnhs AudioEffect_IsEnforced
-//AudioEnhs AudioEffect_Uid
+AudioEnhs AudioEffect_IsEnforced
+AudioEnhs AudioEffect_Uid
 AudioEnhs AudioEffect_HaveUpdateRights
 AudioEnhs AudioEffect_Enforce 1
 pause 2000
 AudioEnhs StreamStart
 AudioEnhs EffectApply 10
 pause 5000
-AudioEnhs ControlTypeL 10
-AudioEnhs ControlControlTypeL 10
+AudioEnhs Control_Type 10
+AudioEnhs Control_ControlType 10
 AudioEnhs AudioEffect_Disable 10
 AudioEnhs CloseSource
 AudioEnhs StreamClose
@@ -725,12 +746,12 @@
 waittestclass AudioEnhs
 AudioEnhs AudioEffect_Enable 11
 AudioEnhs AudioEffect_IsEnabled
-//AudioEnhs AudioEffect_IsEnforced
-//AudioEnhs AudioEffect_Uid
+AudioEnhs AudioEffect_IsEnforced
+AudioEnhs AudioEffect_Uid
 AudioEnhs AudioEffect_HaveUpdateRights
 AudioEnhs AudioEffect_Enforce 1
-AudioEnhs ControlTypeL 11
-AudioEnhs ControlControlTypeL 11
+AudioEnhs Control_Type 11
+AudioEnhs Control_ControlType 11
 pause 2000
 AudioEnhs StreamStart
 AudioEnhs EffectApply 11
@@ -769,6 +790,7 @@
 AudioEnhs AddObserver 12
 AudioEnhs StreamAddSource 0
 AudioEnhs StreamAddSink 4
+AudioEnhs AttachReverb
 AudioEnhs StreamAddEffect 8
 AudioEnhs StreamAddEffect 12
 waittestclass AudioEnhs
@@ -776,23 +798,26 @@
 AudioEnhs StreamOpen
 waittestclass AudioEnhs
 AudioEnhs StreamPrime
+waittestclass AudioEnhs
 AudioEnhs EffectApply 8
 AudioEnhs EffectApply 12
-waittestclass AudioEnhs
+AudioEnhs AudioEffect_Enable 12
 AudioEnhs RL_LevelRangeL
 AudioEnhs RL_SetRoomLevelL -200
 AudioEnhs RL_LevelL
-AudioEnhs ControlTypeL 12
-AudioEnhs ControlControlTypeL 12
-pause 2000
+AudioEnhs Control_Type 12
+AudioEnhs Control_ControlType 12
+pause 1000
 AudioEnhs AudioEffect_IsEnabled
-//AudioEnhs AudioEffect_IsEnforced
-//AudioEnhs AudioEffect_Uid
+AudioEnhs AudioEffect_IsEnforced
+AudioEnhs AudioEffect_Uid
 AudioEnhs AudioEffect_HaveUpdateRights
 AudioEnhs AudioEffect_Enforce 1
 pause 2000
 AudioEnhs StreamStart
 pause 5000
+AudioEnhs AudioEffect_Enable 8
+
 AudioEnhs AudioEffect_Disable 12
 AudioEnhs AudioEffect_Disable 8
 pause 2000
@@ -800,9 +825,11 @@
 AudioEnhs StreamClose
 waittestclass AudioEnhs
 AudioEnhs RemoveObserver 12
+AudioEnhs RemoveObserver 8
 AudioEnhs RemoveObserver 4
 AudioEnhs RemoveObserver 0
 AudioEnhs RemoveObserver 3
+AudioEnhs DetachReverb
 AudioEnhs RemoveEffect 12
 AudioEnhs RemoveEffect 8
 AudioEnhs DeleteStream
@@ -838,12 +865,19 @@
 AudioEnhs DA_DistanceAttenuationL
 AudioEnhs DA_RollOffFactorMaxL
 AudioEnhs DA_RoomRollOffFactorMaxL
-AudioEnhs ControlTypeL 13
-AudioEnhs ControlControlTypeL 13
+AudioEnhs Control_Type 13
+AudioEnhs Control_ControlType 13
 waittestclass AudioEnhs
 AudioEnhs StreamStart
 AudioEnhs EffectApply 13
 pause 5000
+
+AudioEnhs AudioEffect_IsEnabled
+AudioEnhs AudioEffect_Enforce 1
+AudioEnhs AudioEffect_IsEnforced
+AudioEnhs AudioEffect_Uid
+AudioEnhs AudioEffect_HaveUpdateRights
+
 AudioEnhs AudioEffect_Disable 13
 AudioEnhs CloseSource
 AudioEnhs StreamClose
@@ -884,14 +918,22 @@
 AudioEnhs AudioEffect_Enable 17
 AudioEnhs SL_LocationCartesianL 17
 AudioEnhs SL_LocationSphericalL 17
-AudioEnhs ControlTypeL 17
-AudioEnhs ControlControlTypeL 17
+AudioEnhs Control_Type 17
+AudioEnhs Control_ControlType 17
 waittestclass AudioEnhs
 AudioEnhs StreamStart
 AudioEnhs EffectApply 17
 pause 5000
 AudioEnhs SL_SetLocationCartesianL 17 0 0 0
 AudioEnhs SL_SetLocationSphericalL 17 0 0 0
+
+AudioEnhs AudioEffect_IsEnabled
+AudioEnhs AudioEffect_Enforce 1
+AudioEnhs AudioEffect_IsEnforced
+AudioEnhs AudioEffect_Uid
+AudioEnhs AudioEffect_HaveUpdateRights
+
+
 AudioEnhs AudioEffect_Disable 17
 AudioEnhs CloseSource
 AudioEnhs StreamClose
@@ -932,14 +974,22 @@
 AudioEnhs AudioEffect_Enable 16
 AudioEnhs SL_LocationCartesianL 16
 AudioEnhs SL_LocationSphericalL 16
-AudioEnhs ControlTypeL 16
-AudioEnhs ControlControlTypeL 16
+AudioEnhs Control_Type 16
+AudioEnhs Control_ControlType 16
 waittestclass AudioEnhs
 AudioEnhs StreamStart
 AudioEnhs EffectApply 16
 pause 5000
 AudioEnhs SL_SetLocationCartesianL 16 0 0 0
 AudioEnhs SL_SetLocationSphericalL 16 0 0 0
+
+AudioEnhs AudioEffect_IsEnabled
+AudioEnhs AudioEffect_Enforce 1
+AudioEnhs AudioEffect_IsEnforced
+AudioEnhs AudioEffect_Uid
+AudioEnhs AudioEffect_HaveUpdateRights
+
+
 AudioEnhs AudioEffect_Disable 16
 pause 2000
 AudioEnhs CloseSource
@@ -982,10 +1032,18 @@
 AudioEnhs AudioEffect_Enable 18
 AudioEnhs LO_OrientationL 18
 AudioEnhs LO_OrientationVectorsL 18
-AudioEnhs ControlTypeL 18
-AudioEnhs ControlControlTypeL 18
+AudioEnhs Control_Type 18
+AudioEnhs Control_ControlType 18
 AudioEnhs StreamStart
+AudioEnhs EffectApply 18
 pause 5000
+
+AudioEnhs AudioEffect_IsEnabled
+AudioEnhs AudioEffect_Enforce 1
+AudioEnhs AudioEffect_IsEnforced
+AudioEnhs AudioEffect_Uid
+AudioEnhs AudioEffect_HaveUpdateRights
+
 AudioEnhs AudioEffect_Disable 18
 AudioEnhs CloseSource
 AudioEnhs StreamClose
@@ -1023,17 +1081,22 @@
 AudioEnhs StreamOpen
 waittestclass AudioEnhs
 AudioEnhs StreamPrime
-//AudioEnhs AudioEffect_Enable 19
-pause 1000
-//AudioEnhs EffectApply 19
-//AudioEnhs LO_OrientationL 19
-//AudioEnhs LO_OrientationVectorsL 19
+waittestclass AudioEnhs
+AudioEnhs AudioEffect_Enable 19
+AudioEnhs LO_OrientationL 19
+AudioEnhs LO_OrientationVectorsL 19
 waittestclass AudioEnhs
 AudioEnhs StreamStart
+AudioEnhs EffectApply 19
 pause 5000
-//AudioEnhs AudioEffect_Disable 19
-AudioEnhs ControlTypeL 19
-AudioEnhs ControlControlTypeL 19
+AudioEnhs AudioEffect_IsEnabled
+AudioEnhs AudioEffect_Enforce 1
+AudioEnhs AudioEffect_IsEnforced
+AudioEnhs AudioEffect_Uid
+AudioEnhs AudioEffect_HaveUpdateRights
+AudioEnhs AudioEffect_Disable 19
+AudioEnhs Control_Type 19
+AudioEnhs Control_ControlType 19
 AudioEnhs CloseSource
 AudioEnhs StreamClose
 waittestclass AudioEnhs
@@ -1073,6 +1136,14 @@
 AudioEnhs StreamPrime
 waittestclass AudioEnhs
 AudioEnhs AudioEffect_Enable 15
+
+AudioEnhs AudioEffect_IsEnabled
+AudioEnhs AudioEffect_IsEnforced
+AudioEnhs AudioEffect_Uid
+AudioEnhs AudioEffect_HaveUpdateRights
+AudioEnhs AudioEffect_Enforce 1
+AudioEnhs EffectApply 15
+
 AudioEnhs SD_CartesianVelocityL 15
 AudioEnhs SD_SphericalVelocityL 15
 AudioEnhs SD_FactorL 15 
@@ -1082,8 +1153,8 @@
 AudioEnhs SD_SetCartesianVelocityL 15 0 0 0     
 AudioEnhs StreamStart
 pause 5000
-AudioEnhs ControlTypeL 15
-AudioEnhs ControlControlTypeL 15
+AudioEnhs Control_Type 15
+AudioEnhs Control_ControlType 15
 AudioEnhs AudioEffect_Disable 15
 AudioEnhs CloseSource
 AudioEnhs StreamClose
@@ -1124,6 +1195,13 @@
 AudioEnhs StreamPrime
 waittestclass AudioEnhs
 AudioEnhs AudioEffect_Enable 14
+AudioEnhs AudioEffect_IsEnabled
+AudioEnhs AudioEffect_IsEnforced
+AudioEnhs AudioEffect_Uid
+AudioEnhs AudioEffect_HaveUpdateRights
+AudioEnhs AudioEffect_Enforce 1
+AudioEnhs EffectApply 14
+
 AudioEnhs SD_CartesianVelocityL 14
 AudioEnhs SD_SphericalVelocityL 14
 AudioEnhs SD_FactorL 15 
@@ -1131,8 +1209,8 @@
 AudioEnhs SD_FactorMaxL 15
 AudioEnhs SD_SetSphericalVelocityL 14 0 0 0
 AudioEnhs SD_SetCartesianVelocityL 14 0 0 0     
-AudioEnhs ControlTypeL 14
-AudioEnhs ControlControlTypeL 14
+AudioEnhs Control_Type 14
+AudioEnhs Control_ControlType 14
 AudioEnhs StreamStart
 pause 5000
 AudioEnhs AudioEffect_Disable 14
@@ -1182,8 +1260,8 @@
 #AudioEnhs PDLSGetDLRateL
 #AudioEnhs PDLSGetBitRateL
 #AudioEnhs PDLSResumeDownloadL
-#AudioEnhs ControlTypeL 6
-#AudioEnhs ControlControlTypeL 6
+#AudioEnhs Control_Type 6
+#AudioEnhs Control_ControlType 6
 #AudioEnhs PDLSGetSize
 #pause 10000
 #AudioEnhs StreamStart
@@ -1288,6 +1366,7 @@
 AudioEnhs ER_ReflectionLevelRange
 AudioEnhs ER_ReverbDelay
 AudioEnhs ER_ReverbDelayMax
+AudioEnhs ER_DelayMaxMax
 AudioEnhs ER_ReverbLevel
 AudioEnhs ER_ReverbLevelRange
 AudioEnhs ER_RoomHFLevel
@@ -1309,8 +1388,8 @@
 AudioEnhs RL_SetRoomLevelL -200
 AudioEnhs RL_LevelL
 AudioEnhs AudioEffect_IsEnabled
-//AudioEnhs AudioEffect_IsEnforced
-//AudioEnhs AudioEffect_Uid
+AudioEnhs AudioEffect_IsEnforced
+AudioEnhs AudioEffect_Uid
 AudioEnhs AudioEffect_HaveUpdateRights
 AudioEnhs AudioEffect_Enforce 1
 AudioEnhs StreamStart
--- a/mmmw_plat/enhanced_media_client_api/tsrc/EnhanMediaTestClass/inc/CEMCConstants.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmmw_plat/enhanced_media_client_api/tsrc/EnhanMediaTestClass/inc/CEMCConstants.h	Mon May 03 12:59:52 2010 +0300
@@ -273,7 +273,7 @@
 	EMC_LLLocationSphericalL,
 	EMC_LLSetLocationCartesianL,
 	EMC_LLSetLocationSphericalL,
-
+	EMC_ER_DelayMaxMax,
     EMC_NoCommand
 
 };
--- a/mmmw_plat/enhanced_media_client_api/tsrc/EnhanMediaTestClass/inc/EnhanMediaTestClass.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmmw_plat/enhanced_media_client_api/tsrc/EnhanMediaTestClass/inc/EnhanMediaTestClass.h	Mon May 03 12:59:52 2010 +0300
@@ -437,7 +437,9 @@
 	    TInt HandleAudioEffectEnableL(CStifItemParser& aItem);
 	    TInt HandleAudioEffectDisableL(CStifItemParser& aItem);
 	    TInt AudioEffectIsEnforced (CStifItemParser& aItem);
-
+//added
+	    TInt  AudioCreateEffect (CStifItemParser& aItem);
+	    
 	    TInt AudioEffectUid (CStifItemParser& aItem);
 	    TInt AudioEffectHaveUpdateRights (CStifItemParser& aItem);
 	    TInt AudioEffectEnforce (CStifItemParser& aItem);
@@ -472,6 +474,7 @@
 	    TInt HandleReverbSetRoomLevelL(CStifItemParser& aItem);
 	    TInt HandleReverbDelayMaxL(CStifItemParser& aItem);
 
+	    TInt HandleDelayMaxL(CStifItemParser& aItem);
 
 	    TInt HandleSWIsContinuousLevelSupportedL(CStifItemParser& aItem);
 	    TInt HandleSWSetStereoWideningLevelL(CStifItemParser& aItem);
--- a/mmmw_plat/enhanced_media_client_api/tsrc/EnhanMediaTestClass/src/EnhanMediaTestClassBlocks.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmmw_plat/enhanced_media_client_api/tsrc/EnhanMediaTestClass/src/EnhanMediaTestClassBlocks.cpp	Mon May 03 12:59:52 2010 +0300
@@ -296,7 +296,8 @@
 
 		ENTRY( "AttachReverb",CEnhanMediaTestClass::AttachReverb ),
 		ENTRY( "DetachReverb",CEnhanMediaTestClass::DetachReverb ),
-
+	  //added
+		ENTRY( "ER_DelayMaxMax",CEnhanMediaTestClass::HandleDelayMaxL ),
 
         };
 
@@ -3171,12 +3172,16 @@
 
     iLog->Log(_L("CEnhanMediaTestClass::BalGetBalance "));
 	TInt status(KErrNone);
+	TInt status1(KErrNone);
+	TInt status2(KErrNone);
 	TInt balance=0;
 	if(!iMBalanceControl)
 	    {
 	    return status = KErrNotReady;
 	    }
-	status = iMBalanceControl->GetBalance(balance);
+	status1 = iMBalanceControl->GetBalance(balance);
+	status2=iMBalanceControl->SetBalance(balance);
+	status = status1 || status2;
     iLog->Log(_L("CEnhanMediaTestClass::BalGetBalance [%d]"),balance);
     return status;
 	}
@@ -4399,6 +4404,30 @@
 	return status;
 	}
 
+///*TInt CEnhanMediaTestClass::AudioCreateEffect (CStifItemParser& /*aItem*/)
+ /*  {
+    TInt status(KErrNone);
+    TBool enabled;
+
+    if(!iEffectControl)
+        {
+        status = KErrNotReady;
+        }
+   // CEqualizerEffect *ptr=iEffectControl;
+    //status = static_cast<MControl*>(iEffectControl);
+   // status = ptr->CreateEffectProxy();
+    if (status == KErrNone)
+        {
+        iLog->Log(_L("AudioEffectIsEnabled status = %d"), status);
+        }
+    else
+        {
+        iLog->Log(_L("AudioEffectIsEnabled ERROR = [%d]"), status);
+        }
+
+    return status;
+    }
+*/
 TInt CEnhanMediaTestClass::AudioEffectIsEnforced (CStifItemParser& /*aItem*/)
 	{
 	TInt status(KErrNone);
@@ -4863,6 +4892,7 @@
 	return status;
     }
 
+
 TInt CEnhanMediaTestClass::HandleReverbReflectionsDelayMaxL(CStifItemParser& /*aItem*/)
 	{
 
@@ -5202,6 +5232,21 @@
 	return status;
 	}
 
+TInt CEnhanMediaTestClass::HandleDelayMaxL(CStifItemParser& /*aItem*/)
+    {
+    iLog->Log(_L("CEnhanMediaTestClass::HandleReverbDelayMaxL"));
+    TInt status(KErrNone);
+    //status = aItem.GetNextInt(controltype);
+    TUint value;
+    if(!iEffectControl)
+        {
+        return status = KErrNotReady;
+        }
+    status = static_cast<MReverbControl*>(iEffectControl)->DelayMax(value);
+    iLog->Log(_L("CEnhanMediaTestClass::HandleDelayMaxL value = [%d]"),value);
+    return status;
+    }
+
 TInt CEnhanMediaTestClass::HandleSWIsContinuousLevelSupportedL(CStifItemParser& /*aItem*/)
 	{
     iLog->Log(_L("CEnhanMediaTestClass::HandleReverbDelayMaxL"));
@@ -5248,7 +5293,9 @@
 
 TInt CEnhanMediaTestClass::LO_OrientationL (CStifItemParser& aItem)
 	{
-	TInt status(KErrNone);
+    TInt status(KErrNone);
+	TInt status1(KErrNone);
+	TInt status2(KErrNone);
 
 	if(!iEffectControl)
 	    {
@@ -5264,13 +5311,15 @@
 
    if (TControl(control) == ELISTORIENTCONTROL)
 	   {
-	   status = static_cast<MListenerOrientationControl*>(iEffectControl)->Orientation(a,b,c);
+	   status1 = static_cast<MListenerOrientationControl*>(iEffectControl)->Orientation(a,b,c);
+	   status2=static_cast<MListenerOrientationControl*>(iEffectControl)->SetOrientation(a,b,c);
 	   }
    else if (TControl(control) == ESOURORIENTCONTROL)
 	   {
-	   status = static_cast<MSourceOrientationControl*>(iEffectControl)->Orientation(a,b,c);
+	   status1 = static_cast<MSourceOrientationControl*>(iEffectControl)->Orientation(a,b,c);
+	   status2= static_cast<MSourceOrientationControl*>(iEffectControl)->SetOrientation(a,b,c);
 	   }
-
+    status=status1 || status2;
     if (status == KErrNone)
     	{
     	iLog->Log(_L("LO_OrientationL status = %d"), status);
@@ -5286,6 +5335,8 @@
 TInt CEnhanMediaTestClass::LO_OrientationVectorsL (CStifItemParser& aItem)
 	{
 	TInt status(KErrNone);
+	TInt status1(KErrNone);
+	TInt status2(KErrNone);
 
 	if(!iEffectControl)
 	    {
@@ -5298,13 +5349,15 @@
     status = aItem.GetNextInt(control);
     if (TControl(control) == ELISTORIENTCONTROL)
  	   {
- 	    status = static_cast<MListenerOrientationControl*>(iEffectControl)->OrientationVectors(a,b,c,d,e,f);
+ 	    status1 = static_cast<MListenerOrientationControl*>(iEffectControl)->OrientationVectors(a,b,c,d,e,f);
+ 	    status2=  static_cast<MListenerOrientationControl*>(iEffectControl)->SetOrientationVectors(a,b,c,d,e,f);
  	   }
     else if (TControl(control) == ESOURORIENTCONTROL)
  	   {
-	    status = static_cast<MSourceOrientationControl*>(iEffectControl)->OrientationVectors(a,b,c,d,e,f);
+	    status1 = static_cast<MSourceOrientationControl*>(iEffectControl)->OrientationVectors(a,b,c,d,e,f);
+	    status2=  static_cast<MSourceOrientationControl*>(iEffectControl)->SetOrientationVectors(a,b,c,d,e,f);
  	   }
-
+    status = status1 || status2;
 
     if (status == KErrNone)
     	{
@@ -5377,6 +5430,8 @@
     TUint d,e;
     status = static_cast<MDistanceAttenuationControl*>(iEffectControl)->DistanceAttenuation(a,b,c,d,e);
     iLog->Log(_L("CEnhanMediaTestClass::HandleDADistanceAttenuationL a = [%d] - b = [%d] - c = [%d] - d = [%d]- e = [%d]"),a,b,c,d,e);
+    //added
+    status=static_cast<MDistanceAttenuationControl*>(iEffectControl)->SetDistanceAttenuation(a,b,c,d,e);
 	return status;
 	}
 TInt CEnhanMediaTestClass::HandleDARollOffFactorMaxL(CStifItemParser& /*aItem*/)
@@ -6118,11 +6173,13 @@
 
     if (TControl(control) == ELISTDOPPCONTROL)
     	{
-        status = static_cast<MListenerDopplerControl*>(iEffectControl)->SetCartesianVelocity(a,b,c);
+    
+        status = static_cast<MListenerDopplerControl*>(iEffectControl)->SetSphericalVelocity(a,b,c);
     	}
     if (TControl(control) == ESOURDOPPCONTROL)
     	{
-        status = static_cast<MSourceDopplerControl*>(iEffectControl)->SetCartesianVelocity(a,b,c);
+    
+        status = static_cast<MSourceDopplerControl*>(iEffectControl)->SetSphericalVelocity(a,b,c);
     	}
     iLog->Log(_L("CEnhanMediaTestClass::HandleSDSetSphericalVelocityL END"));
 	return status;
--- a/mmmw_plat/group/bld.inf	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmmw_plat/group/bld.inf	Mon May 03 12:59:52 2010 +0300
@@ -43,3 +43,4 @@
 #include "../thumbnail_engine_api/group/bld.inf"
 #include "../telephony_multimedia_service_api/group/bld.inf"
 #include "../openmax_al_api/group/bld.inf"
+#include "../system_tone_service_api/group/bld.inf"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/bmarm/openmaxaltestmoduleu.def	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	LibEntryL__FR13CTestModuleIf @ 1 NONAME R3UNUSED ; LibEntryL(CTestModuleIf &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/bwins/openmaxaltestmoduleu.def	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * __cdecl LibEntryL(class CTestModuleIf &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_common.cfg	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,155 @@
+//
+// Copyright (c) 2009 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: 
+//
+//
+
+[Define]
+KErrNotFound -1
+KErrGeneral -2
+KErrNotSupported -5
+KErrAlreadyExists -11
+KErrNotReady -18
+KErrAccessDenied -21
+
+KErrEventPending -2000
+KErrCallbackErrorCode -2001
+KErrUnexpectedValue -2002
+KErrNotificationPending -2005
+KErrUnexpectedNotification -2006
+KErrTimeoutController -2007
+
+
+XA_RESULT_SUCCESS                   0
+XA_RESULT_PRECONDITIONS_VIOLATED    1
+XA_RESULT_PARAMETER_INVALID         2
+XA_RESULT_MEMORY_FAILURE            3
+XA_RESULT_RESOURCE_ERROR            4
+XA_RESULT_RESOURCE_LOST             5
+XA_RESULT_IO_ERROR                  6
+XA_RESULT_BUFFER_INSUFFICIENT       7
+XA_RESULT_CONTENT_CORRUPTED         8
+XA_RESULT_CONTENT_UNSUPPORTED       9
+XA_RESULT_CONTENT_NOT_FOUND         10
+XA_RESULT_PERMISSION_DENIED         11
+XA_RESULT_FEATURE_UNSUPPORTED       12
+XA_RESULT_INTERNAL_ERROR            13
+XA_RESULT_UNKNOWN_ERROR             14
+XA_RESULT_OPERATION_ABORTED         15
+XA_RESULT_CONTROL_LOST              16
+
+[Enddefine]
+
+//Constants for Data Source
+//------------------------------------------------
+//          DataSourceType:
+//                  Audio [0]
+//                  Video [1]
+//                  Image [2]
+//          DataLocatorType:
+//                  URI     [0]
+//                  Address [1]
+//          DataFormatType:
+//                  MIME     [0]
+//                  PCM      [1]
+//                  RAMIMAGE [2]
+//          ContainerType:
+//                 CONTAINERTYPE_UNSPECIFIED    [0]
+//                 CONTAINERTYPE_RAW            [1]
+//                 CONTAINERTYPE_ASF            [2]
+//                 CONTAINERTYPE_AVI            [3]
+//                 CONTAINERTYPE_BMP            [4]
+//                 CONTAINERTYPE_JPG            [5]
+//                 CONTAINERTYPE_JPG2000        [6]
+//                 CONTAINERTYPE_M4A            [7]
+//                 CONTAINERTYPE_MP3            [8]
+//                 CONTAINERTYPE_MP4            [9]
+//                 CONTAINERTYPE_MPEG_ES        [10]
+//                 CONTAINERTYPE_MPEG_PS        [11]
+//                 CONTAINERTYPE_MPEG_TS        [12]
+//                 CONTAINERTYPE_QT             [13]
+//                 CONTAINERTYPE_WAV            [14]
+//                 CONTAINERTYPE_XMF_0          [15]
+//                 CONTAINERTYPE_XMF_1          [16]
+//                 CONTAINERTYPE_XMF_2          [17]
+//                 CONTAINERTYPE_XMF_3          [18]
+//                 CONTAINERTYPE_XMF_GENERIC    [19]
+//                 CONTAINERTYPE_AMR            [20]
+//                 CONTAINERTYPE_AAC            [21]
+//                 CONTAINERTYPE_3GPP           [22]
+//                 CONTAINERTYPE_3GA            [23]
+//                 CONTAINERTYPE_RM             [24]
+//                 CONTAINERTYPE_DMF            [25]        
+//                 CONTAINERTYPE_SMF            [26]    
+//                 CONTAINERTYPE_MOBILE_DLS     [27]
+//
+//          MimeTypes:
+//                  Audio: 
+//                      wav         [0]
+//                      ogg         [1]
+//                      sp-midi     [2]                            
+//                      mobile-xmf  [3]
+//                      Amr-Wb      [4]
+//                      3gpp2       [5]
+//                      mp4         [6]
+//                  Video:
+//                      Avi         [7]
+//                      ogg         [8]?
+//                  Image:
+//                      jpg         [9]
+//                      raw-image   [10]                                        
+//-------------------------------------------------
+
+// IID numbers for interfaces to mention during object creation
+//	 XA_IID_NULL                    	1
+//	 XA_IID_OBJECT                    	2
+//	 XA_IID_CONFIGEXTENSION             3
+//	 XA_IID_DYNAMICINTERFACEMANAGEMENT  4
+//	 XA_IID_ENGINE                    	5
+//	 XA_IID_THREADSYNC                  6
+//	 XA_IID_PLAY                    	7
+//	 XA_IID_PLAYBACKRATE                8
+//	 XA_IID_PREFETCHSTATUS              9
+//	 XA_IID_SEEK                    	10
+//	 XA_IID_VOLUME                    	11
+//	 XA_IID_IMAGECONTROLS               12
+//	 XA_IID_IMAGEEFFECTS                13
+//	 XA_IID_VIDEOPOSTPROCESSING         14
+//	 XA_IID_RECORD                    	15
+//	 XA_IID_SNAPSHOT                    16
+//	 XA_IID_METADATAEXTRACTION          17
+//	 XA_IID_METADATAINSERTION           18
+//	 XA_IID_METADATATRAVERSAL           19
+//	 XA_IID_DYNAMICSOURCE               20
+//	 XA_IID_CAMERACAPABILITIES          21
+//	 XA_IID_CAMERA                    	22
+//	 XA_IID_AUDIOIODEVICECAPABILITIES   23
+//	 XA_IID_DEVICEVOLUME                24
+//	 XA_IID_EQUALIZER                   25
+//	 XA_IID_OUTPUTMIX                   26
+//	 XA_IID_RADIO                    	27
+//	 XA_IID_RDS                         28
+//	 XA_IID_VIBRA                    	29
+//	 XA_IID_LED                         30
+//	 XA_IID_AUDIODECODERCAPABILITIES    31
+//	 XA_IID_AUDIOENCODER                32
+//	 XA_IID_AUDIOENCODERCAPABILITIES    33
+//	 XA_IID_IMAGEENCODERCAPABILITIES    34
+//	 XA_IID_IMAGEDECODERCAPABILITIES    35
+//	 XA_IID_IMAGEENCODER                36
+//	 XA_IID_VIDEODECODERCAPABILITIES    37
+//	 XA_IID_VIDEOENCODER                38
+//	 XA_IID_VIDEOENCODERCAPABILITIES    39
+//	 XA_IID_STREAMINFORMATION           40
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_engine_aiodcitf.cfg	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,180 @@
+//
+// Copyright (c) 2009 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: 
+//
+//
+
+// IID numbers for interfaces to mention during object creation
+//	 XA_IID_NULL                    	1
+//	 XA_IID_OBJECT                    	2
+//	 XA_IID_CONFIGEXTENSION             3
+//	 XA_IID_DYNAMICINTERFACEMANAGEMENT  4
+//	 XA_IID_ENGINE                    	5
+//	 XA_IID_THREADSYNC                  6
+//	 XA_IID_PLAY                    	7
+//	 XA_IID_PLAYBACKRATE                8
+//	 XA_IID_PREFETCHSTATUS              9
+//	 XA_IID_SEEK                    	10
+//	 XA_IID_VOLUME                    	11
+//	 XA_IID_IMAGECONTROLS               12
+//	 XA_IID_IMAGEEFFECTS                13
+//	 XA_IID_VIDEOPOSTPROCESSING         14
+//	 XA_IID_RECORD                    	15
+//	 XA_IID_SNAPSHOT                    16
+//	 XA_IID_METADATAEXTRACTION          17
+//	 XA_IID_METADATAINSERTION           18
+//	 XA_IID_METADATATRAVERSAL           19
+//	 XA_IID_DYNAMICSOURCE               20
+//	 XA_IID_CAMERACAPABILITIES          21
+//	 XA_IID_CAMERA                    	22
+//	 XA_IID_AUDIOIODEVICECAPABILITIES   23
+//	 XA_IID_DEVICEVOLUME                24
+//	 XA_IID_EQUALIZER                   25
+//	 XA_IID_OUTPUTMIX                   26
+//	 XA_IID_RADIO                    	27
+//	 XA_IID_RDS                         28
+//	 XA_IID_VIBRA                    	29
+//	 XA_IID_LED                         30
+//	 XA_IID_AUDIODECODERCAPABILITIES    31
+//	 XA_IID_AUDIOENCODER                32
+//	 XA_IID_AUDIOENCODERCAPABILITIES    33
+//	 XA_IID_IMAGEENCODERCAPABILITIES    34
+//	 XA_IID_IMAGEDECODERCAPABILITIES    35
+//	 XA_IID_IMAGEENCODER                36
+//	 XA_IID_VIDEODECODERCAPABILITIES    37
+//	 XA_IID_VIDEOENCODER                38
+//	 XA_IID_VIDEOENCODERCAPABILITIES    39
+//	 XA_IID_STREAMINFORMATION           40
+
+[Test]
+title 3.1 AudioIODevCapItf GetAvailableAudioInputs
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 23
+ALImpl al_audioiodevcapitf_GetAvailableAudioInputs
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 3.2 AudioIODevCapItf QueryAudioInputCapabilities
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 23
+ALImpl al_audioiodevcapitf_QueryAudioInputCapabilities 2910736385
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 3.3 AudioIODevCapItf RegisterAvailableAudioInputsChangedCallback
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 23
+ALImpl al_audioiodevcapitf_RegisterAvailableAudioInputsChangedCallback
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 3.4 AudioIODevCapItf GetAvailableAudioOutputs
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 23
+ALImpl al_audioiodevcapitf_GetAvailableAudioOutputs
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 3.5 AudioIODevCapItf QueryAudioOutputCapabilities
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 23
+ALImpl al_audioiodevcapitf_QueryAudioOutputCapabilities 2910736386
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 3.6 AudioIODevCapItf RegisterAvailableAudioOutputsChangedCallback
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 23
+ALImpl al_audioiodevcapitf_RegisterAvailableAudioOutputsChangedCallback
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 3.7 AudioIODevCapItf RegisterDefaultDeviceIDMapChangedCallback
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 23
+ALImpl al_audioiodevcapitf_RegisterDefaultDeviceIDMapChangedCallback
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+
+[Test]
+title 3.8 AudioIODevCapItf GetAssociatedAudioInputs
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 23
+ALImpl al_audioiodevcapitf_GetAssociatedAudioInputs 2910736386
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 3.9 AudioIODevCapItf GetAssociatedAudioOutputs
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 23
+ALImpl al_audioiodevcapitf_GetAssociatedAudioOutputs 2910736385
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 3.10 AudioIODevCapItf GetDefaultAudioDevices
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 23
+ALImpl al_audioiodevcapitf_GetDefaultAudioDevices FFFFFFFF
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 3.11 AudioIODevCapItf QuerySampleFormatsSupported
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 23
+ALImpl al_audioiodevcapitf_QuerySampleFormatsSupported 2910736385 44100
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_engine_audenccapitf.cfg	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,80 @@
+//
+// Copyright (c) 2009 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: 
+//
+//
+
+// IID numbers for interfaces to mention during object creation
+//	 XA_IID_NULL                    	1
+//	 XA_IID_OBJECT                    	2
+//	 XA_IID_CONFIGEXTENSION             3
+//	 XA_IID_DYNAMICINTERFACEMANAGEMENT  4
+//	 XA_IID_ENGINE                    	5
+//	 XA_IID_THREADSYNC                  6
+//	 XA_IID_PLAY                    	7
+//	 XA_IID_PLAYBACKRATE                8
+//	 XA_IID_PREFETCHSTATUS              9
+//	 XA_IID_SEEK                    	10
+//	 XA_IID_VOLUME                    	11
+//	 XA_IID_IMAGECONTROLS               12
+//	 XA_IID_IMAGEEFFECTS                13
+//	 XA_IID_VIDEOPOSTPROCESSING         14
+//	 XA_IID_RECORD                    	15
+//	 XA_IID_SNAPSHOT                    16
+//	 XA_IID_METADATAEXTRACTION          17
+//	 XA_IID_METADATAINSERTION           18
+//	 XA_IID_METADATATRAVERSAL           19
+//	 XA_IID_DYNAMICSOURCE               20
+//	 XA_IID_CAMERACAPABILITIES          21
+//	 XA_IID_CAMERA                    	22
+//	 XA_IID_AUDIOIODEVICECAPABILITIES   23
+//	 XA_IID_DEVICEVOLUME                24
+//	 XA_IID_EQUALIZER                   25
+//	 XA_IID_OUTPUTMIX                   26
+//	 XA_IID_RADIO                    	27
+//	 XA_IID_RDS                         28
+//	 XA_IID_VIBRA                    	29
+//	 XA_IID_LED                         30
+//	 XA_IID_AUDIODECODERCAPABILITIES    31
+//	 XA_IID_AUDIOENCODER                32
+//	 XA_IID_AUDIOENCODERCAPABILITIES    33
+//	 XA_IID_IMAGEENCODERCAPABILITIES    34
+//	 XA_IID_IMAGEDECODERCAPABILITIES    35
+//	 XA_IID_IMAGEENCODER                36
+//	 XA_IID_VIDEODECODERCAPABILITIES    37
+//	 XA_IID_VIDEOENCODER                38
+//	 XA_IID_VIDEOENCODERCAPABILITIES    39
+//	 XA_IID_STREAMINFORMATION           40
+
+[Test]
+title 4.1 AudioEncCapItf GetAudioEncoders
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 33
+ALImpl al_audioencodercapitf_GetAudioEncoders
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 4.2 AudioEncCapItf GetAudioEncoderCapabilities
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 33
+ALImpl al_audioencodercapitf_GetAudioEncoderCapabilities 1
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_engine_engineitf.cfg	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,289 @@
+//
+// Copyright (c) 2009 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: 
+//
+//
+
+// IID numbers for interfaces to mention during object creation
+//	 XA_IID_NULL                    	1
+//	 XA_IID_OBJECT                    	2
+//	 XA_IID_CONFIGEXTENSION             3
+//	 XA_IID_DYNAMICINTERFACEMANAGEMENT  4
+//	 XA_IID_ENGINE                    	5
+//	 XA_IID_THREADSYNC                  6
+//	 XA_IID_PLAY                    	7
+//	 XA_IID_PLAYBACKRATE                8
+//	 XA_IID_PREFETCHSTATUS              9
+//	 XA_IID_SEEK                    	10
+//	 XA_IID_VOLUME                    	11
+//	 XA_IID_IMAGECONTROLS               12
+//	 XA_IID_IMAGEEFFECTS                13
+//	 XA_IID_VIDEOPOSTPROCESSING         14
+//	 XA_IID_RECORD                    	15
+//	 XA_IID_SNAPSHOT                    16
+//	 XA_IID_METADATAEXTRACTION          17
+//	 XA_IID_METADATAINSERTION           18
+//	 XA_IID_METADATATRAVERSAL           19
+//	 XA_IID_DYNAMICSOURCE               20
+//	 XA_IID_CAMERACAPABILITIES          21
+//	 XA_IID_CAMERA                    	22
+//	 XA_IID_AUDIOIODEVICECAPABILITIES   23
+//	 XA_IID_DEVICEVOLUME                24
+//	 XA_IID_EQUALIZER                   25
+//	 XA_IID_OUTPUTMIX                   26
+//	 XA_IID_RADIO                    	27
+//	 XA_IID_RDS                         28
+//	 XA_IID_VIBRA                    	29
+//	 XA_IID_LED                         30
+//	 XA_IID_AUDIODECODERCAPABILITIES    31
+//	 XA_IID_AUDIOENCODER                32
+//	 XA_IID_AUDIOENCODERCAPABILITIES    33
+//	 XA_IID_IMAGEENCODERCAPABILITIES    34
+//	 XA_IID_IMAGEDECODERCAPABILITIES    35
+//	 XA_IID_IMAGEENCODER                36
+//	 XA_IID_VIDEODECODERCAPABILITIES    37
+//	 XA_IID_VIDEOENCODER                38
+//	 XA_IID_VIDEOENCODERCAPABILITIES    39
+//	 XA_IID_STREAMINFORMATION           40
+
+
+[Test]
+title 2.1 EngItf CreateCameraDevice
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+allownextresult 12
+ALImpl al_engitf_CreateCameraDevice 0 1
+//ALImpl al_objitf_Destroy 9
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 2.2 EngItf CreateRadioDvice
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+allownextresult 12
+ALImpl al_engitf_CreateRadioDevice
+//ALImpl al_objitf_Destroy 6
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 2.3 EngItf CreateLEDDevice
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+allownextresult 12
+ALImpl al_engitf_CreateLEDDevice 0 1
+//ALImpl al_objitf_Destroy 2
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 2.4 EngItf CreateVibraDevice
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+allownextresult 12
+ALImpl al_engitf_CreateVibraDevice 0 1
+//ALImpl al_objitf_Destroy 3
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 2.5 EngItf CreateMediaPlayer
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/test.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSource 1 1 1
+ALImpl al_SetDataLocator 3 1 2910736386
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 3 1 1
+allownextresult 0
+ALImpl al_engitf_CreateMediaPlayer 0
+ALImpl al_objitf_Destroy 4
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 2.6 EngItf CreateMediaRecorder
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/test.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 2.7 EngItf CreateOutputMix
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+allownextresult 12
+ALImpl al_engitf_CreateOutputMix
+//ALImpl al_objitf_Destroy 7
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 2.8 EngItf CreateMetaDataExtractor
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/test.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSource 1 1 3
+allownextresult 12
+ALImpl al_engitf_CreateMetadataExtractor
+//ALImpl al_objitf_Destroy 8
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 2.9 EngItf CreateExtensionObject
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+allownextresult 12
+ALImpl al_engitf_CreateExtensionObject 0 1
+//ALImpl al_objitf_Destroy 8
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 2.10 EngItf GetImplInfo
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_engitf_GetImplementationInfo
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 2.11 EngItf QuerySupportedProfiles
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_engitf_QuerySupportedProfiles
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 2.12 EngItf QueryNumSupportedInterfaces
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_engitf_QueryNumSupportedInterfaces 1
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 2.13 EngItf QuerySupportedInterfaces
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_engitf_QuerySupportedInterfaces 1 0
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 2.14 EngItf QueryNumSupportedExtension
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_engitf_QueryNumSupportedExtension
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 2.15 EngItf QuerySupportedExtension
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+allownextresult 2
+ALImpl al_engitf_QuerySupportedExtension 0
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 2.16 EngItf IsExtensionSupported
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_engitf_IsExtensionSupported TestExtn
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 2.17 EngItf QueryLEDCapabilities
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_engitf_QueryLEDCapabilities
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 2.18 EngItf QueryVibraCapabilities
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_engitf_QueryVibraCapabilities
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_global.cfg	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,89 @@
+//
+// Copyright (c) 2009 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: 
+//
+//
+
+// IID numbers for interfaces to mention during object creation
+//	 XA_IID_NULL                    	1
+//	 XA_IID_OBJECT                    	2
+//	 XA_IID_CONFIGEXTENSION             3
+//	 XA_IID_DYNAMICINTERFACEMANAGEMENT  4
+//	 XA_IID_ENGINE                    	5
+//	 XA_IID_THREADSYNC                  6
+//	 XA_IID_PLAY                    	7
+//	 XA_IID_PLAYBACKRATE                8
+//	 XA_IID_PREFETCHSTATUS              9
+//	 XA_IID_SEEK                    	10
+//	 XA_IID_VOLUME                    	11
+//	 XA_IID_IMAGECONTROLS               12
+//	 XA_IID_IMAGEEFFECTS                13
+//	 XA_IID_VIDEOPOSTPROCESSING         14
+//	 XA_IID_RECORD                    	15
+//	 XA_IID_SNAPSHOT                    16
+//	 XA_IID_METADATAEXTRACTION          17
+//	 XA_IID_METADATAINSERTION           18
+//	 XA_IID_METADATATRAVERSAL           19
+//	 XA_IID_DYNAMICSOURCE               20
+//	 XA_IID_CAMERACAPABILITIES          21
+//	 XA_IID_CAMERA                    	22
+//	 XA_IID_AUDIOIODEVICECAPABILITIES   23
+//	 XA_IID_DEVICEVOLUME                24
+//	 XA_IID_EQUALIZER                   25
+//	 XA_IID_OUTPUTMIX                   26
+//	 XA_IID_RADIO                    	27
+//	 XA_IID_RDS                         28
+//	 XA_IID_VIBRA                    	29
+//	 XA_IID_LED                         30
+//	 XA_IID_AUDIODECODERCAPABILITIES    31
+//	 XA_IID_AUDIOENCODER                32
+//	 XA_IID_AUDIOENCODERCAPABILITIES    33
+//	 XA_IID_IMAGEENCODERCAPABILITIES    34
+//	 XA_IID_IMAGEDECODERCAPABILITIES    35
+//	 XA_IID_IMAGEENCODER                36
+//	 XA_IID_VIDEODECODERCAPABILITIES    37
+//	 XA_IID_VIDEOENCODER                38
+//	 XA_IID_VIDEOENCODERCAPABILITIES    39
+//	 XA_IID_STREAMINFORMATION           40
+
+[Test]
+title 1.1 xaCreateEngine
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 1.2 xaQueryNumSupportedInterfaces
+create openmaxaltestmodule ALImpl
+ALImpl al_queryNumSupportedEngineInterfaces
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 1.3 xaQuerySupportedInterfaces
+create openmaxaltestmodule ALImpl
+ALImpl al_querySupportedEngineInterfaces 5
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 1.4 Create Delete
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_objectitf.cfg	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,173 @@
+//
+// Copyright (c) 2009 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: 
+//
+//
+
+[Test]
+title 5.1 ObjectItf SetPriority
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_objitf_SetPriority 1 100 100
+ALImpl al_objitf_GetPriority 1
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_SetPositionUpdatePeriod 1000
+ALImpl al_recorditf_GetPositionUpdatePeriod
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 5.2 ObjectItf GetPriority
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_objitf_SetPriority 1 100 100
+ALImpl al_objitf_GetPriority 1
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_SetPositionUpdatePeriod 1000
+ALImpl al_recorditf_GetPositionUpdatePeriod
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 5.3 ObjectItf SetLossOfControlInterfaces
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_objitf_SetLossOfControlInterfaces 1 0 1
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_SetPositionUpdatePeriod 1000
+ALImpl al_recorditf_GetPositionUpdatePeriod
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 5.4 ObjectItf RegisterCallback
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_objitf_RegisterCallback 1
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_SetPositionUpdatePeriod 1000
+ALImpl al_recorditf_GetPositionUpdatePeriod
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 5.5 ObjectItf GetState
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_objitf_GetState 1
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_SetPositionUpdatePeriod 1000
+ALImpl al_recorditf_GetPositionUpdatePeriod
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 5.6 ObjectItf Resume
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+allownextresult XA_RESULT_PRECONDITIONS_VIOLATED
+ALImpl al_objitf_Resume 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_SetPositionUpdatePeriod 1000
+ALImpl al_recorditf_GetPositionUpdatePeriod
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 5.7 ObjectItf AbortAsyncOperation
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_AbortAsyncOperation 5
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_SetPositionUpdatePeriod 1000
+ALImpl al_recorditf_GetPositionUpdatePeriod
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_ro_audioencoderitf.cfg	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,98 @@
+//
+// Copyright (c) 2009 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: 
+//
+//
+
+// IID numbers for interfaces to mention during object creation
+//	 XA_IID_NULL                    	1
+//	 XA_IID_OBJECT                    	2
+//	 XA_IID_CONFIGEXTENSION             3
+//	 XA_IID_DYNAMICINTERFACEMANAGEMENT  4
+//	 XA_IID_ENGINE                    	5
+//	 XA_IID_THREADSYNC                  6
+//	 XA_IID_PLAY                    	7
+//	 XA_IID_PLAYBACKRATE                8
+//	 XA_IID_PREFETCHSTATUS              9
+//	 XA_IID_SEEK                    	10
+//	 XA_IID_VOLUME                    	11
+//	 XA_IID_IMAGECONTROLS               12
+//	 XA_IID_IMAGEEFFECTS                13
+//	 XA_IID_VIDEOPOSTPROCESSING         14
+//	 XA_IID_RECORD                    	15
+//	 XA_IID_SNAPSHOT                    16
+//	 XA_IID_METADATAEXTRACTION          17
+//	 XA_IID_METADATAINSERTION           18
+//	 XA_IID_METADATATRAVERSAL           19
+//	 XA_IID_DYNAMICSOURCE               20
+//	 XA_IID_CAMERACAPABILITIES          21
+//	 XA_IID_CAMERA                    	22
+//	 XA_IID_AUDIOIODEVICECAPABILITIES   23
+//	 XA_IID_DEVICEVOLUME                24
+//	 XA_IID_EQUALIZER                   25
+//	 XA_IID_OUTPUTMIX                   26
+//	 XA_IID_RADIO                    	27
+//	 XA_IID_RDS                         28
+//	 XA_IID_VIBRA                    	29
+//	 XA_IID_LED                         30
+//	 XA_IID_AUDIODECODERCAPABILITIES    31
+//	 XA_IID_AUDIOENCODER                32
+//	 XA_IID_AUDIOENCODERCAPABILITIES    33
+//	 XA_IID_IMAGEENCODERCAPABILITIES    34
+//	 XA_IID_IMAGEDECODERCAPABILITIES    35
+//	 XA_IID_IMAGEENCODER                36
+//	 XA_IID_VIDEODECODERCAPABILITIES    37
+//	 XA_IID_VIDEOENCODER                38
+//	 XA_IID_VIDEOENCODERCAPABILITIES    39
+//	 XA_IID_STREAMINFORMATION           40
+
+[Test]
+title 7.1 AudioEncoderItf GetEncoderSettings
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/test.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 32
+ALImpl al_audioencoderitf_GetEncoderSettings
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 7.2 AudioEncoderItf SetEncoderSettings
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/test.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 32
+ALImpl al_audioencoderitf_SetEncoderSettings 1 1 1 8000 128000 16 1 1 0 0 0 0 0
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_ro_mdinsertionitf.cfg	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,218 @@
+//
+// Copyright (c) 2009 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: 
+//
+//
+
+// IID numbers for interfaces to mention during object creation
+//	 XA_IID_NULL                    	1
+//	 XA_IID_OBJECT                    	2
+//	 XA_IID_CONFIGEXTENSION             3
+//	 XA_IID_DYNAMICINTERFACEMANAGEMENT  4
+//	 XA_IID_ENGINE                    	5
+//	 XA_IID_THREADSYNC                  6
+//	 XA_IID_PLAY                    	7
+//	 XA_IID_PLAYBACKRATE                8
+//	 XA_IID_PREFETCHSTATUS              9
+//	 XA_IID_SEEK                    	10
+//	 XA_IID_VOLUME                    	11
+//	 XA_IID_IMAGECONTROLS               12
+//	 XA_IID_IMAGEEFFECTS                13
+//	 XA_IID_VIDEOPOSTPROCESSING         14
+//	 XA_IID_RECORD                    	15
+//	 XA_IID_SNAPSHOT                    16
+//	 XA_IID_METADATAEXTRACTION          17
+//	 XA_IID_METADATAINSERTION           18
+//	 XA_IID_METADATATRAVERSAL           19
+//	 XA_IID_DYNAMICSOURCE               20
+//	 XA_IID_CAMERACAPABILITIES          21
+//	 XA_IID_CAMERA                    	22
+//	 XA_IID_AUDIOIODEVICECAPABILITIES   23
+//	 XA_IID_DEVICEVOLUME                24
+//	 XA_IID_EQUALIZER                   25
+//	 XA_IID_OUTPUTMIX                   26
+//	 XA_IID_RADIO                    	27
+//	 XA_IID_RDS                         28
+//	 XA_IID_VIBRA                    	29
+//	 XA_IID_LED                         30
+//	 XA_IID_AUDIODECODERCAPABILITIES    31
+//	 XA_IID_AUDIOENCODER                32
+//	 XA_IID_AUDIOENCODERCAPABILITIES    33
+//	 XA_IID_IMAGEENCODERCAPABILITIES    34
+//	 XA_IID_IMAGEDECODERCAPABILITIES    35
+//	 XA_IID_IMAGEENCODER                36
+//	 XA_IID_VIDEODECODERCAPABILITIES    37
+//	 XA_IID_VIDEOENCODER                38
+//	 XA_IID_VIDEOENCODERCAPABILITIES    39
+//	 XA_IID_STREAMINFORMATION           40
+
+[Test]
+title 6.1 MetadataInsertionItf CreateChildNode
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/test.amr
+ALImpl al_SetDataFormat 1 audio/amr 21
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 4
+ALImpl al_dimitf_AddInterface 18 0 
+ALImpl al_objitf_GetInterface 5 18
+allownextresult 12 0
+ALImpl al_metadatainsertionitf_CreateChildNode 2147483647 2 audio/amr
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 6.2 MetadataInsertionItf GetSupportedKeysCount
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/test.amr
+ALImpl al_SetDataFormat 1 audio/amr 21
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 4
+ALImpl al_dimitf_AddInterface 18 0 
+ALImpl al_objitf_GetInterface 5 18
+allownextresult 2 0
+ALImpl al_metadatainsertionitf_GetSupportedKeysCount 1
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 6.3 MetadataInsertionItf GetKeySize
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/test.amr
+ALImpl al_SetDataFormat 1 audio/amr 21
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 4
+ALImpl al_dimitf_AddInterface 18 0 
+ALImpl al_objitf_GetInterface 5 18
+allownextresult 2 0
+ALImpl al_metadatainsertionitf_GetKeySize 1 1
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 6.4 MetadataInsertionItf GetKey
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/test.amr
+ALImpl al_SetDataFormat 1 audio/amr 21
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 4
+ALImpl al_dimitf_AddInterface 18 0 
+ALImpl al_objitf_GetInterface 5 18
+allownextresult 2 0
+ALImpl al_metadatainsertionitf_GetKey 1 1 1
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 6.5 MetadataInsertionItf GetFreeKeysEncoding
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/test.amr
+ALImpl al_SetDataFormat 1 audio/amr 21
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 4
+ALImpl al_dimitf_AddInterface 18 0 
+ALImpl al_objitf_GetInterface 5 18
+allownextresult 2 1
+ALImpl al_metadatainsertionitf_GetFreeKeysEncoding 1 1
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 6.6 MetadataInsertionItf InsertMetadataItem
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/test.amr
+ALImpl al_SetDataFormat 1 audio/amr 21
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 4
+ALImpl al_dimitf_AddInterface 18 0 
+ALImpl al_objitf_GetInterface 5 18
+allownextresult 12 2
+ALImpl al_metadatainsertionitf_InsertMetadataItem 1 2 3 english 4 5 chinese 1
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 6.7 MetadataInsertionItf RegisterCallback
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/test.amr
+ALImpl al_SetDataFormat 1 audio/amr 21
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 4
+ALImpl al_dimitf_AddInterface 18 0 
+ALImpl al_objitf_GetInterface 5 18
+ALImpl al_metadatainsertionitf_RegisterCallback
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_ro_recorditf.cfg	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,350 @@
+//
+// Copyright (c) 2009 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: 
+//
+//
+
+// IID numbers for interfaces to mention during object creation
+//	 XA_IID_NULL                    	1
+//	 XA_IID_OBJECT                    	2
+//	 XA_IID_CONFIGEXTENSION             3
+//	 XA_IID_DYNAMICINTERFACEMANAGEMENT  4
+//	 XA_IID_ENGINE                    	5
+//	 XA_IID_THREADSYNC                  6
+//	 XA_IID_PLAY                    	7
+//	 XA_IID_PLAYBACKRATE                8
+//	 XA_IID_PREFETCHSTATUS              9
+//	 XA_IID_SEEK                    	10
+//	 XA_IID_VOLUME                    	11
+//	 XA_IID_IMAGECONTROLS               12
+//	 XA_IID_IMAGEEFFECTS                13
+//	 XA_IID_VIDEOPOSTPROCESSING         14
+//	 XA_IID_RECORD                    	15
+//	 XA_IID_SNAPSHOT                    16
+//	 XA_IID_METADATAEXTRACTION          17
+//	 XA_IID_METADATAINSERTION           18
+//	 XA_IID_METADATATRAVERSAL           19
+//	 XA_IID_DYNAMICSOURCE               20
+//	 XA_IID_CAMERACAPABILITIES          21
+//	 XA_IID_CAMERA                    	22
+//	 XA_IID_AUDIOIODEVICECAPABILITIES   23
+//	 XA_IID_DEVICEVOLUME                24
+//	 XA_IID_EQUALIZER                   25
+//	 XA_IID_OUTPUTMIX                   26
+//	 XA_IID_RADIO                    	27
+//	 XA_IID_RDS                         28
+//	 XA_IID_VIBRA                    	29
+//	 XA_IID_LED                         30
+//	 XA_IID_AUDIODECODERCAPABILITIES    31
+//	 XA_IID_AUDIOENCODER                32
+//	 XA_IID_AUDIOENCODERCAPABILITIES    33
+//	 XA_IID_IMAGEENCODERCAPABILITIES    34
+//	 XA_IID_IMAGEDECODERCAPABILITIES    35
+//	 XA_IID_IMAGEENCODER                36
+//	 XA_IID_VIDEODECODERCAPABILITIES    37
+//	 XA_IID_VIDEOENCODER                38
+//	 XA_IID_VIDEOENCODERCAPABILITIES    39
+//	 XA_IID_STREAMINFORMATION           40
+
+[Test]
+title 8.1 RecordItf SetRecordState
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder 1 15
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_SetRecordState 3
+pause 5000
+ALImpl al_recorditf_SetRecordState 1
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 8.2 RecordItf GetRecordState
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_GetRecordState
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 8.3 RecordItf SetDurationLimit
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_SetDurationLimit 100000
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]  
+
+[Test]
+title 8.4 RecordItf GetPosition
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_GetPosition
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 8.5 RecordItf RegisterCallback
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_RegisterCallback
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 8.6 RecordItf SetCallbackEventsMask
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_SetCallbackEventsMask 1
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 8.7 RecordItf GetCallbackEventsMask
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_GetCallbackEventsMask
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+
+[Test]
+title 8.8 RecordItf SetMarkerPosition
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_SetMarkerPosition 1000
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+
+[Test]
+title 8.9 RecordItf ClearMarkerPosition
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_SetMarkerPosition 1000
+ALImpl al_recorditf_ClearMarkerPosition
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 8.10 RecordItf SetMarkerPosition
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_SetMarkerPosition 1000
+ALImpl al_recorditf_GetMarkerPosition
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 8.11 RecordItf SetPositionUpdatePeriod
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_SetPositionUpdatePeriod 1000
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 8.12 RecordItf GetPositionUpdatePeriod
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.wav
+ALImpl al_SetDataFormat 1 audio/wav 15
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_SetPositionUpdatePeriod 1000
+ALImpl al_recorditf_GetPositionUpdatePeriod
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest]
+
+[Test]
+title 8.13 RecordItf SetRecordState AMR
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.amr
+ALImpl al_SetDataFormat 1 audio/amr 21
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder 1 15
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_SetRecordState 3
+pause 5000
+ALImpl al_recorditf_SetRecordState 1
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 8.14 RecordItf SetRecordState MP4
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize 1 0
+ALImpl al_objitf_GetInterface 1 5
+ALImpl al_SetDataLocator 1 file:/\/\/c:/testing/data/omxaltestdata/record.mp4
+ALImpl al_SetDataFormat 1 audio/mpeg 10
+ALImpl al_SetDataSink 1 1 5
+ALImpl al_SetDataLocator 3 1 2910736385
+ALImpl al_SetDataSource 3 1 1
+ALImpl al_engitf_CreateMediaRecorder 1 15
+ALImpl al_objitf_Realize 5 0
+ALImpl al_objitf_GetInterface 5 15
+ALImpl al_recorditf_SetRecordState 3
+pause 10000
+ALImpl al_recorditf_SetRecordState 1
+ALImpl al_objitf_Destroy 5
+ALImpl al_objitf_Destroy 1
+delete ALImpl
+[Endtest] 
+
Binary file mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/data/c/omxaltestdata/test.wav has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/eabi/openmaxaltestmoduleu.def	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	_Z9LibEntryLR13CTestModuleIf @ 1 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/group/bld.inf	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2009 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
+DEFAULT
+
+PRJ_TESTEXPORTS
+../conf/openmaxaltestmodule_common.cfg              /epoc32/winscw/c/testframework/openmaxaltestmodule_common.cfg
+../conf/openmaxaltestmodule_objectitf.cfg           /epoc32/winscw/c/testframework/openmaxaltestmodule_objectitf.cfg
+../conf/openmaxaltestmodule_ro_mdinsertionitf.cfg   /epoc32/winscw/c/testframework/openmaxaltestmodule_ro_mdinsertionitf.cfg
+../conf/openmaxaltestmodule_ro_recorditf.cfg        /epoc32/winscw/c/testframework/openmaxaltestmodule_ro_recorditf.cfg
+../conf/openmaxaltestmodule_ro_audioencoderitf.cfg  /epoc32/winscw/c/testframework/openmaxaltestmodule_ro_audioencoderitf.cfg
+../conf/openmaxaltestmodule_engine_audenccapitf.cfg /epoc32/winscw/c/testframework/openmaxaltestmodule_engine_audenccapitf.cfg
+../conf/openmaxaltestmodule_global.cfg              /epoc32/winscw/c/testframework/openmaxaltestmodule_global.cfg
+../conf/openmaxaltestmodule_engine_engineitf.cfg    /epoc32/winscw/c/testframework/openmaxaltestmodule_engine_engineitf.cfg
+../conf/openmaxaltestmodule_engine_aiodcitf.cfg     /epoc32/winscw/c/testframework/openmaxaltestmodule_engine_aiodcitf.cfg
+../data/c/omxaltestdata/test.wav                    /epoc32/winscw/c/testing/data/omxaltestdata/test.wav
+../init/testframework.ini                           /epoc32/winscw/c/testframework/testframework.ini
+
+PRJ_EXPORTS
+
+PRJ_TESTMMPFILES
+openmaxaltestmodule.mmp
+
+PRJ_MMPFILES
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/group/openmaxaltestmodule.mmp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,74 @@
+/*
+* 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: MMP file for STIF Test Framework's TestScripter 
+* testclass openmaxal module.
+*
+*/
+
+#include <platform_paths.hrh>
+
+SMPSAFE
+
+TARGET          openmaxaltestmodule.dll
+TARGETTYPE      dll
+UID             0x1000008D 0x10207CA4
+
+CAPABILITY      ALL -TCB
+VENDORID     VID_DEFAULT
+/* Remove comments and replace 0x00000000 with correct secure id */
+// SECUREID     0x00000000
+
+//TARGETPATH      ?target_path
+DEFFILE         openmaxaltestmodule.def
+
+USERINCLUDE     ../inc 
+OS_LAYER_LIBC_SYSTEMINCLUDE
+OS_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE 	/epoc32/include/platform/mw/khronos/ 
+
+SOURCEPATH      ../src/common
+SOURCE          openmaxaltestmodule.cpp
+SOURCE          openmaxaltestmoduleblocks.cpp
+SOURCE          openmaxalcommontests.cpp 
+SOURCE 			openmaxalobjectitftests.cpp
+SOURCE          openmaxalobjectcallbacks.cpp 
+SOURCE          openmaxaldynitfmgmtitftests.cpp
+SOURCE          openmaxaldynitfmgmtitfcallbacks.cpp
+
+SOURCEPATH      ../src/engine
+SOURCE			openmaxalenginetests.cpp 
+SOURCE 			openmaxalengineitftests.cpp
+SOURCE 			openmaxalaudioiodevicecapabilitiesitftests.cpp
+SOURCE 			openmaxalaudioencodercapabiltiesitftests.cpp
+SOURCE          openmaxalaudioiodevicecapabilitiesitfcallbacks.cpp 
+
+SOURCEPATH      ../src/recorder
+SOURCE 			openmaxalrecorditftests.cpp
+SOURCE 			openmaxalaudioencoderitftests.cpp
+SOURCE 			openmaxalmetadatainsertionitftests.cpp 
+SOURCE          openmaxalrecorditfcallbacks.cpp 
+SOURCE          openmaxalmetadatainsertionitfcallbacks.cpp
+
+
+LIBRARY         euser.lib
+LIBRARY         stiftestinterface.lib
+LIBRARY         stiftestengine.lib
+LIBRARY			ecom.lib
+LIBRARY         openmaxal.lib
+LIBRARY			libc.lib
+LANG            SC
+
+
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/group/openmaxaltestmodule.pkg	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,72 @@
+;
+; Copyright (c) 2009 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:
+;
+; 	Installation file for STIF
+;
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"STIF"},(0x10207CA4),1,1,0,TYPE=SA
+
+; Series60 product id for S60 3.0
+[0x101F7961], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Logo
+; None
+
+; Package signature - Optional
+; None
+
+; Start of Package body
+
+; Condition blocks
+; None
+
+; Options list
+; None
+
+; Install files
+"\epoc32\release\armv5\udeb\openmaxaltestmodule.dll"                -   "!:\sys\bin\openmaxaltestmodule.dll"
+"..\conf\openmaxaltestmodule_global.cfg"                            -   "!:\testframework\openmaxaltestmodule_global.cfg"
+"..\conf\openmaxaltestmodule_common.cfg"                            -   "!:\testframework\openmaxaltestmodule_common.cfg"
+"..\conf\openmaxaltestmodule_objectitf.cfg"                         -   "!:\testframework\openmaxaltestmodule_objectitf.cfg"
+"..\conf\openmaxaltestmodule_engine_engineitf.cfg"                  -   "!:\testframework\openmaxaltestmodule_engine_engineitf.cfg"
+"..\conf\openmaxaltestmodule_engine_audenccapitf.cfg"               -   "!:\testframework\openmaxaltestmodule_engine_audenccapitf.cfg"
+"..\conf\openmaxaltestmodule_engine_aiodcitf.cfg"                   -   "!:\testframework\openmaxaltestmodule_engine_aiodcitf.cfg"
+"..\conf\openmaxaltestmodule_ro_recorditf.cfg"                      -   "!:\testframework\openmaxaltestmodule_ro_recorditf.cfg"
+"..\conf\openmaxaltestmodule_ro_mdinsertionitf.cfg"                 -   "!:\testframework\openmaxaltestmodule_ro_mdinsertionitf.cfg"
+"..\conf\openmaxaltestmodule_ro_audioencoderitf.cfg"                -   "!:\testframework\openmaxaltestmodule_ro_audioencoderitf.cfg"
+
+;data files
+"..\data\c\omxaltestdata\test.wav"                                  -   "!:\testing\data\omxaltestdata\test.wav"
+
+; Embedded SIS 
+; None
+
+; End of Package body
+
+; PKG dependencies
+; None
+
+; PKG capabilities
+; None
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/group/openmaxaltestmodule_doxyfile.txt	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,239 @@
+#
+# Copyright (c) 2009 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: 
+#
+#
+
+# Doxyfile 1.4.1
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME           = OpenMAXALTestModule
+PROJECT_NUMBER         = 
+OUTPUT_DIRECTORY       = W:\sf\mw\mmmw\mmmw_plat\openmax_al_api\tsrc\\OpenMAXALTestModule\
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+USE_WINDOWS_ENCODING   = YES
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = 
+ALWAYS_DETAILED_SEC    = NO
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = 
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = NO
+JAVADOC_AUTOBRIEF      = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = NO
+INHERIT_DOCS           = YES
+DISTRIBUTE_GROUP_DOC   = NO
+TAB_SIZE               = 8
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = YES
+OPTIMIZE_OUTPUT_JAVA   = NO
+SUBGROUPING            = YES
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = NO
+EXTRACT_STATIC         = NO
+EXTRACT_LOCAL_CLASSES  = NO
+EXTRACT_LOCAL_METHODS  = NO
+HIDE_UNDOC_MEMBERS     = NO
+HIDE_UNDOC_CLASSES     = NO
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = YES
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+SORT_BRIEF_DOCS        = NO
+SORT_BY_SCOPE_NAME     = NO
+GENERATE_TODOLIST      = NO
+GENERATE_TESTLIST      = NO
+GENERATE_BUGLIST       = NO
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = YES
+SHOW_DIRECTORIES       = YES
+FILE_VERSION_FILTER    = 
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = NO
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_NO_PARAMDOC       = NO
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           = 
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT                  = W:\sf\mw\mmmw\mmmw_plat\openmax_al_api\tsrc\\OpenMAXALTestModule\
+FILE_PATTERNS          = *.h \
+                         *.rh \
+                         *.hrh
+RECURSIVE              = YES
+EXCLUDE                = 
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = 
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = 
+INPUT_FILTER           = 
+FILTER_PATTERNS        = 
+FILTER_SOURCE_FILES    = NO
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = NO
+INLINE_SOURCES         = NO
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION    = YES
+VERBATIM_HEADERS       = YES
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX     = NO
+COLS_IN_ALPHA_INDEX    = 5
+IGNORE_PREFIX          = 
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML          = NO
+HTML_OUTPUT            = html
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            = 
+HTML_FOOTER            = 
+HTML_STYLESHEET        = 
+HTML_ALIGN_MEMBERS     = YES
+GENERATE_HTMLHELP      = YES
+CHM_FILE               = 
+HHC_LOCATION           = 
+GENERATE_CHI           = NO
+BINARY_TOC             = YES
+TOC_EXPAND             = YES
+DISABLE_INDEX          = YES
+ENUM_VALUES_PER_LINE   = 4
+GENERATE_TREEVIEW      = YES
+TREEVIEW_WIDTH         = 250
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX         = NO
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = a4wide
+EXTRA_PACKAGES         = 
+LATEX_HEADER           = 
+PDF_HYPERLINKS         = NO
+USE_PDFLATEX           = NO
+LATEX_BATCHMODE        = NO
+LATEX_HIDE_INDICES     = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF           = YES
+RTF_OUTPUT             = Doc
+COMPACT_RTF            = YES
+RTF_HYPERLINKS         = YES
+RTF_STYLESHEET_FILE    = 
+RTF_EXTENSIONS_FILE    = 
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN           = NO
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML           = NO
+XML_OUTPUT             = xml
+XML_SCHEMA             = 
+XML_DTD                = 
+XML_PROGRAMLISTING     = YES
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF   = NO
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD       = NO
+PERLMOD_LATEX          = NO
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX = 
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = YES
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = YES
+INCLUDE_PATH           = 
+INCLUDE_FILE_PATTERNS  = 
+PREDEFINED             = NONSHARABLE_CLASS
+EXPAND_AS_DEFINED      = 
+SKIP_FUNCTION_MACROS   = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+TAGFILES               = 
+GENERATE_TAGFILE       = 
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+PERL_PATH              = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = YES
+HIDE_UNDOC_RELATIONS   = YES
+HAVE_DOT               = NO
+CLASS_GRAPH            = YES
+COLLABORATION_GRAPH    = YES
+GROUP_GRAPHS           = YES
+UML_LOOK               = NO
+TEMPLATE_RELATIONS     = YES
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = YES
+CALL_GRAPH             = NO
+GRAPHICAL_HIERARCHY    = YES
+DIRECTORY_GRAPH        = YES
+DOT_IMAGE_FORMAT       = png
+DOT_PATH               = 
+DOTFILE_DIRS           = 
+MAX_DOT_GRAPH_WIDTH    = 1024
+MAX_DOT_GRAPH_HEIGHT   = 1024
+MAX_DOT_GRAPH_DEPTH    = 0
+DOT_TRANSPARENT        = NO
+DOT_MULTI_TARGETS      = NO
+GENERATE_LEGEND        = YES
+DOT_CLEANUP            = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+SEARCHENGINE           = NO
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/inc/openmaxaltestmodule.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,326 @@
+/*
+* Copyright (c) 2009 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: STIF testclass declaration
+*
+*/
+
+#ifndef OPENMAXALTESTMODULE_H
+#define OPENMAXALTESTMODULE_H
+
+//  INCLUDES
+#include <StifLogger.h>
+#include <TestScripterInternal.h>
+#include <StifTestModule.h>
+#include <TestclassAssert.h>
+#include <OpenMAXAL.h>
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+#define RET_ERR_IF_ERR(err) if (err!=KErrNone) return err;
+//#define ?macro ?macro_def
+#define TEST_CLASS_VERSION_MAJOR 0
+#define TEST_CLASS_VERSION_MINOR 0
+#define TEST_CLASS_VERSION_BUILD 0
+
+// Logging path
+_LIT( KOpenMAXALTestModuleLogPath, "\\logs\\testframework\\OpenMAXALTestModule\\" ); 
+// Log file
+_LIT( KOpenMAXALTestModuleLogFile, "OpenMAXALTestModule.txt" ); 
+_LIT( KOpenMAXALTestModuleLogFileWithTitle, "OpenMAXALTestModule_[%S].txt" );
+
+// FUNCTION PROTOTYPES
+//?type ?function_name(?arg_list);
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+class COpenMAXALTestModule;
+
+// DATA TYPES
+#define MAX_NUMBER_OPTIONS 2
+#define MAX_NUMBER_INTERFACES 20
+//enum ?declaration
+//typedef ?declaration
+//extern ?data_type;
+
+// CLASS DECLARATION
+
+/**
+*  COpenMAXALTestModule test class for STIF Test Framework TestScripter.
+*  ?other_description_lines
+*
+*  @lib ?library
+*  @since ?Series60_version
+*/
+NONSHARABLE_CLASS(COpenMAXALTestModule) : public CScriptBase
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static COpenMAXALTestModule* NewL( CTestModuleIf& aTestModuleIf );
+
+        /**
+        * Destructor.
+        */
+        virtual ~COpenMAXALTestModule();
+
+    public: // New functions
+
+        /**
+        * ?member_description.
+        * @since ?Series60_version
+        * @param ?arg1 ?description
+        * @return ?description
+        */
+        //?type ?member_function( ?type ?arg1 );
+
+    public: // Functions from base classes
+
+        /**
+        * From CScriptBase Runs a script line.
+        * @since ?Series60_version
+        * @param aItem Script line containing method name and parameters
+        * @return Symbian OS error code
+        */
+        virtual TInt RunMethodL( CStifItemParser& aItem );
+
+    protected:  // New functions
+
+        /**
+        * ?member_description.
+        * @since ?Series60_version
+        * @param ?arg1 ?description
+        * @return ?description
+        */
+        //?type ?member_function( ?type ?arg1 );
+
+    protected:  // Functions from base classes
+
+        /**
+        * From ?base_class ?member_description
+        */
+        //?type ?member_function();
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        COpenMAXALTestModule( CTestModuleIf& aTestModuleIf );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+        // Prohibit copy constructor if not deriving from CBase.
+        // ?classname( const ?classname& );
+        // Prohibit assigment operator if not deriving from CBase.
+        // ?classname& operator=( const ?classname& );
+
+        /**
+        * Frees all resources allocated from test methods.
+        * @since ?Series60_version
+        */
+        void Delete();
+
+        /**
+        * Test methods are listed below. 
+        */
+
+        /**
+        * Example test method.
+        * @since ?Series60_version
+        * @param aItem Script line containing parameters.
+        * @return Symbian OS error code.
+        */
+        virtual TInt ExampleL( CStifItemParser& aItem );
+        
+        virtual TInt al_SetDataSource( CStifItemParser& aItem );
+        virtual TInt al_SetDataSink( CStifItemParser& aItem );        
+        virtual TInt al_SetDataLocator( CStifItemParser& aItem );        
+        virtual TInt al_SetDataFormat( CStifItemParser& aItem );        
+        
+        virtual TInt al_createEngine( CStifItemParser& aItem );
+        virtual TInt al_queryNumSupportedEngineInterfaces( CStifItemParser& aItem );
+        virtual TInt al_querySupportedEngineInterfaces( CStifItemParser& aItem );
+        virtual TInt al_objitf_Realize( CStifItemParser& aItem );
+        virtual TInt al_objitf_Resume( CStifItemParser& aItem );
+        virtual TInt al_objitf_GetState( CStifItemParser& aItem );
+        virtual TInt al_objitf_GetInterface( CStifItemParser& aItem );
+        virtual TInt al_objitf_RegisterCallback( CStifItemParser& aItem );
+        virtual TInt al_objitf_AbortAsyncOperation( CStifItemParser& aItem );
+        virtual TInt al_objitf_Destroy( CStifItemParser& aItem );
+        virtual TInt al_objitf_SetPriority( CStifItemParser& aItem );
+        virtual TInt al_objitf_GetPriority( CStifItemParser& aItem );
+        virtual TInt al_objitf_SetLossOfControlInterfaces( CStifItemParser& aItem );
+        
+        virtual TInt al_dimitf_AddInterface( CStifItemParser& aItem );
+        virtual TInt al_dimitf_RemoveInterface( CStifItemParser& aItem );
+        virtual TInt al_dimitf_ResumeInterface( CStifItemParser& aItem );
+        virtual TInt al_dimitf_RegisterCallback( CStifItemParser& aItem );
+        
+        
+        virtual TInt al_engitf_CreateCameraDevice( CStifItemParser& aItem );
+        virtual TInt al_engitf_CreateRadioDevice( CStifItemParser& aItem );
+        virtual TInt al_engitf_CreateLEDDevice( CStifItemParser& aItem );
+        virtual TInt al_engitf_CreateVibraDevice( CStifItemParser& aItem );
+        virtual TInt al_engitf_CreateMediaPlayer( CStifItemParser& aItem );
+        virtual TInt al_engitf_CreateMediaRecorder( CStifItemParser& aItem );
+        virtual TInt al_engitf_CreateOutputMix( CStifItemParser& aItem );
+        virtual TInt al_engitf_CreateMetadataExtractor( CStifItemParser& aItem );
+        virtual TInt al_engitf_CreateExtensionObject( CStifItemParser& aItem );
+        virtual TInt al_engitf_GetImplementationInfo( CStifItemParser& aItem );
+        virtual TInt al_engitf_QuerySupportedProfiles( CStifItemParser& aItem );
+        virtual TInt al_engitf_QueryNumSupportedInterfaces( CStifItemParser& aItem );
+        virtual TInt al_engitf_QuerySupportedInterfaces( CStifItemParser& aItem );
+        virtual TInt al_engitf_QueryNumSupportedExtension( CStifItemParser& aItem );
+        virtual TInt al_engitf_QuerySupportedExtension( CStifItemParser& aItem );
+        virtual TInt al_engitf_IsExtensionSupported( CStifItemParser& aItem );
+        virtual TInt al_engitf_QueryLEDCapabilities( CStifItemParser& aItem );
+        virtual TInt al_engitf_QueryVibraCapabilities( CStifItemParser& aItem );
+        virtual TInt al_audioiodevcapitf_GetAvailableAudioInputs( CStifItemParser& aItem );
+        virtual TInt al_audioiodevcapitf_QueryAudioInputCapabilities( CStifItemParser& aItem );
+        virtual TInt al_audioiodevcapitf_RegisterAvailableAudioInputsChangedCallback( CStifItemParser& aItem );
+        virtual TInt al_audioiodevcapitf_GetAvailableAudioOutputs( CStifItemParser& aItem );
+        virtual TInt al_audioiodevcapitf_QueryAudioOutputCapabilities( CStifItemParser& aItem );
+        virtual TInt al_audioiodevcapitf_RegisterAvailableAudioOutputsChangedCallback( CStifItemParser& aItem );
+        virtual TInt al_audioiodevcapitf_RegisterDefaultDeviceIDMapChangedCallback( CStifItemParser& aItem );
+        virtual TInt al_audioiodevcapitf_GetAssociatedAudioInputs( CStifItemParser& aItem );
+        virtual TInt al_audioiodevcapitf_GetAssociatedAudioOutputs( CStifItemParser& aItem );
+        virtual TInt al_audioiodevcapitf_GetDefaultAudioDevices( CStifItemParser& aItem );
+        virtual TInt al_audioiodevcapitf_QuerySampleFormatsSupported( CStifItemParser& aItem );
+        virtual TInt al_audioencodercapitf_GetAudioEncoders( CStifItemParser& aItem );
+        virtual TInt al_audioencodercapitf_GetAudioEncoderCapabilities( CStifItemParser& aItem );
+        virtual TInt al_recorditf_SetRecordState( CStifItemParser& aItem );
+        virtual TInt al_recorditf_GetRecordState( CStifItemParser& aItem );
+        virtual TInt al_recorditf_SetDurationLimit( CStifItemParser& aItem );
+        virtual TInt al_recorditf_GetPosition( CStifItemParser& aItem );
+        virtual TInt al_recorditf_RegisterCallback( CStifItemParser& aItem );
+        virtual TInt al_recorditf_SetCallbackEventsMask( CStifItemParser& aItem );
+        virtual TInt al_recorditf_GetCallbackEventsMask( CStifItemParser& aItem );
+        virtual TInt al_recorditf_SetMarkerPosition( CStifItemParser& aItem );
+        virtual TInt al_recorditf_ClearMarkerPosition( CStifItemParser& aItem );
+        virtual TInt al_recorditf_GetMarkerPosition( CStifItemParser& aItem );
+        virtual TInt al_recorditf_SetPositionUpdatePeriod( CStifItemParser& aItem );
+        virtual TInt al_recorditf_GetPositionUpdatePeriod( CStifItemParser& aItem );
+        virtual TInt al_audioencoderitf_SetEncoderSettings( CStifItemParser& aItem );
+        virtual TInt al_audioencoderitf_GetEncoderSettings( CStifItemParser& aItem );
+        virtual TInt al_metadatainsertionitf_CreateChildNode( CStifItemParser& aItem );
+        virtual TInt al_metadatainsertionitf_GetSupportedKeysCount( CStifItemParser& aItem );
+        virtual TInt al_metadatainsertionitf_GetKeySize( CStifItemParser& aItem );
+        virtual TInt al_metadatainsertionitf_GetKey( CStifItemParser& aItem );
+        virtual TInt al_metadatainsertionitf_GetFreeKeysEncoding( CStifItemParser& aItem );
+        virtual TInt al_metadatainsertionitf_InsertMetadataItem( CStifItemParser& aItem );
+        virtual TInt al_metadatainsertionitf_RegisterCallback( CStifItemParser& aItem );
+        
+        /**
+         * Method used to log version of test class
+         */
+        void SendTestClassVersion();
+
+        //ADD NEW METHOD DEC HERE
+        //[TestMethods] - Do not remove
+
+    public:     // Data
+        // ?one_line_short_description_of_data
+        //?data_declaration;
+        enum TObjectType
+            {
+            EEngine = 1,
+            EMediaRecorder,
+            ERecordItf,
+            EEngineItf
+            };
+
+    protected:  // Data
+        TInt MapErr(XAresult xa_res);
+        XAInterfaceID MapInterface(TInt interface);
+        XAObjectItf COpenMAXALTestModule::GetObject(TInt object);
+        TInt StoreInterface(TInt interface, void* id);
+        xaObjectCallback GetCallbackFunc(TInt object);
+        // ?one_line_short_description_of_data
+        //?data_declaration;
+
+    private:    // Data
+        XAboolean     required[MAX_NUMBER_INTERFACES]; 
+        XAInterfaceID iidArray[MAX_NUMBER_INTERFACES]; 
+        XAEngineOption EngineOption[MAX_NUMBER_OPTIONS];
+                                    
+        XAObjectItf m_EOEngine;
+        XAObjectItf m_MORecorder;
+        XAObjectItf m_MOPlayer;
+        XARecordItf m_RecordItf;
+        XAObjectItf m_MOOutputMix;
+        XAObjectItf m_MOMetadataExtractor;
+        XAObjectItf m_MOExtnObject;
+        XAObjectItf m_MOVibraObject;
+        XAObjectItf m_MOLEDObject;
+        XAObjectItf m_MORadioObject;
+        XAObjectItf m_MOCameraObject;
+        
+        
+        XADynamicInterfaceManagementItf m_DIMItf;
+        
+        
+        XAEngineItf m_EngineItf;
+        XAAudioIODeviceCapabilitiesItf m_AIODevCapItf;
+        XAAudioEncoderCapabilitiesItf m_AEncCapItf;
+        XAAudioEncoderItf m_AudEncItf;
+        XAMetadataInsertionItf m_MetadataInsertionItf;
+        
+        /*Audio Source*/
+        XADataSource m_AudioSource;
+        XADataLocator_IODevice  m_IODevice;
+
+        /*Image/Video Source*/
+        XADataSource m_VideoSource;
+       
+        /*MetadataExtractor Source*/
+        XADataSource m_MOMetadataExtractorSource;
+        
+        /*Data Sink*/
+        XADataSink m_DataSink;
+        XADataSink m_AudioSink;
+        XADataSink m_VideoSink;
+        XADataSink m_LEDSink;
+        XADataSink m_VibraSink;
+        
+        
+        XADataLocator_URI m_Uri;
+        HBufC8* m_URIName;
+        
+        XADataFormat_MIME m_Mime;
+        HBufC8* m_MimeType;
+        
+        // ?one_line_short_description_of_data
+        //?data_declaration;
+
+        // Reserved pointer for future extension
+        //TAny* iReserved;
+
+    public:     // Friend classes
+        //?friend_class_declaration;
+    protected:  // Friend classes
+        //?friend_class_declaration;
+    private:    // Friend classes
+        //?friend_class_declaration;
+
+    };
+
+#endif      // OPENMAXALTESTMODULE_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/init/testframework.ini	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,223 @@
+#
+# Copyright (c) 2009 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: 
+#
+
+# This is STIFTestFramework initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set following test engine settings:
+#	- Set Test Reporting mode. TestReportMode's possible values are:
+#		+ 'Summary': Summary of the tested test cases.
+#		+ 'Environment': Hardware and software info.
+#		+ 'TestCases': Test case report.
+#		+ 'FullReport': Set of all above ones.
+#		+ Example 'TestReportMode= Summary TestCases'
+#
+# 	- CreateTestReport setting controls report creation mode
+#		+ YES, Test report will created.
+#		+ NO, No Test report.
+#
+# 	- File path indicates the base path of the test report.
+# 	- File name indicates the name of the test report.
+#
+# 	- File format indicates the type of the test report.
+#		+ TXT, Test report file will be txt type, for example 'TestReport.txt'.
+#		+ HTML, Test report will be html type, for example 'TestReport.html'.
+#
+# 	- File output indicates output source of the test report.
+#		+ FILE, Test report logging to file.
+#		+ RDEBUG, Test report logging to using rdebug.
+#
+# 	- File Creation Mode indicates test report overwriting if file exist.
+#		+ OVERWRITE, Overwrites if the Test report file exist.
+#		+ APPEND, Continue logging after the old Test report information if
+#                 report exist.
+# 	- Sets a device reset module's dll name(Reboot).
+#		+ If Nokia specific reset module is not available or it is not correct one
+#		  StifHWResetStub module may use as a template for user specific reset
+#		  module.
+# 	- Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation
+#		DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02
+#
+
+[Engine_Defaults]
+
+TestReportMode= FullReport		# Possible values are: 'Empty', 'Summary', 'Environment',
+                                                               'TestCases' or 'FullReport'
+
+CreateTestReport= YES			# Possible values: YES or NO
+
+TestReportFilePath= c:\LOGS\TestFramework\
+TestReportFileName= TestReport_OmxALTestClass
+
+TestReportFormat= TXT			# Possible values: TXT or HTML
+TestReportOutput= FILE			# Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE	# Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+DisableMeasurement= stifmeasurementdisablenone	# Possible values are:
+						# 'stifmeasurementdisablenone', 'stifmeasurementdisableall'
+					  	# 'stifmeasurementplugin01', 'stifmeasurementplugin02',
+					  	# 'stifmeasurementplugin03', 'stifmeasurementplugin04',
+					  	# 'stifmeasurementplugin05' or 'stifbappeaprofiler'
+
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+# Modules are added between module tags
+# tags. Module name is specified after ModuleName= tag, like
+# ModuleName= XXXXXXXXX
+# Modules might have initialisation file, specified as
+# IniFile= c:\testframework\YYYYYY
+# Modules might have several configuration files, like
+# TestCaseFile= c:\testframework\NormalCases.txt
+# TestCaseFile= c:\testframework\SmokeCases.txt
+# TestCaseFile= c:\testframework\ManualCases.txt
+
+# (TestCaseFile is synonym for old term ConfigFile)
+
+# Following case specifies demo module settings. Demo module
+# does not read any settings from file, so tags 
+# IniFile and TestCaseFile are not used.
+# In the simplest case it is enough to specify only the
+# name of the test module when adding new test module
+
+#[New_Module]
+#ModuleName= demomodule
+#[End_Module]
+
+[New_Module]
+ModuleName= TestScripter
+IniFile = c:\testframework\openmaxaltestmodule_common.cfg
+TestCaseFile= c:\testframework\openmaxaltestmodule_objectitf.cfg
+TestCaseFile= c:\testframework\openmaxaltestmodule_ro_mdinsertionitf.cfg
+TestCaseFile= c:\testframework\openmaxaltestmodule_ro_recorditf.cfg
+TestCaseFile= c:\testframework\openmaxaltestmodule_ro_audioencoderitf.cfg
+TestCaseFile= c:\testframework\openmaxaltestmodule_engine_audenccapitf.cfg
+TestCaseFile= c:\testframework\openmaxaltestmodule_global.cfg
+TestCaseFile= c:\testframework\openmaxaltestmodule_engine_engineitf.cfg
+TestCaseFile= c:\testframework\openmaxaltestmodule_engine_aiodcitf.cfg
+[End_Module]
+
+
+
+# Load testmoduleXXX, optionally with initialization file and/or test case files
+#[New_Module]
+#ModuleName= testmodulexxx
+
+#TestModuleXXX used initialization file
+#IniFile= c:\testframework\init.txt
+
+#TestModuleXXX used configuration file(s)
+#TestCaseFile= c:\testframework\testcases1.cfg
+#TestCaseFile= c:\testframework\testcases2.cfg
+#TestCaseFile= c:\testframework\manualtestcases.cfg
+
+#[End_Module]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set STIFTestFramework logging overwrite parameters for Logger.
+# 	Hardware and emulator environment logging path and styles can
+# 	be configured from here to overwrite the Logger's implemented values.
+#	
+#	Settings description:
+#	- Indicates option for creation log directory/directories. If log directory/directories
+#         is/are not created by user they will make by software.
+#		+ YES, Create log directory/directories if not allready exist.
+#		+ NO, Log directory/directories not created. Only created one is used.
+#
+#	- Overwrite emulator path setting.
+#		+ Example: If 'EmulatorBasePath= C:\LOGS\TestFramework\' and in code is defined 
+#		           Logger's path 'D:\\LOGS\\Module\\' with those definition the path
+#		           will be 'C:\LOGS\TestFramework\LOGS\Module\'
+#
+#	- Overwrite emulator's logging format.
+#		+ TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
+#		+ HTML, Log file(s) will be html type(s), for example 'Module.html'.
+#
+#	- Overwrited emulator logging output source.
+#		+ FILE, Logging to file(s).
+#		+ RDEBUG, Logging to using rdebug(s).
+#
+#	- Overwrite hardware path setting (Same description as above in emulator path).
+#	- Overwrite hardware's logging format(Same description as above in emulator format).
+#	- Overwrite hardware's logging output source(Same description as above in emulator output).
+#
+#	- File Creation Mode indicates file overwriting if file exist.
+#		+ OVERWRITE, Overwrites if file(s) exist.
+#		+ APPEND, Continue logging after the old logging information if file(s) exist.
+#
+#	- Will thread id include to the log filename.
+#		+ YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
+#		+ NO, No thread id to log file(s), Example filename 'Module.txt'.
+#
+#	- Will time stamps include the to log file.
+#		+ YES, Time stamp added to each line in log file(s). Time stamp is 
+#                 for example'12.Nov.2003 115958    LOGGING INFO'
+#		+ NO, No time stamp(s).
+#
+#	- Will line breaks include to the log file.
+#		+ YES, Each logging event includes line break and next log event is in own line.
+#		+ NO, No line break(s).
+#
+#	- Will event ranking include to the log file.
+#		+ YES, Event ranking number added to each line in log file(s). Ranking number
+#                 depends on environment's tics, for example(includes time stamp also)
+#                 '012   12.Nov.2003 115958    LOGGING INFO'
+#		+ NO, No event ranking.
+#
+#	- Will write log file in unicode format.
+#		+ YES, Log file will be written in unicode format
+#		+ NO, Log will be written as normal, not unicode, file.
+#
+
+[Logger_Defaults]
+
+#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#'
+#NOTE: TestEngine and TestServer logging settings cannot change here
+
+CreateLogDirectories= YES		# Possible values: YES or NO
+
+#EmulatorBasePath= C:\LOGS\TestFramework\
+#EmulatorFormat= HTML			# Possible values: TXT or HTML
+#EmulatorOutput= FILE			# Possible values: FILE or RDEBUG
+
+#HardwareBasePath= D:\LOGS\TestFramework\
+#HardwareFormat= HTML			# Possible values: TXT or HTML
+#HardwareOutput= FILE			# Possible values: FILE or RDEBUG
+
+FileCreationMode= OVERWRITE		# Possible values: OVERWRITE or APPEND
+
+#ThreadIdToLogFile= YES			# Possible values: YES or NO
+#WithTimeStamp= YES			# Possible values: YES or NO
+#WithLineBreak= YES			# Possible values: YES or NO
+#WithEventRanking= YES			# Possible values: YES or NO
+
+#FileUnicode= YES			# Possible values: YES or NO
+
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxalcommontests.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,359 @@
+/*
+* Copyright (c) 2009 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include "openmaxaltestmodule.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+TInt COpenMAXALTestModule::al_SetDataSink( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt type;
+    TInt formattype(0);
+
+    TInt sinktype(0);
+    XADataSink commonSink = {NULL,NULL};
+    
+    status = aItem.GetNextInt(type);
+    if(!status)
+        {
+        switch(type)
+            {
+            case XA_DATALOCATOR_URI:
+                {
+                commonSink.pLocator = &m_Uri;
+                }
+                break;
+            case XA_DATALOCATOR_ADDRESS:
+            case XA_DATALOCATOR_IODEVICE:
+                {
+                commonSink.pLocator = &m_IODevice;
+                }
+            case XA_DATALOCATOR_OUTPUTMIX:
+            case XA_DATALOCATOR_NATIVEDISPLAY:
+                break;
+            default:
+                status = KErrGeneral;
+                break;
+            }
+        }
+
+    if(!status)
+        {
+        status = aItem.GetNextInt(formattype);
+        
+        switch(formattype)
+            {
+            case XA_DATAFORMAT_MIME:
+                {
+                commonSink.pFormat = &m_Mime;
+                }
+                break;
+            case XA_DATAFORMAT_PCM:
+            case XA_DATAFORMAT_RAWIMAGE:
+                break;
+            default:
+                status = KErrGeneral;
+                break;
+            }
+
+        }
+
+    if(!status)
+         {
+         status = aItem.GetNextInt(sinktype);
+         if(!status)
+             {
+             switch(sinktype)
+                 {
+                 case 1:
+                     m_AudioSink = commonSink;
+                     break;
+                 case 2:
+                     m_VideoSink = commonSink;
+                     break;
+                 case 3:
+                     m_LEDSink = commonSink;
+                     break;
+                 case 4:
+                     m_VibraSink = commonSink;
+                     break;
+                 case 5:
+                     m_DataSink = commonSink;
+                     break;
+                 default:
+                     status = KErrGeneral;
+                     break;
+                 }
+             }
+         }    
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_SetDataSource( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt type;
+    TInt sourcetype(0);
+    TInt formattype(0);
+
+    XADataSource commonSource = {NULL,NULL};
+    status = aItem.GetNextInt(type);
+    if(!status)
+        {
+        switch(type)
+            {
+            case XA_DATALOCATOR_URI:
+                {
+                commonSource.pLocator = &m_Uri;
+                }                
+                break;
+            case XA_DATALOCATOR_ADDRESS:
+            case XA_DATALOCATOR_IODEVICE:
+                {
+                commonSource.pLocator = &m_IODevice;
+                }
+            case XA_DATALOCATOR_OUTPUTMIX:
+            case XA_DATALOCATOR_NATIVEDISPLAY:
+                break;
+            default:
+                status = KErrGeneral;
+                break;
+            }
+        }
+
+    if(!status)
+        {
+        status = aItem.GetNextInt(formattype);
+        if(!status)
+            {
+            switch(formattype)
+                {
+                case XA_DATAFORMAT_MIME:
+                    {
+                    commonSource.pFormat = (void*) &m_Mime;
+                    }
+                    break;
+                case XA_DATAFORMAT_PCM:
+                case XA_DATAFORMAT_RAWIMAGE:
+                    break;
+                default:
+                    status = KErrGeneral;
+                    break;
+                }
+            }
+        }
+    
+    
+    if(!status)
+        {
+        status = aItem.GetNextInt(sourcetype);
+        if(!status)
+            {
+            switch(sourcetype)
+                {
+                case 1:
+                    m_AudioSource = commonSource;
+                    break;
+                case 2:
+                    m_VideoSource = commonSource;
+                    break;
+                case 3:
+                    m_MOMetadataExtractorSource = commonSource;
+                    break;
+                default:
+                    status = KErrGeneral;
+                    break;
+                }
+            }
+        }
+    
+    return status;  
+    }
+
+TInt COpenMAXALTestModule::al_SetDataLocator( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt type;
+
+    status = aItem.GetNextInt(type);
+    
+    switch(type)
+        {
+        case XA_DATALOCATOR_URI:
+            {
+            TPtrC uri;
+            if(m_URIName)
+                {
+                delete m_URIName;
+                m_URIName = NULL;
+                }
+            //status = aItem.SetParsingType(CStifItemParser::EQuoteStyleParsing);
+            status = aItem.GetNextString(uri);
+            if(!status)
+                {
+                m_URIName = HBufC8::NewL(uri.Length()+1); 
+                TPtr8 desc = m_URIName->Des();
+                desc.Copy(uri);
+                m_Uri.locatorType = XA_DATALOCATOR_URI;
+                m_Uri.URI = (XAchar*) desc.PtrZ();
+                }
+            else
+                {
+                status = KErrGeneral;
+                }
+            }
+            break;
+        case XA_DATALOCATOR_IODEVICE:
+            {
+            TInt devicetype;
+            TUint deviceId;
+            
+            status = aItem.GetNextInt(devicetype);
+            if(!status)
+                {
+                status = aItem.GetNextInt(deviceId);
+                if(!status)
+                    {
+                    m_IODevice.deviceID = deviceId;
+                    m_IODevice.deviceType = devicetype;
+                    m_IODevice.locatorType = XA_DATALOCATOR_IODEVICE;
+                    }
+                else
+                    {
+                    status = KErrGeneral;
+                    }
+                }
+            else
+                {
+                status = KErrGeneral;
+                }
+            }
+            break;
+        case XA_DATALOCATOR_OUTPUTMIX:
+        case XA_DATALOCATOR_NATIVEDISPLAY:
+        case XA_DATALOCATOR_ADDRESS:
+            break;
+        default:
+            status = KErrGeneral;
+            break;
+        }
+    return status;   
+    }
+
+TInt COpenMAXALTestModule::al_SetDataFormat( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt type;
+    TInt contType(0);
+    TPtrC mimetype;
+    status = aItem.GetNextInt(type);
+    
+    switch(type)
+        {
+        case XA_DATAFORMAT_MIME:
+            {
+            status = aItem.GetNextString(mimetype);
+            if(!status)
+                {
+                status = aItem.GetNextInt(contType);
+                if(!status)
+                    {
+                    if(m_MimeType)
+                        {
+                        delete m_MimeType;
+                        m_MimeType = NULL;
+                        }
+                    m_MimeType = HBufC8::NewL(mimetype.Length()+1); 
+                    TPtr8 desc = m_MimeType->Des();
+                    desc.Copy(mimetype);
+                    m_Mime.formatType = XA_DATAFORMAT_MIME;
+                    m_Mime.mimeType = (XAchar*) desc.PtrZ();
+                    m_Mime.containerType = contType;
+                    }
+                else
+                    {
+                    status = KErrGeneral;
+                    }
+                }
+            else
+                {
+                status = KErrGeneral;
+                }
+            }
+            break;
+        case XA_DATAFORMAT_PCM:
+        case XA_DATAFORMAT_RAWIMAGE:
+            break;
+        default:
+            status = KErrGeneral;
+            break;
+        }
+    return status;   
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxaldynitfmgmtitfcallbacks.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,85 @@
+/*
+* Copyright (c) 2009 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include "openmaxaltestmodule.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+
+void DynamicInterfaceManagementCallback (
+    XADynamicInterfaceManagementItf caller,
+    void * pContext,
+    XAuint32 event,
+    XAresult result,
+    const XAInterfaceID iid
+)
+    {
+    
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxaldynitfmgmtitftests.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,211 @@
+/*
+* Copyright (c) 2009 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include "openmaxaltestmodule.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+void DynamicInterfaceManagementCallback (
+    XADynamicInterfaceManagementItf caller,
+    void * pContext,
+    XAuint32 event,
+    XAresult result,
+    const XAInterfaceID iid
+);
+
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+TInt COpenMAXALTestModule::al_dimitf_AddInterface( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    TInt async(0);
+    TInt interface(0);
+    XAInterfaceID id(NULL);
+
+
+    status = aItem.GetNextInt(interface);
+    if(!status)
+        {
+        id = MapInterface(interface);
+        }
+    else
+        {
+        status = KErrGeneral;
+        }
+
+    status = aItem.GetNextInt(async);
+    if(!status)
+        {
+        if(m_DIMItf)
+            {
+            res = (*m_DIMItf)->AddInterface(m_DIMItf,id,async);
+            status = res;
+            }
+        }
+    else
+        {
+        status = KErrGeneral;
+        }
+    return status;    
+    }
+
+TInt COpenMAXALTestModule::al_dimitf_RemoveInterface( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    TInt async(0);
+    TInt interface(0);
+    XAInterfaceID id(NULL);
+
+    status = aItem.GetNextInt(interface);
+    if(!status)
+        {
+        id = MapInterface(interface);
+        status = StoreInterface(interface, NULL);
+        }
+    else
+        {
+        status = KErrGeneral;
+        }
+
+    status = aItem.GetNextInt(async);
+    if(!status)
+        {
+        if(m_DIMItf)
+            {
+            res = (*m_DIMItf)->RemoveInterface(m_DIMItf,id);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }
+        }
+    else
+        {
+        status = KErrGeneral;
+        }
+    return status;            
+    }
+
+TInt COpenMAXALTestModule::al_dimitf_ResumeInterface( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    TInt async(0);
+    TInt interface(0);
+    XAInterfaceID id(NULL);
+
+
+    status = aItem.GetNextInt(interface);
+    if(!status)
+        {
+        id = MapInterface(interface);
+        }
+    else
+        {
+        status = KErrGeneral;
+        }
+
+    status = aItem.GetNextInt(async);
+    if(!status)
+        {
+        if(m_DIMItf)
+            {
+            res = (*m_DIMItf)->ResumeInterface(m_DIMItf,id,async);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }
+        }
+    else
+        {
+        status = KErrGeneral;
+        }
+    return status;        
+    }
+
+TInt COpenMAXALTestModule::al_dimitf_RegisterCallback( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    if(m_DIMItf)
+        {
+        res = (*m_DIMItf)->RegisterCallback(m_DIMItf,DynamicInterfaceManagementCallback,(void*)this);
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }
+    return status;    
+    }
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxalobjectcallbacks.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,124 @@
+/*
+* Copyright (c) 2009 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include "openmaxaltestmodule.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+void ObjectCallback(XAObjectItf caller,
+        const void * pContext,
+        XAuint32 event,
+        XAresult result,
+        XAuint32 param,
+        void * pInterface);
+
+void MediaRecorderCallback(XAObjectItf caller,
+        const void * pContext,
+        XAuint32 event,
+        XAresult result,
+        XAuint32 param,
+        void * pInterface);
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+xaObjectCallback COpenMAXALTestModule::GetCallbackFunc(TInt object)
+    {
+    xaObjectCallback func(NULL);
+    switch(object)
+        {
+        case EEngine:
+            func = ObjectCallback;
+            break;
+        case EMediaRecorder:
+            func = MediaRecorderCallback;
+            break;
+        default:
+            func = NULL;
+            break;
+        }
+    return func;
+    
+    }
+
+
+void ObjectCallback(XAObjectItf caller,
+        const void * pContext,
+        XAuint32 event,
+        XAresult result,
+        XAuint32 param,
+        void * pInterface)
+    {
+    
+    }
+
+void MediaRecorderCallback(XAObjectItf caller,
+        const void * pContext,
+        XAuint32 event,
+        XAresult result,
+        XAuint32 param,
+        void * pInterface)
+    {
+    
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxalobjectitftests.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,374 @@
+/*
+* Copyright (c) 2009 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include "openmaxaltestmodule.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+TInt COpenMAXALTestModule::al_objitf_Realize( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    TInt object(0);
+    TInt async;
+    status = aItem.GetNextInt(object);
+    if(!status)
+        {
+        XAObjectItf itf = GetObject(object);
+        if(itf != NULL)
+            {
+            status = aItem.GetNextInt(async);
+            if(!status)
+                {
+                res = (*itf)->Realize(itf, async);
+                status = res;
+                }
+            else
+                {
+                status = KErrGeneral;
+                }
+            }
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_objitf_Resume( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    TInt object(0);
+    TInt async;
+    status = aItem.GetNextInt(object);
+    if(!status)
+        {
+        XAObjectItf itf = GetObject(object);
+        if(itf != NULL)
+            {
+            status = aItem.GetNextInt(async);
+            if(!status)
+                {
+                res = (*itf)->Resume(itf, async);
+                status = res;
+                }
+            else
+                {
+                status = KErrGeneral;
+                }
+            }
+        }
+    return status;    }
+
+TInt COpenMAXALTestModule::al_objitf_GetState( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    TInt object(0);
+    XAuint32 state;
+    status = aItem.GetNextInt(object);
+    if(!status)
+        {
+        XAObjectItf itf = GetObject(object);
+        if(itf != NULL)
+            {
+            res = (*itf)->GetState(itf, &state);
+            status = res;
+            }
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_objitf_GetInterface( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    TInt object(0);
+    TInt interface(0);
+    XAInterfaceID id;
+    void* retid(NULL);
+    status = aItem.GetNextInt(object);
+    if(!status)
+        {
+        XAObjectItf itf = GetObject(object);
+        if(itf != NULL)
+            {
+            status = aItem.GetNextInt(interface);
+            if(!status)
+                {
+                id = MapInterface(interface);
+                res = (*itf)->GetInterface(itf, id, &retid);
+                status = res;
+                if(!status)
+                    {
+                    status = StoreInterface(interface, retid);
+                    }
+                }
+            else
+                {
+                status = KErrGeneral;
+                }
+            }
+        else
+            {
+            status = KErrGeneral;
+            }
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_objitf_RegisterCallback( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt object(0);
+    XAresult res;
+    xaObjectCallback func;
+    status = aItem.GetNextInt(object);
+    if(!status)
+        {
+        XAObjectItf itf = GetObject(object);
+        if(itf != NULL)
+            {
+            func = GetCallbackFunc(object);
+            if(func)
+                {
+                res = (*itf)->RegisterCallback(itf, func, NULL);
+                status = res;
+                }
+            else
+                {
+                status = KErrNotFound;
+                }
+            }
+        else
+            {
+            status = KErrNotFound;
+            }
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_objitf_AbortAsyncOperation( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt object(0);
+    status = aItem.GetNextInt(object);
+    if(!status)
+        {
+        XAObjectItf itf = GetObject(object);
+        if(itf != NULL)
+            {
+            (*itf)->AbortAsyncOperation(itf);
+            }
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_objitf_Destroy( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt object(0);
+    status = aItem.GetNextInt(object);
+    if(!status)
+        {
+        XAObjectItf itf = GetObject(object);
+        if(itf != NULL)
+            {
+            (*itf)->Destroy(itf);
+            }
+        else
+            {
+            status = KErrNotFound;
+            }
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_objitf_SetPriority( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt object(0);
+    TInt priority(0);
+    TInt preemptable(0);
+    
+    status = aItem.GetNextInt(object);
+    if(!status)
+        {
+        XAObjectItf itf = GetObject(object);
+        if(itf != NULL)
+            {
+            status = aItem.GetNextInt(priority);
+            if(status)
+                {
+                priority = 0;
+                preemptable = 0;
+                }
+            else
+                {
+                status = aItem.GetNextInt(preemptable);
+                if(status)
+                    {
+                    preemptable = 0;
+                    }
+                }
+            (*itf)->SetPriority(itf,priority,preemptable);
+            }
+        else
+            {
+            status = KErrNotFound;
+            }
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_objitf_GetPriority( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    TInt object(0);
+    XAint32 priority(0);
+    XAboolean preemptable(0);
+    status = aItem.GetNextInt(object);
+    if(!status)
+        {
+        XAObjectItf itf = GetObject(object);
+        if(itf != NULL)
+            {
+            res = (*itf)->GetPriority(itf, &priority, &preemptable);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }
+        }    
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_objitf_SetLossOfControlInterfaces( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt object(0);
+    TInt enabled(0);
+    TInt numInterfaces(0);    
+    XAresult res;
+    
+    status = aItem.GetNextInt(object);
+    
+    if(!status)
+        {
+        /* Initialize arrays required[] and iidArray[] */
+        for (TInt i = 0; i < MAX_NUMBER_INTERFACES; i++)
+            {
+            iidArray[i] = XA_IID_NULL;
+            }
+    
+        status = aItem.GetNextInt(numInterfaces);
+        
+        for(TInt j = 0; j < numInterfaces; j++)
+            {
+            TInt interface(0);
+            status = aItem.GetNextInt(interface);
+            if(!status)
+                {
+                iidArray[j] = MapInterface(interface);
+                numInterfaces = j++;
+                }
+            else
+                {
+                status = KErrGeneral;
+                break;
+                }
+            }
+    
+        if(!status)
+            {
+            status = aItem.GetNextInt(enabled);
+            if(!status)
+                {
+                XAObjectItf itf = GetObject(object);
+                 if(itf != NULL)
+                     {
+                     res = (*itf)->SetLossOfControlInterfaces(itf, numInterfaces, iidArray, enabled);
+                     status = res;
+                     }
+                 else
+                     {
+                     status = KErrNotFound;
+                     }
+                }
+            }
+    
+        }
+    
+    return status;
+
+    }
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxaltestmodule.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,199 @@
+/*
+* Copyright (c) 2009 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: This file contains testclass implementation.
+*
+*/
+
+// INCLUDE FILES
+#include <StifTestInterface.h>
+#include "openmaxaltestmodule.h"
+#include <SettingServerClient.h>
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// COpenMAXALTestModule::COpenMAXALTestModule
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+COpenMAXALTestModule::COpenMAXALTestModule( 
+    CTestModuleIf& aTestModuleIf ):
+        CScriptBase( aTestModuleIf )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// COpenMAXALTestModule::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void COpenMAXALTestModule::ConstructL()
+    {
+    //Read logger settings to check whether test case name is to be
+    //appended to log file name.
+    RSettingServer settingServer;
+    TInt ret = settingServer.Connect();
+    if(ret != KErrNone)
+        {
+        User::Leave(ret);
+        }
+    // Struct to StifLogger settigs.
+    TLoggerSettings loggerSettings; 
+    // Parse StifLogger defaults from STIF initialization file.
+    ret = settingServer.GetLoggerSettings(loggerSettings);
+    if(ret != KErrNone)
+        {
+        User::Leave(ret);
+        } 
+    // Close Setting server session
+    settingServer.Close();
+
+    TFileName logFileName;
+    
+    if(loggerSettings.iAddTestCaseTitle)
+        {
+        TName title;
+        TestModuleIf().GetTestCaseTitleL(title);
+        logFileName.Format(KOpenMAXALTestModuleLogFileWithTitle, &title);
+        }
+    else
+        {
+        logFileName.Copy(KOpenMAXALTestModuleLogFile);
+        }
+
+    iLog = CStifLogger::NewL( KOpenMAXALTestModuleLogPath, 
+                          logFileName,
+                          CStifLogger::ETxt,
+                          CStifLogger::EFile,
+                          EFalse );
+    
+    SendTestClassVersion();
+    }
+
+// -----------------------------------------------------------------------------
+// COpenMAXALTestModule::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+COpenMAXALTestModule* COpenMAXALTestModule::NewL( 
+    CTestModuleIf& aTestModuleIf )
+    {
+    COpenMAXALTestModule* self = new (ELeave) COpenMAXALTestModule( aTestModuleIf );
+
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+
+    return self;
+
+    }
+
+// Destructor
+COpenMAXALTestModule::~COpenMAXALTestModule()
+    { 
+
+    // Delete resources allocated from test methods
+    Delete();
+
+    // Delete logger
+    delete iLog; 
+
+    }
+
+//-----------------------------------------------------------------------------
+// COpenMAXALTestModule::SendTestClassVersion
+// Method used to send version of test class
+//-----------------------------------------------------------------------------
+//
+void COpenMAXALTestModule::SendTestClassVersion()
+	{
+	TVersion moduleVersion;
+	moduleVersion.iMajor = TEST_CLASS_VERSION_MAJOR;
+	moduleVersion.iMinor = TEST_CLASS_VERSION_MINOR;
+	moduleVersion.iBuild = TEST_CLASS_VERSION_BUILD;
+	
+	TFileName moduleName;
+	moduleName = _L("OpenMAXALTestModule.dll");
+
+	TBool newVersionOfMethod = ETrue;
+	TestModuleIf().SendTestModuleVersion(moduleVersion, moduleName, newVersionOfMethod);
+	}
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+// -----------------------------------------------------------------------------
+// LibEntryL is a polymorphic Dll entry point.
+// Returns: CScriptBase: New CScriptBase derived object
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CScriptBase* LibEntryL( 
+    CTestModuleIf& aTestModuleIf ) // Backpointer to STIF Test Framework
+    {
+
+    return ( CScriptBase* ) COpenMAXALTestModule::NewL( aTestModuleIf );
+
+    }
+
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxaltestmoduleblocks.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,653 @@
+/*
+* Copyright (c) 2009 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include "openmaxaltestmodule.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// COpenMAXALTestModule::Delete
+// Delete here all resources allocated and opened from test methods. 
+// Called from destructor. 
+// -----------------------------------------------------------------------------
+//
+void COpenMAXALTestModule::Delete() 
+    {
+    if(m_URIName)
+        {
+        delete m_URIName;
+        m_URIName = NULL;
+        }
+    if(m_MimeType)
+        {
+        delete m_MimeType;
+        m_MimeType = NULL;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// COpenMAXALTestModule::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt COpenMAXALTestModule::RunMethodL( 
+    CStifItemParser& aItem ) 
+    {
+
+    static TStifFunctionInfo const KFunctions[] =
+        {  
+        // Copy this line for every implemented function.
+        // First string is the function name used in TestScripter script file.
+        // Second is the actual implementation member function. 
+        ENTRY( "Example", COpenMAXALTestModule::ExampleL ),
+        
+        /* Common Utility Functions begins*/
+        ENTRY( "al_SetDataSource", COpenMAXALTestModule::al_SetDataSource ),
+        ENTRY( "al_SetDataSink", COpenMAXALTestModule::al_SetDataSink ),
+        ENTRY( "al_SetDataLocator", COpenMAXALTestModule::al_SetDataLocator ),
+        ENTRY( "al_SetDataFormat", COpenMAXALTestModule::al_SetDataFormat ),
+        /* Common Utility Functions ends*/
+        
+        ENTRY( "al_createEngine", COpenMAXALTestModule::al_createEngine ),
+        ENTRY( "al_queryNumSupportedEngineInterfaces", COpenMAXALTestModule::al_queryNumSupportedEngineInterfaces ),
+        ENTRY( "al_querySupportedEngineInterfaces", COpenMAXALTestModule::al_querySupportedEngineInterfaces ),
+        
+        /*ObjectItf begins*/
+        ENTRY( "al_objitf_Realize", COpenMAXALTestModule::al_objitf_Realize ),       
+        ENTRY( "al_objitf_Resume", COpenMAXALTestModule::al_objitf_Resume ),
+        ENTRY( "al_objitf_GetState", COpenMAXALTestModule::al_objitf_GetState ),
+        ENTRY( "al_objitf_GetInterface", COpenMAXALTestModule::al_objitf_GetInterface ),
+        ENTRY( "al_objitf_RegisterCallback", COpenMAXALTestModule::al_objitf_RegisterCallback ),
+        ENTRY( "al_objitf_AbortAsyncOperation", COpenMAXALTestModule::al_objitf_AbortAsyncOperation ),
+        ENTRY( "al_objitf_Destroy", COpenMAXALTestModule::al_objitf_Destroy ),
+        ENTRY( "al_objitf_SetPriority", COpenMAXALTestModule::al_objitf_SetPriority ),
+        ENTRY( "al_objitf_GetPriority", COpenMAXALTestModule::al_objitf_GetPriority ),
+        ENTRY( "al_objitf_SetLossOfControlInterfaces", COpenMAXALTestModule::al_objitf_SetLossOfControlInterfaces ),
+        /*ObjectItf ends*/
+
+        /*DynItfMgmtItf begins*/
+        ENTRY( "al_dimitf_AddInterface", COpenMAXALTestModule::al_dimitf_AddInterface ),
+        ENTRY( "al_dimitf_RemoveInterface", COpenMAXALTestModule::al_dimitf_RemoveInterface ),
+        ENTRY( "al_dimitf_ResumeInterface", COpenMAXALTestModule::al_dimitf_ResumeInterface ),
+        ENTRY( "al_dimitf_RegisterCallback", COpenMAXALTestModule::al_dimitf_RegisterCallback ),
+        /*DynItfMgmtItf ends*/
+        
+        
+        /*EngineItf begins*/
+        ENTRY( "al_engitf_CreateCameraDevice", COpenMAXALTestModule::al_engitf_CreateCameraDevice ),
+        ENTRY( "al_engitf_CreateRadioDevice", COpenMAXALTestModule::al_engitf_CreateRadioDevice ),
+        ENTRY( "al_engitf_CreateLEDDevice", COpenMAXALTestModule::al_engitf_CreateLEDDevice ),
+        ENTRY( "al_engitf_CreateVibraDevice", COpenMAXALTestModule::al_engitf_CreateVibraDevice ),
+        ENTRY( "al_engitf_CreateMediaPlayer", COpenMAXALTestModule::al_engitf_CreateMediaPlayer ),
+        ENTRY( "al_engitf_CreateMediaRecorder", COpenMAXALTestModule::al_engitf_CreateMediaRecorder ),
+        ENTRY( "al_engitf_CreateOutputMix", COpenMAXALTestModule::al_engitf_CreateOutputMix ),
+        ENTRY( "al_engitf_CreateMetadataExtractor", COpenMAXALTestModule::al_engitf_CreateMetadataExtractor ),
+        ENTRY( "al_engitf_CreateExtensionObject", COpenMAXALTestModule::al_engitf_CreateExtensionObject ),
+        ENTRY( "al_engitf_GetImplementationInfo", COpenMAXALTestModule::al_engitf_GetImplementationInfo ),
+        ENTRY( "al_engitf_QuerySupportedProfiles", COpenMAXALTestModule::al_engitf_QuerySupportedProfiles ),
+        ENTRY( "al_engitf_QueryNumSupportedInterfaces", COpenMAXALTestModule::al_engitf_QueryNumSupportedInterfaces ),
+        ENTRY( "al_engitf_QuerySupportedInterfaces", COpenMAXALTestModule::al_engitf_QuerySupportedInterfaces ),
+        ENTRY( "al_engitf_QueryNumSupportedExtension", COpenMAXALTestModule::al_engitf_QueryNumSupportedExtension ),
+        ENTRY( "al_engitf_QuerySupportedExtension", COpenMAXALTestModule::al_engitf_QuerySupportedExtension ),
+        ENTRY( "al_engitf_IsExtensionSupported", COpenMAXALTestModule::al_engitf_IsExtensionSupported ),
+        ENTRY( "al_engitf_QueryLEDCapabilities", COpenMAXALTestModule::al_engitf_QueryLEDCapabilities ),
+        ENTRY( "al_engitf_QueryVibraCapabilities", COpenMAXALTestModule::al_engitf_QueryVibraCapabilities ),
+        /*EngineItf ends*/
+        
+        /*AudioIODeviceCapabilitiesItf ends*/
+        ENTRY( "al_audioiodevcapitf_GetAvailableAudioInputs", COpenMAXALTestModule::al_audioiodevcapitf_GetAvailableAudioInputs ),
+        ENTRY( "al_audioiodevcapitf_QueryAudioInputCapabilities", COpenMAXALTestModule::al_audioiodevcapitf_QueryAudioInputCapabilities ),
+        ENTRY( "al_audioiodevcapitf_RegisterAvailableAudioInputsChangedCallback", COpenMAXALTestModule::al_audioiodevcapitf_RegisterAvailableAudioInputsChangedCallback ),
+        ENTRY( "al_audioiodevcapitf_GetAvailableAudioOutputs", COpenMAXALTestModule::al_audioiodevcapitf_GetAvailableAudioOutputs ),
+        ENTRY( "al_audioiodevcapitf_QueryAudioOutputCapabilities", COpenMAXALTestModule::al_audioiodevcapitf_QueryAudioOutputCapabilities ),
+        ENTRY( "al_audioiodevcapitf_RegisterAvailableAudioOutputsChangedCallback", COpenMAXALTestModule::al_audioiodevcapitf_RegisterAvailableAudioOutputsChangedCallback ),
+        ENTRY( "al_audioiodevcapitf_RegisterDefaultDeviceIDMapChangedCallback", COpenMAXALTestModule::al_audioiodevcapitf_RegisterDefaultDeviceIDMapChangedCallback ),
+        ENTRY( "al_audioiodevcapitf_GetAssociatedAudioInputs", COpenMAXALTestModule::al_audioiodevcapitf_GetAssociatedAudioInputs ),
+        ENTRY( "al_audioiodevcapitf_GetAssociatedAudioOutputs", COpenMAXALTestModule::al_audioiodevcapitf_GetAssociatedAudioOutputs ),
+        ENTRY( "al_audioiodevcapitf_GetDefaultAudioDevices", COpenMAXALTestModule::al_audioiodevcapitf_GetDefaultAudioDevices ),
+        ENTRY( "al_audioiodevcapitf_QuerySampleFormatsSupported", COpenMAXALTestModule::al_audioiodevcapitf_QuerySampleFormatsSupported ),
+        /*AudioIODeviceCapabilitiesItf ends*/
+
+        /*AudioEncoderCapabilitiesItf ends*/
+        ENTRY( "al_audioencodercapitf_GetAudioEncoders", COpenMAXALTestModule::al_audioencodercapitf_GetAudioEncoders ),
+        ENTRY( "al_audioencodercapitf_GetAudioEncoderCapabilities", COpenMAXALTestModule::al_audioencodercapitf_GetAudioEncoderCapabilities ),
+        /*AudioIODeviceCapabilitiesItf ends*/
+
+        
+        /*RecordItf ends*/
+        ENTRY( "al_recorditf_SetRecordState", COpenMAXALTestModule::al_recorditf_SetRecordState ),
+        ENTRY( "al_recorditf_GetRecordState", COpenMAXALTestModule::al_recorditf_GetRecordState ),
+        ENTRY( "al_recorditf_SetDurationLimit", COpenMAXALTestModule::al_recorditf_SetDurationLimit ),
+        ENTRY( "al_recorditf_GetPosition", COpenMAXALTestModule::al_recorditf_GetPosition ),
+        ENTRY( "al_recorditf_RegisterCallback", COpenMAXALTestModule::al_recorditf_RegisterCallback ),
+        ENTRY( "al_recorditf_SetCallbackEventsMask", COpenMAXALTestModule::al_recorditf_SetCallbackEventsMask ),
+        ENTRY( "al_recorditf_GetCallbackEventsMask", COpenMAXALTestModule::al_recorditf_GetCallbackEventsMask ),
+        ENTRY( "al_recorditf_SetMarkerPosition", COpenMAXALTestModule::al_recorditf_SetMarkerPosition ),
+        ENTRY( "al_recorditf_ClearMarkerPosition", COpenMAXALTestModule::al_recorditf_ClearMarkerPosition ),
+        ENTRY( "al_recorditf_GetMarkerPosition", COpenMAXALTestModule::al_recorditf_GetMarkerPosition ),
+        ENTRY( "al_recorditf_SetPositionUpdatePeriod", COpenMAXALTestModule::al_recorditf_SetPositionUpdatePeriod ),
+        ENTRY( "al_recorditf_GetPositionUpdatePeriod", COpenMAXALTestModule::al_recorditf_GetPositionUpdatePeriod ),
+        /*RecordItf ends*/
+
+        
+        /*AudioEncoderItf ends*/
+        ENTRY( "al_audioencoderitf_SetEncoderSettings", COpenMAXALTestModule::al_audioencoderitf_SetEncoderSettings ),
+        ENTRY( "al_audioencoderitf_GetEncoderSettings", COpenMAXALTestModule::al_audioencoderitf_GetEncoderSettings ),
+        /*AudioEncoderItf ends*/
+
+        
+        /*MetadataInsertionItf ends*/
+        ENTRY( "al_metadatainsertionitf_CreateChildNode", COpenMAXALTestModule::al_metadatainsertionitf_CreateChildNode ),
+        ENTRY( "al_metadatainsertionitf_GetSupportedKeysCount", COpenMAXALTestModule::al_metadatainsertionitf_GetSupportedKeysCount ),
+        ENTRY( "al_metadatainsertionitf_GetKeySize", COpenMAXALTestModule::al_metadatainsertionitf_GetKeySize ),
+        ENTRY( "al_metadatainsertionitf_GetKey", COpenMAXALTestModule::al_metadatainsertionitf_GetKey ),
+        ENTRY( "al_metadatainsertionitf_GetFreeKeysEncoding", COpenMAXALTestModule::al_metadatainsertionitf_GetFreeKeysEncoding ),
+        ENTRY( "al_metadatainsertionitf_InsertMetadataItem", COpenMAXALTestModule::al_metadatainsertionitf_InsertMetadataItem ),
+        ENTRY( "al_metadatainsertionitf_RegisterCallback", COpenMAXALTestModule::al_metadatainsertionitf_RegisterCallback ),
+        /*MetadataInsertionItf ends*/
+        
+        //ADD NEW ENTRY HERE
+        // [test cases entries] - Do not remove
+
+        };
+
+    const TInt count = sizeof( KFunctions ) / 
+                        sizeof( TStifFunctionInfo );
+
+    return RunInternalL( KFunctions, count, aItem );
+
+    }
+
+// -----------------------------------------------------------------------------
+// COpenMAXALTestModule::ExampleL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt COpenMAXALTestModule::ExampleL( CStifItemParser& aItem )
+    {
+
+    // Print to UI
+    _LIT( KOpenMAXALTestModule, "OpenMAXALTestModule" );
+    _LIT( KExample, "In Example" );
+    TestModuleIf().Printf( 0, KOpenMAXALTestModule, KExample );
+    // Print to log file
+    iLog->Log( KExample );
+
+    TInt i = 0;
+    TPtrC string;
+    _LIT( KParam, "Param[%i]: %S" );
+    while ( aItem.GetNextString ( string ) == KErrNone )
+        {
+        TestModuleIf().Printf( i, KOpenMAXALTestModule, 
+                                KParam, i, &string );
+        i++;
+        }
+
+    return KErrNone;
+
+    }
+
+TInt COpenMAXALTestModule::MapErr(XAresult xa_res)
+    {
+    TInt status(KErrGeneral);
+    switch(xa_res)
+        {
+        case XA_RESULT_SUCCESS:
+            //iLog->Log(_L("XA_RESULT_SUCCESS"));
+            status = KErrNone;
+            break;
+        case XA_RESULT_PRECONDITIONS_VIOLATED:
+            iLog->Log(_L("XA_RESULT_PRECONDITIONS_VIOLATED"));
+            break;
+        case XA_RESULT_PARAMETER_INVALID:
+            iLog->Log(_L("XA_RESULT_PARAMETER_INVALID"));
+            break;
+        case XA_RESULT_MEMORY_FAILURE:
+            iLog->Log(_L("XA_RESULT_MEMORY_FAILURE"));
+            break;
+        case XA_RESULT_RESOURCE_ERROR:
+            iLog->Log(_L("XA_RESULT_RESOURCE_ERROR"));
+            break;
+        case XA_RESULT_RESOURCE_LOST:
+            iLog->Log(_L("XA_RESULT_RESOURCE_LOST"));
+            break;
+        case XA_RESULT_IO_ERROR:
+            iLog->Log(_L("XA_RESULT_IO_ERROR"));
+            break;
+        case XA_RESULT_BUFFER_INSUFFICIENT:
+            iLog->Log(_L("XA_RESULT_BUFFER_INSUFFICIENT"));
+            break;
+        case XA_RESULT_CONTENT_CORRUPTED:
+            iLog->Log(_L("XA_RESULT_CONTENT_CORRUPTED"));
+            break;
+        case XA_RESULT_CONTENT_UNSUPPORTED:
+            iLog->Log(_L("XA_RESULT_CONTENT_UNSUPPORTED"));
+            break;
+        case XA_RESULT_CONTENT_NOT_FOUND:
+            iLog->Log(_L("XA_RESULT_CONTENT_NOT_FOUND"));
+            break;
+        case XA_RESULT_PERMISSION_DENIED:
+            iLog->Log(_L("XA_RESULT_PERMISSION_DENIED"));
+            break;
+        case XA_RESULT_FEATURE_UNSUPPORTED:
+            iLog->Log(_L("XA_RESULT_FEATURE_UNSUPPORTED"));
+            break;
+        case XA_RESULT_INTERNAL_ERROR:
+            iLog->Log(_L("XA_RESULT_INTERNAL_ERROR"));
+            break;
+        case XA_RESULT_UNKNOWN_ERROR:
+            iLog->Log(_L("XA_RESULT_UNKNOWN_ERROR"));
+            break;
+        case XA_RESULT_OPERATION_ABORTED:
+            iLog->Log(_L("XA_RESULT_OPERATION_ABORTED"));
+            break;
+        case XA_RESULT_CONTROL_LOST:
+            iLog->Log(_L("XA_RESULT_CONTROL_LOST"));
+            break;
+        default:
+            iLog->Log(_L("Unknown Error!!!"));
+        }
+    return status;
+    }
+
+
+XAInterfaceID COpenMAXALTestModule::MapInterface(TInt interface)
+    {
+    XAInterfaceID id(XA_IID_NULL);
+    switch(interface)
+        {
+        case 1:
+            id = XA_IID_NULL;
+            break;
+        case 2:
+            id = XA_IID_OBJECT;
+            break;
+        case 3:
+            id = XA_IID_CONFIGEXTENSION;
+            break;
+        case 4:
+            id = XA_IID_DYNAMICINTERFACEMANAGEMENT;
+            break;
+        case 5:
+            id = XA_IID_ENGINE;
+            break;
+        case 6:
+            id = XA_IID_THREADSYNC;
+            break;
+        case 7:
+            id = XA_IID_PLAY;
+            break;
+        case 8:
+            id = XA_IID_PLAYBACKRATE;
+            break;
+        case 9:
+            id = XA_IID_PREFETCHSTATUS;
+            break;
+        case 10:
+            id = XA_IID_SEEK;
+            break;
+        case 11:
+            id = XA_IID_VOLUME;
+            break;
+        case 12:
+            id = XA_IID_IMAGECONTROLS;
+            break;
+        case 13:
+            id = XA_IID_IMAGEEFFECTS;
+            break;
+        case 14:
+            id = XA_IID_VIDEOPOSTPROCESSING;
+            break;
+        case 15:
+            id = XA_IID_RECORD;
+            break;
+        case 16:
+            id = XA_IID_SNAPSHOT;
+            break;
+        case 17:
+            id = XA_IID_METADATAEXTRACTION;
+            break;
+        case 18:
+            id = XA_IID_METADATAINSERTION;
+            break;
+        case 19:
+            id = XA_IID_METADATATRAVERSAL;
+            break;
+        case 20:
+            id = XA_IID_DYNAMICSOURCE;
+            break;
+        case 21:
+            id = XA_IID_CAMERACAPABILITIES;
+            break;
+        case 22:
+            id = XA_IID_CAMERA;
+            break;
+        case 23:
+            id = XA_IID_AUDIOIODEVICECAPABILITIES;
+            break;
+        case 24:
+            id = XA_IID_DEVICEVOLUME;
+            break;
+        case 25:
+            id = XA_IID_EQUALIZER;
+            break;
+        case 26:
+            id = XA_IID_OUTPUTMIX;
+            break;
+        case 27:
+            id = XA_IID_RADIO;
+            break;
+        case 28:
+            id = XA_IID_RDS;
+            break;
+        case 29:
+            id = XA_IID_VIBRA;
+            break;
+        case 30:
+            id = XA_IID_LED;
+            break;
+        case 31:
+            id = XA_IID_AUDIODECODERCAPABILITIES;
+            break;
+        case 32:
+            id = XA_IID_AUDIOENCODER;
+            break;
+        case 33:
+            id = XA_IID_AUDIOENCODERCAPABILITIES;
+            break;
+        case 34:
+            id = XA_IID_IMAGEENCODERCAPABILITIES;
+            break;
+        case 35:
+            id = XA_IID_IMAGEDECODERCAPABILITIES;
+            break;
+        case 36:
+            id = XA_IID_IMAGEENCODER;
+            break;
+        case 37:
+            id = XA_IID_VIDEODECODERCAPABILITIES;
+            break;
+        case 38:
+            id = XA_IID_VIDEOENCODER;
+            break;
+        case 39:
+            id = XA_IID_VIDEOENCODERCAPABILITIES;
+            break;
+        case 40:
+            id = XA_IID_STREAMINFORMATION;
+            break;
+        default:
+            break;
+        }
+    return id;
+    }
+
+XAObjectItf COpenMAXALTestModule::GetObject(TInt object)
+    {
+    XAObjectItf itf;
+    switch(object)
+        {
+        case XA_OBJECTID_ENGINE:
+            itf = m_EOEngine;
+            break;
+        case XA_OBJECTID_LEDDEVICE:
+            itf = m_MOLEDObject;
+            break;
+        case XA_OBJECTID_VIBRADEVICE:
+            itf = m_MOVibraObject;
+            break;           
+        case XA_OBJECTID_MEDIAPLAYER:
+            itf = m_MOPlayer;
+            break;           
+        case XA_OBJECTID_MEDIARECORDER:
+            itf = m_MORecorder;
+            break;
+        case XA_OBJECTID_RADIODEVICE:
+            itf = m_MORadioObject;
+            break;
+        case XA_OBJECTID_OUTPUTMIX:
+            itf = m_MOOutputMix;
+            break;
+        case XA_OBJECTID_METADATAEXTRACTOR:
+            itf = m_MOMetadataExtractor;
+            break;
+        case XA_OBJECTID_CAMERADEVICE:
+            itf = m_MOCameraObject;
+            break;
+        case 10:
+            /*Extension Object Defined own id as 10*/
+            itf = m_MOExtnObject;
+            break;
+        default:
+            itf = NULL;
+            break;
+        }
+    return itf;
+    }
+
+TInt COpenMAXALTestModule::StoreInterface(TInt interface, void* id)
+    {
+    TInt status(KErrNone);
+    switch(interface)
+        {
+        case 1:
+/*            XA_IID_NULL;*/
+            break;
+        case 2:
+/*            XA_IID_OBJECT;*/
+            break;
+        case 3:
+/*            XA_IID_CONFIGEXTENSION;*/
+            break;
+        case 4:
+            m_DIMItf = XADynamicInterfaceManagementItf(id);
+/*            XA_IID_DYNAMICINTERFACEMANAGEMENT;*/
+            break;
+        case 5:
+            m_EngineItf = XAEngineItf(id);
+            break;
+        case 6:
+/*            XA_IID_THREADSYNC;*/
+            break;
+        case 7:
+/*            XA_IID_PLAY;*/
+            break;
+        case 8:
+/*            XA_IID_PLAYBACKRATE;*/
+            break;
+        case 9:
+/*            XA_IID_PREFETCHSTATUS;*/
+            break;
+        case 10:
+/*            XA_IID_SEEK;*/
+            break;
+        case 11:
+/*            XA_IID_VOLUME;*/
+            break;
+        case 12:
+/*            XA_IID_IMAGECONTROLS;*/
+            break;
+        case 13:
+/*            XA_IID_IMAGEEFFECTS;*/
+            break;
+        case 14:
+/*            XA_IID_VIDEOPOSTPROCESSING;*/
+            break;
+        case 15:
+            m_RecordItf = XARecordItf(id);
+            break;
+        case 16:
+/*            XA_IID_SNAPSHOT;*/
+            break;
+        case 17:
+/*            XA_IID_METADATAEXTRACTION;*/
+            break;
+        case 18:
+            m_MetadataInsertionItf = XAMetadataInsertionItf(id);
+/*            XA_IID_METADATAINSERTION;*/
+            break;
+        case 19:
+/*            XA_IID_METADATATRAVERSAL;*/
+            break;
+        case 20:
+/*            XA_IID_DYNAMICSOURCE;*/
+            break;
+        case 21:
+/*            XA_IID_CAMERACAPABILITIES;*/
+            break;
+        case 22:
+/*            XA_IID_CAMERA;*/
+            break;
+        case 23:
+            m_AIODevCapItf = XAAudioIODeviceCapabilitiesItf(id);
+/*            XA_IID_AUDIOIODEVICECAPABILITIES;*/
+            break;
+        case 24:
+/*            XA_IID_DEVICEVOLUME;*/
+            break;
+        case 25:
+/*            XA_IID_EQUALIZER;*/
+            break;
+        case 26:
+/*            XA_IID_OUTPUTMIX;*/
+            break;
+        case 27:
+/*            XA_IID_RADIO;*/
+            break;
+        case 28:
+/*            XA_IID_RDS;*/
+            break;
+        case 29:
+/*            XA_IID_VIBRA;*/
+            break;
+        case 30:
+/*            XA_IID_LED;*/
+            break;
+        case 31:
+/*            XA_IID_AUDIODECODERCAPABILITIES;*/
+            break;
+        case 32:
+            m_AudEncItf = XAAudioEncoderItf(id);
+/*            XA_IID_AUDIOENCODER;*/
+            break;
+        case 33:
+            m_AEncCapItf = XAAudioEncoderCapabilitiesItf(id);
+/*            XA_IID_AUDIOENCODERCAPABILITIES;*/
+            break;
+        case 34:
+/*            XA_IID_IMAGEENCODERCAPABILITIES;*/
+            break;
+        case 35:
+/*            XA_IID_IMAGEDECODERCAPABILITIES;*/
+            break;
+        case 36:
+/*            XA_IID_IMAGEENCODER;*/
+            break;
+        case 37:
+/*            XA_IID_VIDEODECODERCAPABILITIES;*/
+            break;
+        case 38:
+/*            XA_IID_VIDEOENCODER;*/
+            break;
+        case 39:
+/*            XA_IID_VIDEOENCODERCAPABILITIES;*/
+            break;
+        case 40:
+/*            XA_IID_STREAMINFORMATION;*/
+            break;
+        default:
+            break;
+            
+        }
+    return status;
+    }
+
+
+// -----------------------------------------------------------------------------
+// COpenMAXALTestModule::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+/*
+TInt COpenMAXALTestModule::?member_function(
+   CItemParser& aItem )
+   {
+
+   ?code
+
+   }
+*/
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// None
+
+//  [End of File] - Do not remove
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/engine/openmaxalaudioencodercapabiltiesitftests.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,137 @@
+/*
+* Copyright (c) 2009 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include "openmaxaltestmodule.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+TInt COpenMAXALTestModule::al_audioencodercapitf_GetAudioEncoders( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt numEncoders(0);
+    XAuint32 deviceIdArr[4];
+    XAresult res;
+    XAuint32 numEnc(0);
+    
+    status = aItem.GetNextInt(numEncoders);
+    if(!status)
+        {
+        numEnc = numEncoders;
+        if(m_AEncCapItf)
+            {
+            res = (*m_AEncCapItf)->GetAudioEncoders(
+                    m_AEncCapItf, &numEnc, deviceIdArr);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }            
+        }
+    else
+        {
+        if(m_AEncCapItf)
+            {
+            res = (*m_AEncCapItf)->GetAudioEncoders(
+                    m_AEncCapItf, &numEnc, NULL);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }            
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_audioencodercapitf_GetAudioEncoderCapabilities( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt encId(0);
+    XAuint32 encoderid(0);
+    XAuint32 index(0);
+    XAAudioCodecDescriptor desc;
+    XAresult res;
+    
+    status = aItem.GetNextInt(encId);
+    if(!status)
+        {
+        encoderid = encId;
+        if(m_AEncCapItf)
+            {
+            res = (*m_AEncCapItf)->GetAudioEncoderCapabilities(
+                    m_AEncCapItf, encoderid, &index, &desc);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }                
+        }
+    return status;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/engine/openmaxalaudioiodevicecapabilitiesitfcallbacks.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,99 @@
+/*
+* Copyright (c) 2009 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include "openmaxaltestmodule.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+void AvailAudioOutputsChangedCallback(
+        XAAudioIODeviceCapabilitiesItf caller,
+        void * pContext,
+        XAuint32 deviceID,
+        XAint32 numInputs,
+        XAboolean isNew)
+    {
+    
+    }
+
+void AvailAudioInputsChangedCallback(
+        XAAudioIODeviceCapabilitiesItf caller,
+        void * pContext,
+        XAuint32 deviceID,
+        XAint32 numInputs,
+        XAboolean isNew)
+    {
+    
+    }
+
+void DefaultDeviceIDMapChangedCallback (
+    XAAudioIODeviceCapabilitiesItf caller,
+    void * pContext,
+    XAboolean isOutput,
+    XAint32 numDevices)
+    {
+    
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/engine/openmaxalaudioiodevicecapabilitiesitftests.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,493 @@
+/*
+* Copyright (c) 2009 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include "openmaxaltestmodule.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+void AvailAudioInputsChangedCallback(
+        XAAudioIODeviceCapabilitiesItf caller,
+        void * pContext,
+        XAuint32 deviceID,
+        XAint32 numInputs,
+        XAboolean isNew
+    );
+
+void AvailAudioOutputsChangedCallback(
+        XAAudioIODeviceCapabilitiesItf caller,
+        void * pContext,
+        XAuint32 deviceID,
+        XAint32 numInputs,
+        XAboolean isNew
+    );
+
+void DefaultDeviceIDMapChangedCallback (
+    XAAudioIODeviceCapabilitiesItf caller,
+    void * pContext,
+    XAboolean isOutput,
+    XAint32 numDevices);
+    
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+TInt COpenMAXALTestModule::al_audioiodevcapitf_GetAvailableAudioInputs( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    
+    TInt deviceId(0);
+    XAint32 devId;
+    XAuint32* deviceIdArr(NULL);
+    
+    status = aItem.GetNextInt(deviceId);
+    if(!status)
+        {
+        devId = deviceId;
+        if(m_AIODevCapItf)
+            {
+            res = (*m_AIODevCapItf)->GetAvailableAudioInputs(
+                    m_AIODevCapItf, &devId, deviceIdArr);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }        
+        }
+    else
+        {
+        if(m_AIODevCapItf)
+            {
+            res = (*m_AIODevCapItf)->GetAvailableAudioInputs(
+                    m_AIODevCapItf, &devId, NULL);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }        
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_audioiodevcapitf_QueryAudioInputCapabilities( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAAudioInputDescriptor inputDesc;
+    XAresult res;
+    TUint deviceId(0);
+    XAuint32 devId(0);
+    
+    status = aItem.GetNextInt(deviceId);
+    if(!status)
+        {
+        devId = deviceId;
+        if(m_AIODevCapItf)
+            {
+            res = (*m_AIODevCapItf)->QueryAudioInputCapabilities(
+                    m_AIODevCapItf, devId, &inputDesc);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            } 
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_audioiodevcapitf_RegisterAvailableAudioInputsChangedCallback( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    
+    if(m_AIODevCapItf)
+        {
+        res = (*m_AIODevCapItf)->RegisterAvailableAudioInputsChangedCallback(
+                m_AIODevCapItf, AvailAudioInputsChangedCallback, (void*)this);
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }            
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_audioiodevcapitf_GetAvailableAudioOutputs( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    
+    TInt deviceId(0);
+    XAint32 devId;
+    XAuint32* deviceIdArr(NULL);
+    
+    status = aItem.GetNextInt(deviceId);
+    if(!status)
+        {
+        devId = deviceId;
+        if(m_AIODevCapItf)
+            {
+            res = (*m_AIODevCapItf)->GetAvailableAudioOutputs(
+                    m_AIODevCapItf, &devId, deviceIdArr);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }        
+        }
+    else
+        {
+        if(m_AIODevCapItf)
+            {
+            res = (*m_AIODevCapItf)->GetAvailableAudioOutputs(
+                    m_AIODevCapItf, &devId, NULL);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }        
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_audioiodevcapitf_QueryAudioOutputCapabilities( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAAudioOutputDescriptor outputDesc;
+    XAresult res;
+    TUint deviceId(0);
+    XAuint32 devId(0);
+    
+    status = aItem.GetNextInt(deviceId);
+    if(!status)
+        {
+        devId = deviceId;
+        if(m_AIODevCapItf)
+            {
+            res = (*m_AIODevCapItf)->QueryAudioOutputCapabilities(
+                    m_AIODevCapItf, devId, &outputDesc);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            } 
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_audioiodevcapitf_RegisterAvailableAudioOutputsChangedCallback( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    
+    if(m_AIODevCapItf)
+        {
+        res = (*m_AIODevCapItf)->RegisterAvailableAudioOutputsChangedCallback(
+                m_AIODevCapItf, AvailAudioOutputsChangedCallback, (void*)this);
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }            
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_audioiodevcapitf_RegisterDefaultDeviceIDMapChangedCallback( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    
+    if(m_AIODevCapItf)
+        {
+        res = (*m_AIODevCapItf)->RegisterDefaultDeviceIDMapChangedCallback(
+                m_AIODevCapItf, DefaultDeviceIDMapChangedCallback, (void*)this);
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }            
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_audioiodevcapitf_GetAssociatedAudioInputs( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    
+    TUint deviceId(0);
+    TInt sizeArr(0);
+    XAuint32 devId(0);
+    XAint32 numInputs(0);
+    XAuint32 deviceIdArr[2];
+    
+    status = aItem.GetNextInt(deviceId);
+    if(!status)
+        {
+        devId = deviceId;
+        status = aItem.GetNextInt(sizeArr);
+        if(!status)
+            {
+            numInputs = sizeArr;
+            if(m_AIODevCapItf)
+                {
+                res = (*m_AIODevCapItf)->GetAssociatedAudioInputs(
+                        m_AIODevCapItf, devId, &numInputs, deviceIdArr);
+                status = res;
+                }
+            else
+                {
+                status = KErrNotFound;
+                }        
+            }
+        else
+            {
+            if(m_AIODevCapItf)
+                {
+                res = (*m_AIODevCapItf)->GetAssociatedAudioInputs(
+                        m_AIODevCapItf, devId,&numInputs, NULL);
+                status = res;
+                }
+            else
+                {
+                status = KErrNotFound;
+                }                
+            }
+        }
+    else
+        {
+        status = KErrGeneral;
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_audioiodevcapitf_GetAssociatedAudioOutputs( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    
+    TUint deviceId(0);
+    TInt sizeArr(0);
+    XAuint32 devId(0);
+    XAint32 numOutputs(0);
+    XAuint32 deviceIdArr[2];
+    
+    status = aItem.GetNextInt(deviceId);
+    if(!status)
+        {
+        devId = deviceId;
+        status = aItem.GetNextInt(sizeArr);
+        if(!status)
+            {
+            numOutputs = sizeArr;
+            if(m_AIODevCapItf)
+                {
+                res = (*m_AIODevCapItf)->GetAssociatedAudioOutputs(
+                        m_AIODevCapItf, devId, &numOutputs, deviceIdArr);
+                status = res;
+                }
+            else
+                {
+                status = KErrNotFound;
+                }        
+            }
+        else
+            {
+            if(m_AIODevCapItf)
+                {
+                res = (*m_AIODevCapItf)->GetAssociatedAudioOutputs(
+                        m_AIODevCapItf, devId,&numOutputs, NULL);
+                status = res;
+                }
+            else
+                {
+                status = KErrNotFound;
+                }                
+            }
+        }
+    else
+        {
+        status = KErrGeneral;
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_audioiodevcapitf_GetDefaultAudioDevices( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    
+    TUint deviceId(0);
+    TInt sizeArr(0);
+    XAuint32 devId(0);
+    XAint32 numOutputs(0);
+    XAuint32 deviceIdArr[2];
+    
+    status = aItem.GetNextInt(deviceId, EHex);
+    if(!status)
+        {
+        devId = deviceId;
+        status = aItem.GetNextInt(sizeArr);
+        if(!status)
+            {
+            numOutputs = sizeArr;
+            if(m_AIODevCapItf)
+                {
+                res = (*m_AIODevCapItf)->GetDefaultAudioDevices(
+                        m_AIODevCapItf, devId, &numOutputs, deviceIdArr);
+                status = res;
+                }
+            else
+                {
+                status = KErrNotFound;
+                }        
+            }
+        else
+            {
+            if(m_AIODevCapItf)
+                {
+                res = (*m_AIODevCapItf)->GetDefaultAudioDevices(
+                        m_AIODevCapItf, devId,&numOutputs, NULL);
+                status = res;
+                }
+            else
+                {
+                status = KErrNotFound;
+                }                
+            }
+        }
+    else
+        {
+        status = KErrGeneral;
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_audioiodevcapitf_QuerySampleFormatsSupported( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    TInt sizeArr(0);
+    TUint deviceId(0);
+    TInt samplerate(0);
+    XAuint32 devId(0);
+    XAmilliHertz samplingrate;
+    XAint32 deviceIdArr[20];
+    XAint32 numSampleRates(0);
+    
+    status = aItem.GetNextInt(deviceId);
+    if(!status)
+        {
+        devId = deviceId;
+        status = aItem.GetNextInt(samplerate);
+        if(!status)
+            {
+            samplingrate = samplerate;
+            status = aItem.GetNextInt(sizeArr);
+            if(!status)
+                {
+                numSampleRates = sizeArr;
+                if(m_AIODevCapItf)
+                    {
+                    res = (*m_AIODevCapItf)->QuerySampleFormatsSupported(
+                            m_AIODevCapItf, devId, samplingrate, deviceIdArr, &numSampleRates);
+                    status = res;
+                    }
+                else
+                    {
+                    status = KErrNotFound;
+                    }        
+                }
+            else
+                {
+                if(m_AIODevCapItf)
+                    {
+                    res = (*m_AIODevCapItf)->QuerySampleFormatsSupported(
+                            m_AIODevCapItf, devId, samplingrate, NULL, &numSampleRates);
+                    status = res;
+                    }
+                else
+                    {
+                    status = KErrNotFound;
+                    }        
+                }
+            }
+        else
+            {
+            status = KErrGeneral;
+            }
+        }
+    else
+        {
+        status = KErrGeneral;
+        }
+    return status;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/engine/openmaxalengineitftests.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,868 @@
+/*
+* Copyright (c) 2009 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include "openmaxaltestmodule.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+TInt COpenMAXALTestModule::al_engitf_CreateCameraDevice( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt objectId;
+    TInt numInterfaces(0);    
+    XAresult res;
+    
+    
+    /* Initialize arrays required[] and iidArray[] */
+    for (TInt i = 0; i < MAX_NUMBER_INTERFACES; i++)
+        {
+        required[i] = XA_BOOLEAN_FALSE;
+        iidArray[i] = XA_IID_NULL;
+        }
+
+    status = aItem.GetNextInt(numInterfaces);
+    if(!status)
+        {
+        for(TInt j = 0; j < numInterfaces; j++)
+            {
+            TInt interface(0);
+            status = aItem.GetNextInt(interface);
+            if(!status)
+                {
+                required[j] = XA_BOOLEAN_TRUE;
+                iidArray[j] = MapInterface(interface);
+                numInterfaces++;
+                }
+            else
+                {
+                break;
+                }
+            }
+        }
+
+    
+    status = aItem.GetNextInt(objectId);
+    if(!status)
+        {
+        if(m_EngineItf)
+            {
+            res = (*m_EngineItf)->CreateCameraDevice(
+                    m_EngineItf, &m_MOCameraObject, objectId,
+                    numInterfaces, iidArray, required);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }    
+        }
+    return status;
+    }
+
+
+TInt COpenMAXALTestModule::al_engitf_CreateRadioDevice( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt numInterfaces(0);    
+    XAresult res;
+    
+    
+    /* Initialize arrays required[] and iidArray[] */
+    for (TInt i = 0; i < MAX_NUMBER_INTERFACES; i++)
+        {
+        required[i] = XA_BOOLEAN_FALSE;
+        iidArray[i] = XA_IID_NULL;
+        }
+
+    status = aItem.GetNextInt(numInterfaces);
+    if(!status)
+        {
+        for(TInt j = 0; j < numInterfaces; j++)
+            {
+            TInt interface(0);
+            status = aItem.GetNextInt(interface);
+            if(!status)
+                {
+                required[j] = XA_BOOLEAN_TRUE;
+                iidArray[j] = MapInterface(interface);
+                numInterfaces++;
+                }
+            else
+                {
+                break;
+                }
+            }
+        }
+    
+    
+    if(m_EngineItf)
+        {
+        res = (*m_EngineItf)->CreateRadioDevice(
+                m_EngineItf, &m_MORadioObject,
+                numInterfaces, iidArray, required);
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_engitf_CreateLEDDevice( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt objectId;
+    TInt numInterfaces(0);    
+    XAresult res;
+    
+    
+    /* Initialize arrays required[] and iidArray[] */
+    for (TInt i = 0; i < MAX_NUMBER_INTERFACES; i++)
+        {
+        required[i] = XA_BOOLEAN_FALSE;
+        iidArray[i] = XA_IID_NULL;
+        }
+
+    status = aItem.GetNextInt(numInterfaces);
+    if(!status)
+        {
+        for(TInt j = 0; j < numInterfaces; j++)
+            {
+            TInt interface(0);
+            status = aItem.GetNextInt(interface);
+            if(!status)
+                {
+                required[j] = XA_BOOLEAN_TRUE;
+                iidArray[j] = MapInterface(interface);
+                numInterfaces++;
+                }
+            else
+                {
+                break;
+                }
+            }
+        }
+    
+    
+    status = aItem.GetNextInt(objectId);
+    if(!status)
+        {
+        if(m_EngineItf)
+            {
+            res = (*m_EngineItf)->CreateLEDDevice(
+                    m_EngineItf, &m_MOVibraObject, objectId,
+                    numInterfaces, iidArray, required);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }    
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_engitf_CreateVibraDevice( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt objectId;
+    TInt numInterfaces(0);    
+    XAresult res;
+    
+    
+    /* Initialize arrays required[] and iidArray[] */
+    for (TInt i = 0; i < MAX_NUMBER_INTERFACES; i++)
+        {
+        required[i] = XA_BOOLEAN_FALSE;
+        iidArray[i] = XA_IID_NULL;
+        }
+
+    status = aItem.GetNextInt(numInterfaces);
+    if(!status)
+        {
+        for(TInt j = 0; j < numInterfaces; j++)
+            {
+            TInt interface(0);
+            status = aItem.GetNextInt(interface);
+            if(!status)
+                {
+                required[j] = XA_BOOLEAN_TRUE;
+                iidArray[j] = MapInterface(interface);
+                numInterfaces++;
+                }
+            else
+                {
+                break;
+                }
+            }
+        }
+    
+    
+    status = aItem.GetNextInt(objectId);
+    if(!status)
+        {
+        if(m_EngineItf)
+            {
+            res = (*m_EngineItf)->CreateVibraDevice(
+                    m_EngineItf, &m_MOVibraObject, objectId,
+                    numInterfaces, iidArray, required);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }    
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_engitf_CreateMediaPlayer( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XADataSource* audioSource(NULL);
+    XADataSource* videoSource(NULL);
+    XADataSink* audioSink(NULL);
+    XADataSink* videoSink(NULL);
+    XADataSink* ledSink(NULL);
+    XADataSink* vibraSink(NULL);
+    TInt numInterfaces(0);    
+    XAresult res;
+    
+    
+    /* Initialize arrays required[] and iidArray[] */
+    for (TInt i = 0; i < MAX_NUMBER_INTERFACES; i++)
+        {
+        required[i] = XA_BOOLEAN_FALSE;
+        iidArray[i] = XA_IID_NULL;
+        }
+
+    status = aItem.GetNextInt(numInterfaces);
+    if(!status)
+        {
+        for(TInt j = 0; j < numInterfaces; j++)
+            {
+            TInt interface(0);
+            status = aItem.GetNextInt(interface);
+            if(!status)
+                {
+                required[j] = XA_BOOLEAN_TRUE;
+                iidArray[j] = MapInterface(interface);
+                numInterfaces++;
+                }
+            else
+                {
+                break;
+                }
+            }
+        }
+    
+    if(m_AudioSource.pFormat && m_AudioSource.pLocator)
+        {
+        audioSource = &m_AudioSource;
+        }
+    
+    if(m_VideoSource.pFormat && m_VideoSource.pLocator)
+        {
+        videoSource = &m_VideoSource;
+        }
+    
+    if(m_VibraSink.pFormat && m_VibraSink.pLocator)
+        {
+        vibraSink = &m_VibraSink;
+        }
+    
+    if(m_LEDSink.pFormat && m_LEDSink.pLocator)
+        {
+        ledSink = &m_LEDSink;
+        }
+    
+    if(m_AudioSink.pFormat && m_AudioSink.pLocator)
+        {
+        audioSink = &m_AudioSink;
+        }
+    
+    if(m_VideoSink.pFormat && m_VideoSink.pLocator)
+        {
+        videoSink = &m_VideoSink;
+        }    
+    
+    if(m_EngineItf)
+        {
+        res = (*m_EngineItf)->CreateMediaPlayer(
+                m_EngineItf, &m_MOPlayer, audioSource, videoSource,
+                audioSink,videoSink, ledSink, vibraSink,
+                numInterfaces, iidArray, required);
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_engitf_CreateMediaRecorder( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    TInt numInterfaces(0);
+    XADataSource* audioSource(NULL);
+    XADataSource* videoSource(NULL);
+    XADataSink* dataSink(NULL);
+    /* Initialize arrays required[] and iidArray[] */
+    for (TInt i = 0; i < MAX_NUMBER_INTERFACES; i++)
+        {
+        required[i] = XA_BOOLEAN_FALSE;
+        iidArray[i] = XA_IID_NULL;
+        }
+
+    status = aItem.GetNextInt(numInterfaces);
+    if(!status)
+        {
+        for(TInt j = 0; j < numInterfaces; j++)
+            {
+            TInt interface(0);
+            status = aItem.GetNextInt(interface);
+            if(!status)
+                {
+                required[j] = XA_BOOLEAN_TRUE;
+                iidArray[j] = MapInterface(interface);
+                numInterfaces++;
+                }
+            else
+                {
+                break;
+                }
+            }
+        }
+    
+    
+    if(m_AudioSource.pFormat && m_AudioSource.pLocator)
+        {
+        audioSource = &m_AudioSource;
+        }
+    
+    if(m_VideoSource.pFormat && m_VideoSource.pLocator)
+        {
+        videoSource = &m_VideoSource;
+        }
+    
+    if(m_DataSink.pFormat && m_DataSink.pLocator)
+        {
+        dataSink = &m_DataSink;
+        }
+    
+    if(m_EngineItf)
+        {
+        res = (*m_EngineItf)->CreateMediaRecorder(
+                m_EngineItf, &m_MORecorder, audioSource, videoSource, dataSink,
+                numInterfaces, iidArray, required);
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_engitf_CreateOutputMix( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    TInt numInterfaces(0);
+
+    /* Initialize arrays required[] and iidArray[] */
+    for (TInt i = 0; i < MAX_NUMBER_INTERFACES; i++)
+        {
+        required[i] = XA_BOOLEAN_FALSE;
+        iidArray[i] = XA_IID_NULL;
+        }
+
+    status = aItem.GetNextInt(numInterfaces);
+    if(!status)
+        {
+        for(TInt j = 0; j < numInterfaces; j++)
+            {
+            TInt interface(0);
+            status = aItem.GetNextInt(interface);
+            if(!status)
+                {
+                required[j] = XA_BOOLEAN_TRUE;
+                iidArray[j] = MapInterface(interface);
+                numInterfaces++;
+                }
+            else
+                {
+                break;
+                }
+            }
+        }    
+    
+    if(m_EngineItf)
+        {
+        res = (*m_EngineItf)->CreateOutputMix(
+                m_EngineItf, &m_MOOutputMix, 
+                numInterfaces, iidArray, required);
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_engitf_CreateMetadataExtractor( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    TInt numInterfaces(0);
+    XADataSource* metadataSource(NULL);
+    /* Initialize arrays required[] and iidArray[] */
+    for (TInt i = 0; i < MAX_NUMBER_INTERFACES; i++)
+        {
+        required[i] = XA_BOOLEAN_FALSE;
+        iidArray[i] = XA_IID_NULL;
+        }
+
+    status = aItem.GetNextInt(numInterfaces);
+    if(!status)
+        {
+        for(TInt j = 0; j < numInterfaces; j++)
+            {
+            TInt interface(0);
+            status = aItem.GetNextInt(interface);
+            if(!status)
+                {
+                required[j] = XA_BOOLEAN_TRUE;
+                iidArray[j] = MapInterface(interface);
+                numInterfaces++;
+                }
+            else
+                {
+                break;
+                }
+            }
+        }
+    
+    if(m_MOMetadataExtractorSource.pFormat && m_MOMetadataExtractorSource.pLocator)
+        {
+        metadataSource = &m_MOMetadataExtractorSource;
+        }
+    
+    if(m_EngineItf)
+        {
+        res = (*m_EngineItf)->CreateMetadataExtractor(
+                m_EngineItf, &m_MOMetadataExtractor, metadataSource,
+                numInterfaces, iidArray, required);
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_engitf_CreateExtensionObject( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    TInt numInterfaces(0);
+    TInt objectId(0);
+    
+    /* Initialize arrays required[] and iidArray[] */
+    for (TInt i = 0; i < MAX_NUMBER_INTERFACES; i++)
+        {
+        required[i] = XA_BOOLEAN_FALSE;
+        iidArray[i] = XA_IID_NULL;
+        }
+
+    status = aItem.GetNextInt(numInterfaces);
+    if(!status)
+        {
+        for(TInt j = 0; j < numInterfaces; j++)
+            {
+            TInt interface(0);
+            status = aItem.GetNextInt(interface);
+            if(!status)
+                {
+                required[j] = XA_BOOLEAN_TRUE;
+                iidArray[j] = MapInterface(interface);
+                numInterfaces++;
+                }
+            else
+                {
+                break;
+                }
+            }
+        }    
+    
+    
+    status = aItem.GetNextInt(objectId);
+    if(!status)
+        {
+        if(m_EngineItf)
+            {
+            res = (*m_EngineItf)->CreateExtensionObject(
+                    m_EngineItf, &m_MOExtnObject, NULL, objectId,
+                    numInterfaces, iidArray, required);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }    
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_engitf_GetImplementationInfo( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    XAuint32 major;
+    XAuint32 minor;
+    XAuint32 step;
+    const XAchar* implText(NULL); 
+    
+    if(m_EngineItf)
+        {
+        res = (*m_EngineItf)->GetImplementationInfo(
+                m_EngineItf, &major, &minor, &step, implText);
+        status = res;
+        iLog->Log(_L("GetImplementationInfo Major[%d] Minor[%d] Step[%d]"),major,minor,step);
+        }
+    else
+        {
+        status = KErrNotFound;
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_engitf_QuerySupportedProfiles( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    XAint16 profiles;
+    
+    if(m_EngineItf)
+        {
+        res = (*m_EngineItf)->QuerySupportedProfiles(
+                m_EngineItf, &profiles);
+        status = res;
+        iLog->Log(_L("QuerySupportedProfiles Profiles[%d] "),profiles);
+        }
+    else
+        {
+        status = KErrNotFound;
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_engitf_QueryNumSupportedInterfaces( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TUint object(0);
+    XAuint32 numInterfaces(0);
+    XAresult res;
+    XAuint32 objectId;
+    status = aItem.GetNextInt(object);
+    if(!status)
+        {
+        objectId = object;
+        if(m_EngineItf)
+            {
+            res = (*m_EngineItf)->QueryNumSupportedInterfaces(
+                    m_EngineItf, objectId,&numInterfaces);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_engitf_QuerySupportedInterfaces( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TUint object(0);
+    TInt index(0);
+    XAresult res;
+    XAInterfaceID interface;
+    XAuint32 objectId;
+    status = aItem.GetNextInt(object);
+    if(!status)
+        {
+        objectId = object;
+        status = aItem.GetNextInt(index);
+        if(!status)
+            {
+            if(m_EngineItf)
+                {
+                res = (*m_EngineItf)->QuerySupportedInterfaces(
+                        m_EngineItf, objectId, index,&interface);
+                status = res;
+                }
+            else
+                {
+                status = KErrNotFound;
+                }
+            }
+        else
+            {
+            status = KErrGeneral;
+            }
+        }
+    else
+        {
+        status = KErrGeneral;
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_engitf_QueryNumSupportedExtension( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    XAuint32 extensions;
+    
+    if(m_EngineItf)
+        {
+        res = (*m_EngineItf)->QueryNumSupportedExtensions(
+                m_EngineItf, &extensions);
+        status = res;
+        iLog->Log(_L("QueryNumSupportedExtensions Extensions[%d] "),extensions);
+        }
+    else
+        {
+        status = KErrNotFound;
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_engitf_QuerySupportedExtension( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt length(0);
+    TInt index(0);
+    XAresult res;
+    XAint16 namelen;
+    status = aItem.GetNextInt(index);
+    XAchar extensionName[20];
+    if(!status)
+        {
+        status = aItem.GetNextInt(length);
+        if(!status)
+            {
+            if(m_EngineItf)
+                {
+                res = (*m_EngineItf)->QuerySupportedExtension(
+                        m_EngineItf, index, extensionName, &namelen);
+                status = res;
+                }
+            else
+                {
+                status = KErrNotFound;
+                }
+            }
+        else
+            {
+            if(m_EngineItf)
+                {
+                res = (*m_EngineItf)->QuerySupportedExtension(
+                        m_EngineItf,  index, NULL, &namelen);
+                status = res;
+                }
+            else
+                {
+                status = KErrNotFound;
+                }
+            }
+        }
+    else
+        {
+        status = KErrGeneral;
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_engitf_IsExtensionSupported( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAboolean supported(0);
+    TPtrC extensionName;
+    XAresult res;
+    HBufC8* extnName;
+    
+    status = aItem.GetNextString(extensionName);
+    if(!status)
+        {
+        extnName = HBufC8::NewL(extensionName.Length()+1);
+        CleanupStack::PushL(extnName);
+        TPtr8 des = extnName->Des();
+        des.Copy(extensionName);
+        if(m_EngineItf)
+            {
+            res = (*m_EngineItf)->IsExtensionSupported(
+                    m_EngineItf,des.PtrZ(), &supported );
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }
+        CleanupStack::PopAndDestroy(extnName);
+        }
+    
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_engitf_QueryLEDCapabilities( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAuint32 deviceId(0);
+    TInt index(0);
+    XAuint32 ledindex(0);
+    XAresult res;
+    XALEDDescriptor desc;
+
+    status = aItem.GetNextInt(index);    
+    if(!status)
+        {
+        ledindex = index;
+        if(m_EngineItf)
+            {
+            res = (*m_EngineItf)->QueryLEDCapabilities(
+                    m_EngineItf, &ledindex, &deviceId, &desc);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }
+        }
+    else
+        {
+        if(m_EngineItf)
+            {
+            res = (*m_EngineItf)->QueryLEDCapabilities(
+                    m_EngineItf,  &ledindex, NULL, NULL);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_engitf_QueryVibraCapabilities( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAuint32 deviceId(0);
+    TInt index(0);
+    XAuint32 ledindex(0);
+    XAresult res;
+    XAVibraDescriptor desc;
+
+    status = aItem.GetNextInt(index);    
+    if(!status)
+        {
+        ledindex = index;
+        if(m_EngineItf)
+            {
+            res = (*m_EngineItf)->QueryVibraCapabilities(
+                    m_EngineItf, &ledindex, &deviceId, &desc);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }
+        }
+    else
+        {
+        if(m_EngineItf)
+            {
+            res = (*m_EngineItf)->QueryVibraCapabilities(
+                    m_EngineItf,  &ledindex, NULL, NULL);
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }
+        }
+    return status;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/engine/openmaxalenginetests.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,173 @@
+/*
+* Copyright (c) 2009 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include "openmaxaltestmodule.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+TInt COpenMAXALTestModule::al_createEngine( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt numEngineOption(0);
+    TInt numInterfaces(0);
+
+    /* Initialize arrays required[] and iidArray[] */
+    for (TInt i = 0; i < MAX_NUMBER_OPTIONS; i++)
+        {
+        EngineOption[i].feature = 0;
+        EngineOption[i].data = 0;
+        }
+    
+    status = aItem.GetNextInt(numEngineOption);
+    
+    if(!status)
+        {
+        for(TInt i = 0; i < numEngineOption; i++)
+            {
+            TInt feature(0);
+            TInt data(0);
+            status = aItem.GetNextInt(feature);
+            if(!status)
+                {
+                status = aItem.GetNextInt(data);
+                if(!status)
+                    {
+                    EngineOption[i].data = data;
+                    }
+                else
+                    {
+                    numEngineOption = 0;
+                    break;
+                    }
+                EngineOption[i].feature = feature;
+                }
+            else
+                {
+                break;
+                }
+            
+            }
+        }
+    
+    /* Initialize arrays required[] and iidArray[] */
+    for (TInt i = 0; i < MAX_NUMBER_INTERFACES; i++)
+        {
+        required[i] = XA_BOOLEAN_FALSE;
+        iidArray[i] = XA_IID_NULL;
+        }
+
+    if(!status)
+        {
+        status = aItem.GetNextInt(numInterfaces);
+        
+        for(TInt j = 0; j < numInterfaces; j++)
+            {
+            TInt interface(0);
+            status = aItem.GetNextInt(interface);
+            if(!status)
+                {
+                required[j] = XA_BOOLEAN_TRUE;
+                iidArray[j] = MapInterface(interface);
+                numInterfaces++;
+                }
+            else
+                {
+                break;
+                }
+            }
+        }
+    
+    
+    XAresult xa_res = xaCreateEngine(&m_EOEngine, numEngineOption, EngineOption, numInterfaces, iidArray, required);
+    status = MapErr(xa_res);    
+    return status;
+    }
+    
+TInt COpenMAXALTestModule::al_queryNumSupportedEngineInterfaces( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+    XAuint32 numInterfaces(0);
+    XAresult xa_res = xaQueryNumSupportedEngineInterfaces(&numInterfaces);
+    status = MapErr(xa_res);    
+    iLog->Log(_L("COpenMAXALTestModule::al_queryNumSupportedEngineInterfaces NumInterfaces[%d] status[%d]"),numInterfaces,status);
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_querySupportedEngineInterfaces( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt index(0);
+    status = aItem.GetNextInt(index);
+    if(!status)
+        {
+        XAresult xa_res = xaQuerySupportedEngineInterfaces(index, iidArray);
+        status = MapErr(xa_res);    
+        }
+    return status;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/recorder/openmaxalaudioencoderitftests.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,173 @@
+/*
+* Copyright (c) 2009 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include "openmaxaltestmodule.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+TInt COpenMAXALTestModule::al_audioencoderitf_SetEncoderSettings( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    XAAudioEncoderSettings setting;
+    TUint value(0);
+    TInt i(0);
+    
+    while(aItem.GetNextInt(value) == KErrNone)
+        {
+        switch(i)
+            {
+            case 0:
+                setting.encoderId = value;
+                break;
+            case 1:
+                setting.channelsIn = value;
+                break;
+            case 2:
+                setting.channelsOut = value;
+                break;
+            case 3:
+                setting.sampleRate = value;
+                break;
+            case 4:
+                setting.bitRate = value;
+                break;
+            case 5:
+                setting.bitsPerSample = value;
+                break;
+            case 6:
+                setting.rateControl = value;
+                break;
+            case 7:
+                setting.profileSetting = value;
+                break;
+            case 8:
+                setting.levelSetting = value;
+                break;
+            case 9:
+                setting.channelMode = value;
+                break;
+            case 10:
+                setting.streamFormat = value;
+                break;
+            case 11:
+                setting.encodeOptions = value;
+                break;
+            case 12:
+                setting.blockAlignment = value;
+                break;
+            default:
+                break;
+            }
+        i++;
+        }
+
+    if(m_AudEncItf)
+        {
+        res = (*m_AudEncItf)->SetEncoderSettings(
+                m_AudEncItf, &setting);              
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_audioencoderitf_GetEncoderSettings( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    XAAudioEncoderSettings setting;
+    if(m_AudEncItf)
+        {
+        res = (*m_AudEncItf)->GetEncoderSettings(
+                m_AudEncItf, &setting);
+        iLog->Log(_L("GetEncoderSettings"));
+        iLog->Log(_L("GetEncoderSettings value[%d]"),setting.encoderId);
+        iLog->Log(_L("GetEncoderSettings value[%d]"),setting.channelsIn);
+        iLog->Log(_L("GetEncoderSettings value[%d]"),setting.channelsOut);
+        iLog->Log(_L("GetEncoderSettings value[%d]"),setting.sampleRate);
+        iLog->Log(_L("GetEncoderSettings value[%d]"),setting.bitRate);
+        iLog->Log(_L("GetEncoderSettings value[%d]"),setting.bitsPerSample);
+        iLog->Log(_L("GetEncoderSettings value[%d]"),setting.rateControl);
+        iLog->Log(_L("GetEncoderSettings value[%d]"),setting.profileSetting);
+        iLog->Log(_L("GetEncoderSettings value[%d]"),setting.levelSetting);
+        iLog->Log(_L("GetEncoderSettings value[%d]"),setting.channelMode);
+        iLog->Log(_L("GetEncoderSettings value[%d]"),setting.streamFormat);
+        iLog->Log(_L("GetEncoderSettings value[%d]"),setting.encodeOptions);
+        iLog->Log(_L("GetEncoderSettings value[%d]"),setting.blockAlignment);
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }
+    return status;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/recorder/openmaxalmetadatainsertionitfcallbacks.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,84 @@
+/*
+* Copyright (c) 2009 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include "openmaxaltestmodule.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+void MetadataInsertionCallback (
+    XAMetadataInsertionItf caller,
+    void * pContext,
+    XAMetadataInfo * pKey,
+    XAMetadataInfo * pValue,
+    XAint32 nodeID,
+    XAboolean result
+)
+    {
+    
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/recorder/openmaxalmetadatainsertionitftests.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,310 @@
+/*
+* Copyright (c) 2009 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include "openmaxaltestmodule.h"
+#include <string.h>
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+void MetadataInsertionCallback (
+    XAMetadataInsertionItf caller,
+    void * pContext,
+    XAMetadataInfo * pKey,
+    XAMetadataInfo * pValue,
+    XAint32 nodeID,
+    XAboolean result
+);
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+TInt COpenMAXALTestModule::al_metadatainsertionitf_CreateChildNode( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    TInt parentId(0);
+    TInt type(0);
+    TPtrC mimetype;
+    XAint32 childnode;
+    
+    status = aItem.GetNextInt(parentId);
+    RET_ERR_IF_ERR(status);
+    
+    status = aItem.GetNextInt(type);
+    RET_ERR_IF_ERR(status);
+    
+    status = aItem.GetNextString(mimetype);
+    RET_ERR_IF_ERR(status);
+        
+    HBufC8* buf = HBufC8::NewL(mimetype.Length()+1);
+    CleanupStack::PushL(buf);
+    TPtr8 des = buf->Des();
+
+    if(m_MetadataInsertionItf)
+        {
+        res = (*m_MetadataInsertionItf)->CreateChildNode(
+                m_MetadataInsertionItf, parentId , type, const_cast<TUint8*>(des.PtrZ()), &childnode);              
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }
+    CleanupStack::PopAndDestroy(buf);
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_metadatainsertionitf_GetSupportedKeysCount( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    TInt parentId(0);
+    XAboolean freeKeys;
+    XAuint32 keycount(0);
+    XAuint32 encodingcount(0);
+    
+    status = aItem.GetNextInt(parentId);
+    RET_ERR_IF_ERR(status);
+    
+    if(m_MetadataInsertionItf)
+        {
+        res = (*m_MetadataInsertionItf)->GetSupportedKeysCount(
+                m_MetadataInsertionItf, parentId , &freeKeys, &keycount, &encodingcount);              
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_metadatainsertionitf_GetKeySize( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    TInt nodeId(0);
+    TUint index(0);
+    XAuint32 keysize(0);
+    
+    status = aItem.GetNextInt(nodeId);
+    RET_ERR_IF_ERR(status);
+    
+    status = aItem.GetNextInt(index);
+    RET_ERR_IF_ERR(status);
+    
+    if(m_MetadataInsertionItf)
+        {
+        res = (*m_MetadataInsertionItf)->GetKeySize(
+                m_MetadataInsertionItf, nodeId , index, &keysize);              
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_metadatainsertionitf_GetKey( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    TInt nodeId(0);
+    TUint index(0);
+    TUint keysize(0);
+    XAMetadataInfo info = {1,1,"en-us",'a'};
+    
+    status = aItem.GetNextInt(nodeId);
+    RET_ERR_IF_ERR(status);
+    
+    status = aItem.GetNextInt(index);
+    RET_ERR_IF_ERR(status);
+    
+    status = aItem.GetNextInt(keysize);
+    RET_ERR_IF_ERR(status);
+    
+    if(m_MetadataInsertionItf)
+        {
+        res = (*m_MetadataInsertionItf)->GetKey(
+                m_MetadataInsertionItf, nodeId , index, keysize, &info);              
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_metadatainsertionitf_GetFreeKeysEncoding( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    TInt nodeId(0);
+    TUint index(0);
+    XAuint32 encoding(0);
+    
+    status = aItem.GetNextInt(nodeId);
+    RET_ERR_IF_ERR(status);
+    
+    status = aItem.GetNextInt(index);
+    RET_ERR_IF_ERR(status);
+    
+    if(m_MetadataInsertionItf)
+        {
+        res = (*m_MetadataInsertionItf)->GetFreeKeysEncoding(
+                m_MetadataInsertionItf, nodeId , index, &encoding);              
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_metadatainsertionitf_InsertMetadataItem( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    TInt nodeId(0);
+
+    TUint encoding(0);
+    XAchar keylangCountry[16];
+    XAchar valuelangCountry[16];    
+    XAMetadataInfo keyinput = {1,1,"abc",'a'};
+    XAMetadataInfo valueinput = {1,1,"efg",'a'};
+    
+
+    TUint keyinputsize;
+    TPtrC language;
+    TPtr8 keylangC(keylangCountry,16,16);
+    TPtr8 valuelangC(valuelangCountry,16,16);
+    TInt overwrite;
+    //langC.Set(&keyangCountry,16,16);
+    
+    status = aItem.GetNextInt(nodeId);
+    RET_ERR_IF_ERR(status);
+    
+    status = aItem.GetNextInt(keyinputsize);
+    RET_ERR_IF_ERR(status);
+    keyinput.size = keyinputsize;
+    status = aItem.GetNextInt(encoding);
+    RET_ERR_IF_ERR(status);    
+    keyinput.encoding = encoding;
+
+    status = aItem.GetNextString(language);
+    RET_ERR_IF_ERR(status);
+    keylangC.Copy(language);
+    XAchar* destkey = const_cast<XAchar*>(keyinput.langCountry); 
+    strcpy((char*)destkey, (char*)keylangC.Ptr());    
+    //keyinput.langCountry = keylangCountry;
+    
+    status = aItem.GetNextInt(keyinputsize);
+    RET_ERR_IF_ERR(status);
+    valueinput.size = keyinputsize;
+    status = aItem.GetNextInt(encoding);
+    RET_ERR_IF_ERR(status);    
+    valueinput.encoding = encoding;
+
+    status = aItem.GetNextString(language);
+    RET_ERR_IF_ERR(status);
+    valuelangC.Copy(language);
+    XAchar* destvalue = const_cast<XAchar*>(valueinput.langCountry); 
+    strcpy((char*)destvalue, (char*)valuelangC.Ptr());
+    
+    status = aItem.GetNextInt(overwrite);
+    RET_ERR_IF_ERR(status);
+    
+    if(m_MetadataInsertionItf)
+        {
+        res = (*m_MetadataInsertionItf)->InsertMetadataItem(
+                m_MetadataInsertionItf, nodeId , &keyinput, &valueinput, overwrite);              
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_metadatainsertionitf_RegisterCallback( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    if(m_MetadataInsertionItf)
+        {
+        res = (*m_MetadataInsertionItf)->RegisterCallback(
+                m_MetadataInsertionItf, MetadataInsertionCallback , (void*)this);              
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }
+    return status;
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/recorder/openmaxalrecorditfcallbacks.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2009 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include "openmaxaltestmodule.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+void RecordItfCallback (
+    XARecordItf caller,
+    void * pContext,
+    XAuint32 event )
+    {
+    
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/recorder/openmaxalrecorditftests.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,323 @@
+/*
+* Copyright (c) 2009 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include "openmaxaltestmodule.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+void RecordItfCallback (
+    XARecordItf caller,
+    void * pContext,
+    XAuint32 event
+);
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+TInt COpenMAXALTestModule::al_recorditf_SetRecordState( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt state(0);
+    XAresult res;
+    status = aItem.GetNextInt(state);
+    if(!status)
+        {
+        if(m_RecordItf)
+            {
+            res = (*m_RecordItf)->SetRecordState(
+                    m_RecordItf, state);              
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }    
+        }
+
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_recorditf_GetRecordState( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    XAuint32 state;
+    if(m_RecordItf)
+        {
+        res = (*m_RecordItf)->GetRecordState(
+                m_RecordItf, &state);              
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_recorditf_SetDurationLimit( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TUint duration(0);
+    XAresult res;
+    status = aItem.GetNextInt(duration);
+    if(!status)
+        {
+        if(m_RecordItf)
+            {
+            res = (*m_RecordItf)->SetDurationLimit(
+                    m_RecordItf, duration);              
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }    
+        }
+
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_recorditf_GetPosition( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    XAmillisecond pos;
+    if(m_RecordItf)
+        {
+        res = (*m_RecordItf)->GetPosition(
+                m_RecordItf, &pos);              
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_recorditf_RegisterCallback( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+
+    if(m_RecordItf)
+        {
+        res = (*m_RecordItf)->RegisterCallback(
+                m_RecordItf, &RecordItfCallback, (void*)this);              
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_recorditf_SetCallbackEventsMask( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TUint flags(0);
+    XAresult res;
+    status = aItem.GetNextInt(flags);
+    if(!status)
+        {
+        if(m_RecordItf)
+            {
+            res = (*m_RecordItf)->SetCallbackEventsMask(
+                    m_RecordItf, flags);              
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }    
+        }
+
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_recorditf_GetCallbackEventsMask( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    XAuint32 flags;
+    if(m_RecordItf)
+        {
+        res = (*m_RecordItf)->GetCallbackEventsMask(
+                m_RecordItf, &flags);              
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_recorditf_SetMarkerPosition( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TUint pos(0);
+    XAresult res;
+    status = aItem.GetNextInt(pos);
+    if(!status)
+        {
+        if(m_RecordItf)
+            {
+            res = (*m_RecordItf)->SetMarkerPosition(
+                    m_RecordItf, pos);              
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }    
+        }
+
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_recorditf_ClearMarkerPosition( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+
+    if(m_RecordItf)
+        {
+        res = (*m_RecordItf)->ClearMarkerPosition(m_RecordItf);              
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_recorditf_GetMarkerPosition( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    XAmillisecond pos;
+    if(m_RecordItf)
+        {
+        res = (*m_RecordItf)->GetMarkerPosition(
+                m_RecordItf, &pos);              
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_recorditf_SetPositionUpdatePeriod( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TUint updatePeriod(0);
+    XAresult res;
+    status = aItem.GetNextInt(updatePeriod);
+    if(!status)
+        {
+        if(m_RecordItf)
+            {
+            res = (*m_RecordItf)->SetPositionUpdatePeriod(
+                    m_RecordItf, updatePeriod);              
+            status = res;
+            }
+        else
+            {
+            status = KErrNotFound;
+            }    
+        }
+
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_recorditf_GetPositionUpdatePeriod( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+    XAmillisecond pos;
+    if(m_RecordItf)
+        {
+        res = (*m_RecordItf)->GetPositionUpdatePeriod(
+                m_RecordItf, &pos);              
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+
+    return status;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/system_tone_service_api/group/bld.inf	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,27 @@
+/*
+ * 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:
+ * This file provides the information for exporting the System Tone
+ * Service API.
+ */
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+../inc/systemtoneservice.h    MW_LAYER_PLATFORM_EXPORT_PATH(systemtoneservice.h)
+
+PRJ_MMPFILES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/system_tone_service_api/inc/systemtoneservice.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,170 @@
+/*
+ * 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:
+ * This file defines the API for System Tone Service which is
+ * implemented in the systemtoneservice.dll.  This API uses
+ * the private implementation pattern to help improve the BC
+ * of the API by decoupling the implementation from the
+ * interface. 
+ *
+ */
+
+#ifndef __SYSTEMTONESERVICE_H__
+#define __SYSTEMTONESERVICE_H__
+
+// System includes
+#include <e32base.h>
+
+// Forward declarations
+NONSHARABLE_CLASS( CStsImplementation);
+
+// Class declaration
+/**
+ *  System Tone Service API definition.
+ *  This is the native C++ API for applications and middleware components
+ *  to play standard system tones.
+ *
+ *  @code
+ *   CSystemToneService* sts = CSystemToneService::Create();
+ *   TInt calendarAlarmContext;
+ *   ...
+ *   if (sts)
+ *   {
+ *       ...
+ *       sts->PlayTone(CSystemToneService::EWarningTone);
+ *       ...
+ *       sts->Playtone(CSystemToneService::ECalendarAlarm, &calendarAlarmContext);
+ *       ...
+ *   }
+ *   ...
+ *   sts->StopTone(calendarAlarmContext);
+ *   ...
+ *   CSystemToneService::Delete(sts);
+ *  @endcode
+ *
+ */
+NONSHARABLE_CLASS(CSystemToneService) : public CBase
+    {
+public:
+    //** Constructor - returns NULL if construction fails */
+    IMPORT_C static CSystemToneService* Create();
+
+    //** Destructor */
+    IMPORT_C static void Delete(CSystemToneService* aSystemToneService);
+
+public:
+    // Data types
+    /** The type of System Tones that are supported by this API. */
+    enum TToneType
+        {
+        // Calendar Tones
+        ECalendarAlarm = 0x0001,
+        EClockAlarm = 0x0002,
+        EToDoAlarm = 0x0003,
+
+        // Capture Tones
+        EBurstMode = 0x1001,
+        ECapture = 0x1002,
+        ECallRecording = 0x1003,
+        ERecordingStart = 0x1004,
+        ERecordingStop = 0x1005,
+        ESelfTimer = 0x1006,
+
+        // General Tones
+        EConfirmationBeep = 0x2001,
+        EDefaultBeep = 0x2002,
+        EErrorBeep = 0x2003,
+        EInformationBeep = 0x2004,
+        EWarningBeep = 0x2005,
+        EIntegratedHandsFreeActivated = 0x2006,
+
+        // Key Tones
+        ETouchScreen = 0x3001,
+
+        // Location Tones
+        ELocationRequest = 0x4001,
+
+        // Messaging Tones
+        EChatAlert = 0x5001,
+        EEmailAlert = 0x5002,
+        EMmsAlert = 0x5003,
+        ESmsAlert = 0x5004,
+        EDeliveryReport = 0x5005,
+        EMessageSendFailure = 0x5006,
+
+        // Power Tones
+        EBatteryLow = 0x6001,
+        EBatteryRecharged = 0x6002,
+        EPowerOn = 0x6003,
+        EPowerOff = 0x6004,
+        EWakeUp = 0x6005,
+        EWrongCharger = 0x6006,
+
+        // Telephony Tones
+        EIncomingCall = 0x7001,
+        EIncomingCallLine2 = 0x7002,
+        EIncomingDataCall = 0x7003,
+        EAutomaticRedialComplete = 0x7004,
+
+        // Voice Recognition Tones
+        EVoiceStart = 0x8001,
+        EVoiceError = 0x8002,
+        EVoiceAbort = 0x8003
+        };
+
+    /**
+     * Plays the specified tone.  If the tone type is not recognized a default tone will
+     * be played.  This method is for fixed duration tones that are expected 
+     * to play to completion and do not need to be stopped by the client.
+     *
+     * @param aTone An input parameter that indicates the type of tone to play.
+     * @return description
+     */
+    IMPORT_C void PlayTone(TToneType aTone);
+
+    /**
+     * Plays the specified tone.  If the tone type is not recognized a default tone will
+     * be played.  This method is used for tones that may not be fixed duration such as
+     * infinitely looping tones, or for tones that can be manually stopped by the client.
+     *
+     * @param aTone An input parameter that indicates the type of tone to play.
+     * @param aPlayToneContext An output parameter that provides back a unique context to
+     *  the client for this tone play that can be used for stopping the playback.
+     * @return description
+     */
+    IMPORT_C void PlayTone(TToneType aTone, unsigned int& aPlayToneContext);
+
+    /**
+     * Stops the specified tone playback.  If the playback has already completed or the
+     * context is not recognized, this method does nothing.
+     *
+     * @param aPlayToneContext The context to the Tone Playing that is to be stopped.
+     * @return description
+     */
+    IMPORT_C void StopTone(unsigned int aPlayToneContext);
+
+protected:
+    // Protected constructors and destructors
+    CSystemToneService(CStsImplementation& aImplementation);
+    ~CSystemToneService();
+
+protected:
+    // Protected data
+    /**
+     * A reference to the implementation class for this API.
+     */
+    CStsImplementation& iImplementation;
+    };
+
+#endif  // __SYSTEMTONESERVICE_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/system_tone_service_api/tsrc/bmarm/systemtoneservicestifu.def	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	LibEntryL__FR13CTestModuleIf @ 1 NONAME R3UNUSED ; LibEntryL(CTestModuleIf &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/system_tone_service_api/tsrc/bwins/systemtoneservicestifu.def	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * __cdecl LibEntryL(class CTestModuleIf &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/system_tone_service_api/tsrc/conf/systemtoneservicestif.cfg	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,133 @@
+[Define]
+CalendarAlarm 								1
+ClockAlarm 										2
+ToDoAlarm 										3
+BurstMode 			  						4097
+Capture  											4098
+CallRecording  								4099
+RecordingStart  							4100
+RecordingStop  								4101
+SelfTimer  										4102
+ConfirmationBeep 							8193
+DefaultBeep   								8194
+ErrorBeep  										8195
+InformationBeep  							8196
+WarningBeep  									8197
+IntegratedHandsFreeActivated 	8198
+TouchScreen  									12289
+LocationRequest  							16395
+ChatAlert  										20481
+EmailAlert  									20482
+MmsAlert  										20483
+SmsAlert  										20484
+DeliveryReport  							20485
+MessageSendFailure  					20486
+BatteryLow  									24577
+BatteryRecharged 							24578
+PowerOn  											24579
+PowerOff  										24580
+WakeUp  											24581
+WrongCharger  								24582
+IncomingCall  								28673
+IncomingCallLine2  						28674
+IncomingDataCall  						28675
+AutomaticRedialComplete  			28676
+VoiceStart  									32769
+VoiceError  									32770
+VoiceAbort  									32771
+[Enddefine]
+
+[Test]
+title NFT
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+STSSTIF PlayToneWithContext ClockAlarm
+pause 10000
+STSSTIF StopTone True
+STSSTIF Delete
+delete STSSTIF
+[Endtest]
+
+
+
+[Test]
+title 01 Create systemtoneservicestif
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+delete STSSTIF
+[Endtest]
+
+
+
+[Test]
+title 02 Play ClockAlarm Ringtone
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+STSSTIF PlayTone  ClockAlarm
+pause 5000
+STSSTIF Delete
+delete STSSTIF
+[Endtest]
+
+
+[Test]
+title 03 Play ClockAlarmContext Ringtone
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+STSSTIF PlayToneWithContext ClockAlarm
+pause 10000
+STSSTIF Delete
+delete STSSTIF
+[Endtest]
+
+[Test]
+title 04 Stop ClockAlarm with recognized Context
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+STSSTIF PlayToneWithContext ClockAlarm
+pause 10000
+STSSTIF StopTone True
+pause 5000
+STSSTIF Delete
+delete STSSTIF
+[Endtest]
+
+
+[Test]
+title 05 Stop ClockAlarm with non-recognized Context
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+STSSTIF PlayToneWithContext ClockAlarm
+pause 10000
+STSSTIF StopTone False
+pause 5000
+STSSTIF Delete
+delete STSSTIF
+[Endtest]
+
+
+[Test]
+title 06 Play two tones
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+STSSTIF PlayToneWithContext ClockAlarm
+pause 10000
+STSSTIF PlayTone CalendarAlarm
+pause 10000
+STSSTIF StopTone True
+STSSTIF Delete
+delete STSSTIF
+[Endtest]
+
+
+[Test]
+title 07 Stop tone after tone complete
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+STSSTIF PlayToneWithContext ClockAlarm
+pause 10000
+STSSTIF StopTone True
+STSSTIF StopTone True
+STSSTIF Delete
+delete STSSTIF
+[Endtest]
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/system_tone_service_api/tsrc/conf/systemtoneservicestif_calendaralarm.cfg	Mon May 03 12:59:52 2010 +0300
@@ -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.
+// Description: Example test case for calendar alarm
+//
+//
+
+
+
+[Test]
+title 1.1 Test CalendarAlarm Ringtone
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+STSSTIF PlayTone  CalendarAlarm
+pause 5000
+STSSTIF Delete
+delete STSSTIF
+[Endtest]
+
+
+ [Test]
+title 1.2 Test CalendarAlarmContext Ringtone
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+STSSTIF PlayToneWithContext  CalendarAlarm
+pause 2000
+STSSTIF StopTone True
+STSSTIF Delete
+delete STSSTIF
+[Endtest]
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/system_tone_service_api/tsrc/conf/systemtoneservicestif_common.cfg	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,56 @@
+//
+// 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.
+// Description: Mapping of TToneType Enum for creating test cases
+//
+//
+
+[Define]
+CalendarAlarm 								1
+ClockAlarm 							 	2
+ToDoAlarm 								3
+BurstMode 			  					4097
+Capture  								4098
+CallRecording  								4099
+RecordingStart  							4100
+RecordingStop  								4101
+SelfTimer  								4102
+ConfirmationBeep 							8193
+DefaultBeep   								8194
+ErrorBeep  								8195
+InformationBeep  							8196
+WarningBeep  								8197
+IntegratedHandsFreeActivated 						8198
+TouchScreen  								12289
+LocationRequest  							16395
+ChatAlert  								20481
+EmailAlert  								20482
+MmsAlert  								20483
+SmsAlert  								20484
+DeliveryReport  							20485
+MessageSendFailure  							20486
+BatteryLow  								24577
+BatteryRecharged 							24578
+PowerOn  								24579
+PowerOff  								24580
+WakeUp  								24581
+WrongCharger  								24582
+IncomingCall  								28673
+IncomingCallLine2  							28674
+IncomingDataCall  							28675
+AutomaticRedialComplete  						28676
+VoiceStart  								32769
+VoiceError  								32770
+VoiceAbort  								32771
+[Enddefine]
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/system_tone_service_api/tsrc/eabi/systemtoneservicestifu.def	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	_Z9LibEntryLR13CTestModuleIf @ 1 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/system_tone_service_api/tsrc/group/bld.inf	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,33 @@
+/*
+* 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
+DEFAULT
+
+PRJ_TESTEXPORTS
+
+
+PRJ_EXPORTS
+
+
+PRJ_TESTMMPFILES
+systemtoneservicestif.mmp
+
+PRJ_MMPFILES
+
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/system_tone_service_api/tsrc/group/systemtoneservicestif.mmp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,61 @@
+/*TYPE TESTCLASS*/
+/*
+* 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: MMP file for STIF Test Framework's TestScripter 
+* testclass test module.
+*
+*/
+
+#include <platform_paths.hrh>
+
+SMPSAFE
+
+TARGET          systemtoneservicestif.dll
+TARGETTYPE      dll
+UID             0x1000008D 0x101FB3E3
+
+CAPABILITY      ALL -TCB
+VENDORID        VID_DEFAULT
+
+
+//EPOCALLOWDLLDATA
+#if !defined(__WINSCW__) && !defined(__WINS__)
+EpocAllowDllData
+#endif
+
+
+//TARGETPATH     
+DEFFILE         systemtoneservicestif.def
+
+MW_LAYER_SYSTEMINCLUDE
+USERINCLUDE     ../inc 
+
+OS_LAYER_SYSTEMINCLUDE
+
+SOURCEPATH      ../src
+
+SOURCE          systemtoneservicestif.cpp
+SOURCE          systemtoneservicestifBlocks.cpp
+
+
+LIBRARY         euser.lib
+LIBRARY         stiftestinterface.lib
+LIBRARY         stiftestengine.lib
+LIBRARY         systemtoneservice.lib
+
+LANG            SC
+
+
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/system_tone_service_api/tsrc/group/systemtoneservicestif.pkg	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,60 @@
+;
+; 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:
+;
+; 	Installation file for STIF
+;
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"STIF"},(0x00000000),1,1,0,TYPE=SA
+
+; Series60 product id for S60 3.0
+[0x101F7961], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Logo
+; None
+
+; Package signature - Optional
+; None
+
+; Start of Package body
+
+; Condition blocks
+; None
+
+; Options list
+; None
+
+; Install files
+"\epoc32\release\armv5\udeb\systemtoneservicestif.dll"   -   "!:\Sys\Bin\systemtoneservicestif.dll"
+  
+; Embedded SIS 
+; None
+
+; End of Package body
+
+; PKG dependencies
+; None
+
+; PKG capabilities
+; None
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/system_tone_service_api/tsrc/group/systemtoneservicestif_DoxyFile.txt	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,236 @@
+#
+# 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.
+#
+#
+
+
+# Doxyfile 1.4.1
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME           = systemtoneservicestif
+PROJECT_NUMBER         = 
+OUTPUT_DIRECTORY       = Z:\\systemtoneservicestif\
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+USE_WINDOWS_ENCODING   = YES
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = 
+ALWAYS_DETAILED_SEC    = NO
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = 
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = NO
+JAVADOC_AUTOBRIEF      = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = NO
+INHERIT_DOCS           = YES
+DISTRIBUTE_GROUP_DOC   = NO
+TAB_SIZE               = 8
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = YES
+OPTIMIZE_OUTPUT_JAVA   = NO
+SUBGROUPING            = YES
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = NO
+EXTRACT_STATIC         = NO
+EXTRACT_LOCAL_CLASSES  = NO
+EXTRACT_LOCAL_METHODS  = NO
+HIDE_UNDOC_MEMBERS     = NO
+HIDE_UNDOC_CLASSES     = NO
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = YES
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+SORT_BRIEF_DOCS        = NO
+SORT_BY_SCOPE_NAME     = NO
+GENERATE_TODOLIST      = NO
+GENERATE_TESTLIST      = NO
+GENERATE_BUGLIST       = NO
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = YES
+SHOW_DIRECTORIES       = YES
+FILE_VERSION_FILTER    = 
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = NO
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_NO_PARAMDOC       = NO
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           = 
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT                  = Z:\\systemtoneservicestif\
+FILE_PATTERNS          = *.h \
+                         *.rh \
+                         *.hrh
+RECURSIVE              = YES
+EXCLUDE                = 
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = 
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = 
+INPUT_FILTER           = 
+FILTER_PATTERNS        = 
+FILTER_SOURCE_FILES    = NO
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = NO
+INLINE_SOURCES         = NO
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION    = YES
+VERBATIM_HEADERS       = YES
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX     = NO
+COLS_IN_ALPHA_INDEX    = 5
+IGNORE_PREFIX          = 
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML          = NO
+HTML_OUTPUT            = html
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            = 
+HTML_FOOTER            = 
+HTML_STYLESHEET        = 
+HTML_ALIGN_MEMBERS     = YES
+GENERATE_HTMLHELP      = YES
+CHM_FILE               = 
+HHC_LOCATION           = 
+GENERATE_CHI           = NO
+BINARY_TOC             = YES
+TOC_EXPAND             = YES
+DISABLE_INDEX          = YES
+ENUM_VALUES_PER_LINE   = 4
+GENERATE_TREEVIEW      = YES
+TREEVIEW_WIDTH         = 250
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX         = NO
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = a4wide
+EXTRA_PACKAGES         = 
+LATEX_HEADER           = 
+PDF_HYPERLINKS         = NO
+USE_PDFLATEX           = NO
+LATEX_BATCHMODE        = NO
+LATEX_HIDE_INDICES     = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF           = YES
+RTF_OUTPUT             = Doc
+COMPACT_RTF            = YES
+RTF_HYPERLINKS         = YES
+RTF_STYLESHEET_FILE    = 
+RTF_EXTENSIONS_FILE    = 
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN           = NO
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML           = NO
+XML_OUTPUT             = xml
+XML_SCHEMA             = 
+XML_DTD                = 
+XML_PROGRAMLISTING     = YES
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF   = NO
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD       = NO
+PERLMOD_LATEX          = NO
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX = 
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = YES
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = YES
+INCLUDE_PATH           = 
+INCLUDE_FILE_PATTERNS  = 
+PREDEFINED             = NONSHARABLE_CLASS
+EXPAND_AS_DEFINED      = 
+SKIP_FUNCTION_MACROS   = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+TAGFILES               = 
+GENERATE_TAGFILE       = 
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+PERL_PATH              = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = YES
+HIDE_UNDOC_RELATIONS   = YES
+HAVE_DOT               = NO
+CLASS_GRAPH            = YES
+COLLABORATION_GRAPH    = YES
+GROUP_GRAPHS           = YES
+UML_LOOK               = NO
+TEMPLATE_RELATIONS     = YES
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = YES
+CALL_GRAPH             = NO
+GRAPHICAL_HIERARCHY    = YES
+DIRECTORY_GRAPH        = YES
+DOT_IMAGE_FORMAT       = png
+DOT_PATH               = 
+DOTFILE_DIRS           = 
+MAX_DOT_GRAPH_WIDTH    = 1024
+MAX_DOT_GRAPH_HEIGHT   = 1024
+MAX_DOT_GRAPH_DEPTH    = 0
+DOT_TRANSPARENT        = NO
+DOT_MULTI_TARGETS      = NO
+GENERATE_LEGEND        = YES
+DOT_CLEANUP            = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+SEARCHENGINE           = NO
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/system_tone_service_api/tsrc/inc/systemtoneservicestif.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,150 @@
+/*
+* 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: STIF testclass declaration
+*
+*/
+
+#ifndef SYSTEMTONESERVICESTIF_H
+#define SYSTEMTONESERVICESTIF_H
+
+//  INCLUDES
+#include <StifLogger.h>
+#include <TestScripterInternal.h>
+#include <StifTestModule.h>
+#include <TestclassAssert.h>
+
+
+// CONSTANTS
+
+
+// MACROS
+
+#define TEST_CLASS_VERSION_MAJOR 0
+#define TEST_CLASS_VERSION_MINOR 0
+#define TEST_CLASS_VERSION_BUILD 0
+
+// Logging path
+_LIT( KsystemtoneservicestifLogPath, "f:\\testing\\Log\\" ); 
+// Log file
+_LIT( KsystemtoneservicestifLogFile, "systemtoneservicestif.txt" ); 
+_LIT( KsystemtoneservicestifLogFileWithTitle, "systemtoneservicestif_[%S].txt" );
+
+
+
+
+// FORWARD DECLARATIONS
+
+class CSystemToneServiceStif;
+class CSystemToneService;
+
+enum TPlayState
+    {
+    EStopped,
+    EPlaying
+    };
+
+_LIT( KTrue, "True");
+_LIT( KFalse, "False");
+
+// CLASS DECLARATION
+
+/**
+*  CSystemToneServiceStif test class for STIF Test Framework TestScripter.
+
+*/
+NONSHARABLE_CLASS(CSystemToneServiceStif) : public CScriptBase
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CSystemToneServiceStif* NewL( CTestModuleIf& aTestModuleIf );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CSystemToneServiceStif();
+
+
+    public: // Functions from base classes
+
+        /**
+        * From CScriptBase Runs a script line.
+        * @param aItem Script line containing method name and parameters
+        * @return Symbian OS error code
+        */
+        virtual TInt RunMethodL( CStifItemParser& aItem );
+
+
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CSystemToneServiceStif( CTestModuleIf& aTestModuleIf );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+        
+        /**
+        * Frees all resources allocated from test methods.
+        */
+        void Delete();
+
+        /**
+        * Test methods are listed below. 
+        */
+
+        /**
+        * Example test method.
+        * @return Symbian OS error code.
+        */
+        virtual TInt ExampleL( CStifItemParser& aItem );
+        
+        /**
+         * Method used to log version of test class
+         */
+        void SendTestClassVersion();
+
+        //ADD NEW METHOD 
+        
+        virtual TInt  CreateSystemToneService(  );
+      
+        virtual TInt  DeleteSystemToneService(  );
+        
+        virtual TInt  PlaySystemToneService( CStifItemParser& aItem);
+        
+        virtual TInt  PlaySystemToneServiceWithContext( CStifItemParser& aItem );
+        
+        virtual TInt  StopSystemToneService( CStifItemParser& aItem  );
+
+
+
+    private:    // Data
+        TPlayState            iPlayState;
+        CSystemToneService*   iSts;
+        TUint                 iCurrentContext;
+
+
+
+    };
+
+#endif      // SYSTEMTONESERVICESTIF_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/system_tone_service_api/tsrc/init/testframework.ini	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,201 @@
+#
+# This is STIFTestFramework initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set following test engine settings:
+#	- Set Test Reporting mode. TestReportMode's possible values are:
+#		+ 'Summary': Summary of the tested test cases.
+#		+ 'Environment': Hardware and software info.
+#		+ 'TestCases': Test case report.
+#		+ 'FullReport': Set of all above ones.
+#		+ Example 'TestReportMode= Summary TestCases'
+#
+# 	- CreateTestReport setting controls report creation mode
+#		+ YES, Test report will created.
+#		+ NO, No Test report.
+#
+# 	- File path indicates the base path of the test report.
+# 	- File name indicates the name of the test report.
+#
+# 	- File format indicates the type of the test report.
+#		+ TXT, Test report file will be txt type, for example 'TestReport.txt'.
+#		+ HTML, Test report will be html type, for example 'TestReport.html'.
+#
+# 	- File output indicates output source of the test report.
+#		+ FILE, Test report logging to file.
+#		+ RDEBUG, Test report logging to using rdebug.
+#
+# 	- File Creation Mode indicates test report overwriting if file exist.
+#		+ OVERWRITE, Overwrites if the Test report file exist.
+#		+ APPEND, Continue logging after the old Test report information if
+#                 report exist.
+# 	- Sets a device reset module's dll name(Reboot).
+#		+ If Nokia specific reset module is not available or it is not correct one
+#		  StifHWResetStub module may use as a template for user specific reset
+#		  module.
+# 	- Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation
+#		DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02
+#
+
+[Engine_Defaults]
+
+TestReportMode= FullReport		# Possible values are: 'Empty', 'Summary', 'Environment',
+                                                               'TestCases' or 'FullReport'
+
+CreateTestReport= YES			# Possible values: YES or NO
+
+TestReportFilePath= c:\LOGS\TestFramework\
+TestReportFileName= TestReport_systemtoneservicestif
+
+TestReportFormat= TXT			# Possible values: TXT or HTML
+TestReportOutput= FILE			# Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE	# Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+DisableMeasurement= stifmeasurementdisablenone	# Possible values are:
+						# 'stifmeasurementdisablenone', 'stifmeasurementdisableall'
+					  	# 'stifmeasurementplugin01', 'stifmeasurementplugin02',
+					  	# 'stifmeasurementplugin03', 'stifmeasurementplugin04',
+					  	# 'stifmeasurementplugin05' or 'stifbappeaprofiler'
+
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+# Modules are added between module tags
+# tags. Module name is specified after ModuleName= tag, like
+# ModuleName= XXXXXXXXX
+# Modules might have initialisation file, specified as
+# IniFile= c:\testframework\YYYYYY
+# Modules might have several configuration files, like
+# TestCaseFile= c:\testframework\NormalCases.txt
+# TestCaseFile= c:\testframework\SmokeCases.txt
+# TestCaseFile= c:\testframework\ManualCases.txt
+
+# (TestCaseFile is synonym for old term ConfigFile)
+
+# Following case specifies demo module settings. Demo module
+# does not read any settings from file, so tags 
+# IniFile and TestCaseFile are not used.
+# In the simplest case it is enough to specify only the
+# name of the test module when adding new test module
+
+#[New_Module]
+#ModuleName= demomodule
+#[End_Module]
+
+[New_Module]
+ModuleName= TestScripter
+IniFile = c:\testframework\systemtoneservicestif_common.cfg
+TestCaseFile= c:\testframework\systemtoneservicestif_calendaralarm.cfg
+[End_Module]
+
+
+
+# Load testmoduleXXX, optionally with initialization file and/or test case files
+#[New_Module]
+#ModuleName= testmodulexxx
+
+#TestModuleXXX used initialization file
+#IniFile= c:\testframework\init.txt
+
+#TestModuleXXX used configuration file(s)
+#TestCaseFile= c:\testframework\testcases1.cfg
+#TestCaseFile= c:\testframework\testcases2.cfg
+#TestCaseFile= c:\testframework\manualtestcases.cfg
+
+#[End_Module]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set STIFTestFramework logging overwrite parameters for Logger.
+# 	Hardware and emulator environment logging path and styles can
+# 	be configured from here to overwrite the Logger's implemented values.
+#	
+#	Settings description:
+#	- Indicates option for creation log directory/directories. If log directory/directories
+#         is/are not created by user they will make by software.
+#		+ YES, Create log directory/directories if not allready exist.
+#		+ NO, Log directory/directories not created. Only created one is used.
+#
+#	- Overwrite emulator path setting.
+#		+ Example: If 'EmulatorBasePath= C:\LOGS\TestFramework\' and in code is defined 
+#		           Logger's path 'D:\\LOGS\\Module\\' with those definition the path
+#		           will be 'C:\LOGS\TestFramework\LOGS\Module\'
+#
+#	- Overwrite emulator's logging format.
+#		+ TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
+#		+ HTML, Log file(s) will be html type(s), for example 'Module.html'.
+#
+#	- Overwrited emulator logging output source.
+#		+ FILE, Logging to file(s).
+#		+ RDEBUG, Logging to using rdebug(s).
+#
+#	- Overwrite hardware path setting (Same description as above in emulator path).
+#	- Overwrite hardware's logging format(Same description as above in emulator format).
+#	- Overwrite hardware's logging output source(Same description as above in emulator output).
+#
+#	- File Creation Mode indicates file overwriting if file exist.
+#		+ OVERWRITE, Overwrites if file(s) exist.
+#		+ APPEND, Continue logging after the old logging information if file(s) exist.
+#
+#	- Will thread id include to the log filename.
+#		+ YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
+#		+ NO, No thread id to log file(s), Example filename 'Module.txt'.
+#
+#	- Will time stamps include the to log file.
+#		+ YES, Time stamp added to each line in log file(s). Time stamp is 
+#                 for example'12.Nov.2003 115958    LOGGING INFO'
+#		+ NO, No time stamp(s).
+#
+#	- Will line breaks include to the log file.
+#		+ YES, Each logging event includes line break and next log event is in own line.
+#		+ NO, No line break(s).
+#
+#	- Will event ranking include to the log file.
+#		+ YES, Event ranking number added to each line in log file(s). Ranking number
+#                 depends on environment's tics, for example(includes time stamp also)
+#                 '012   12.Nov.2003 115958    LOGGING INFO'
+#		+ NO, No event ranking.
+#
+#	- Will write log file in unicode format.
+#		+ YES, Log file will be written in unicode format
+#		+ NO, Log will be written as normal, not unicode, file.
+#
+
+[Logger_Defaults]
+
+#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#'
+#NOTE: TestEngine and TestServer logging settings cannot change here
+
+CreateLogDirectories= YES		# Possible values: YES or NO
+
+#EmulatorBasePath= C:\LOGS\TestFramework\
+#EmulatorFormat= HTML			# Possible values: TXT or HTML
+#EmulatorOutput= FILE			# Possible values: FILE or RDEBUG
+
+#HardwareBasePath= D:\LOGS\TestFramework\
+#HardwareFormat= HTML			# Possible values: TXT or HTML
+#HardwareOutput= FILE			# Possible values: FILE or RDEBUG
+
+FileCreationMode= OVERWRITE		# Possible values: OVERWRITE or APPEND
+
+#ThreadIdToLogFile= YES			# Possible values: YES or NO
+#WithTimeStamp= YES			# Possible values: YES or NO
+#WithLineBreak= YES			# Possible values: YES or NO
+#WithEventRanking= YES			# Possible values: YES or NO
+
+#FileUnicode= YES			# Possible values: YES or NO
+
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/system_tone_service_api/tsrc/src/systemtoneservicestif.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,152 @@
+/*
+* 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: This file contains testclass implementation.
+*
+*/
+
+// INCLUDE FILES
+#include <StifTestInterface.h>
+#include <SettingServerClient.h>
+#include "systemtoneservicestif.h"
+
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CSystemToneServiceStif::CSystemToneServiceStif
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CSystemToneServiceStif::CSystemToneServiceStif( 
+    CTestModuleIf& aTestModuleIf ):
+        CScriptBase( aTestModuleIf )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CSystemToneServiceStif::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CSystemToneServiceStif::ConstructL()
+    {
+    //Read logger settings to check whether test case name is to be
+    //appended to log file name.
+    RSettingServer settingServer;
+    TInt ret = settingServer.Connect();
+    if(ret != KErrNone)
+        {
+        User::Leave(ret);
+        }
+    // Struct to StifLogger settigs.
+    TLoggerSettings loggerSettings; 
+    // Parse StifLogger defaults from STIF initialization file.
+    ret = settingServer.GetLoggerSettings(loggerSettings);
+    if(ret != KErrNone)
+        {
+        User::Leave(ret);
+        } 
+    // Close Setting server session
+    settingServer.Close();
+
+    TFileName logFileName;
+    
+    if(loggerSettings.iAddTestCaseTitle)
+        {
+        TName title;
+        TestModuleIf().GetTestCaseTitleL(title);
+        logFileName.Format(KsystemtoneservicestifLogFileWithTitle, &title);
+        }
+    else
+        {
+        logFileName.Copy(KsystemtoneservicestifLogFile);
+        }
+
+    iLog = CStifLogger::NewL( KsystemtoneservicestifLogPath, 
+                          logFileName,
+                          CStifLogger::ETxt,
+                          CStifLogger::EFile,
+                          EFalse );
+    
+    SendTestClassVersion();
+    }
+
+// -----------------------------------------------------------------------------
+// CSystemToneServiceStif::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CSystemToneServiceStif* CSystemToneServiceStif::NewL( 
+    CTestModuleIf& aTestModuleIf )
+    {
+    CSystemToneServiceStif* self = new (ELeave) CSystemToneServiceStif( aTestModuleIf );
+
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+
+    return self;
+
+    }
+
+// Destructor
+CSystemToneServiceStif::~CSystemToneServiceStif()
+    { 
+
+    // Delete resources allocated from test methods
+    Delete();
+
+    // Delete logger
+    delete iLog; 
+
+    }
+
+//-----------------------------------------------------------------------------
+// CSystemToneServiceStif::SendTestClassVersion
+// Method used to send version of test class
+//-----------------------------------------------------------------------------
+//
+void CSystemToneServiceStif::SendTestClassVersion()
+	{
+	TVersion moduleVersion;
+	moduleVersion.iMajor = TEST_CLASS_VERSION_MAJOR;
+	moduleVersion.iMinor = TEST_CLASS_VERSION_MINOR;
+	moduleVersion.iBuild = TEST_CLASS_VERSION_BUILD;
+	
+	TFileName moduleName;
+	moduleName = _L("systemtoneservicestif.dll");
+
+	TBool newVersionOfMethod = ETrue;
+	TestModuleIf().SendTestModuleVersion(moduleVersion, moduleName, newVersionOfMethod);
+	}
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+// -----------------------------------------------------------------------------
+// LibEntryL is a polymorphic Dll entry point.
+// Returns: CScriptBase: New CScriptBase derived object
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CScriptBase* LibEntryL( 
+    CTestModuleIf& aTestModuleIf ) // Backpointer to STIF Test Framework
+    {
+
+    return ( CScriptBase* ) CSystemToneServiceStif::NewL( aTestModuleIf );
+
+    }
+
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/system_tone_service_api/tsrc/src/systemtoneservicestifblocks.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,209 @@
+/*
+* 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include <systemtoneservice.h>
+#include "systemtoneservicestif.h"
+
+
+
+TInt CSystemToneServiceStif::RunMethodL(CStifItemParser& aItem )
+    {
+
+    static TStifFunctionInfo const KFunctions[] =
+        {
+        // Copy this line for every implemented function.
+        // First string is the function name used in TestScripter script file.
+        // Second is the actual implementation member function.
+        ENTRY( "Create", CSystemToneServiceStif::CreateSystemToneService ),
+        ENTRY( "Delete", CSystemToneServiceStif::DeleteSystemToneService ),
+        ENTRY( "PlayTone", CSystemToneServiceStif::PlaySystemToneService ),
+        ENTRY( "PlayToneWithContext", CSystemToneServiceStif::PlaySystemToneServiceWithContext ),
+        ENTRY( "StopTone", CSystemToneServiceStif::StopSystemToneService ),
+        
+
+
+        };
+
+    const TInt count = sizeof( KFunctions ) /
+                        sizeof( TStifFunctionInfo );
+
+    return RunInternalL( KFunctions, count, aItem );
+
+    }
+
+
+
+
+
+void CSystemToneServiceStif::Delete()
+    {
+
+    }
+
+
+
+// -----------------------------------------------------------------------------
+// CSystemToneServiceStif::ExampleL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CSystemToneServiceStif::ExampleL( CStifItemParser& aItem )
+    {
+
+    // Print to UI
+    _LIT( Ksystemtoneservicestif, "systemtoneservicestif" );
+    _LIT( KExample, "In Example" );
+    TestModuleIf().Printf( 0, Ksystemtoneservicestif, KExample );
+    // Print to log file
+    iLog->Log( KExample );
+
+    TInt i = 0;
+    TPtrC string;
+    _LIT( KParam, "Param[%i]: %S" );
+    while ( aItem.GetNextString ( string ) == KErrNone )
+        {
+        TestModuleIf().Printf( i, Ksystemtoneservicestif, 
+                                KParam, i, &string );
+        i++;
+        }
+
+    return KErrNone;
+
+    }
+
+TInt CSystemToneServiceStif::CreateSystemToneService(  )
+    {
+    // Print to UI
+        _LIT( Ksystemtoneservicestif, "systemtoneservicestif" );
+        _LIT( KPrint, "In CreateSystemToneService" );
+        TestModuleIf().Printf( 0, Ksystemtoneservicestif, KPrint );
+        // Print to log file
+        iLog->Log( KPrint );
+        
+        iSts = CSystemToneService::Create();    
+        
+        iLog->Log(_L("CreateSystemToneService complete"));
+        return KErrNone;
+    }
+
+TInt CSystemToneServiceStif::DeleteSystemToneService( )
+    {
+    // Print to UI
+        _LIT( Ksystemtoneservicestif, "systemtoneservicestif" );
+        _LIT( KPrint, "In DeleteSystemToneService" );
+        TestModuleIf().Printf( 0, Ksystemtoneservicestif, KPrint );
+        // Print to log file
+        iLog->Log( KPrint );
+        
+        CSystemToneService::Delete(iSts);  
+        return KErrNone;
+    }
+    
+    
+TInt CSystemToneServiceStif::PlaySystemToneService( CStifItemParser& aItem )
+    {
+        // Print to UI
+            _LIT( Ksystemtoneservicestif, "systemtoneservicestif" );
+            _LIT( KPrint, "In PlaySystemToneService" );
+            TestModuleIf().Printf( 0, Ksystemtoneservicestif, KPrint );
+            // Print to log file
+            iLog->Log( KPrint );
+            
+               TInt lRetVal = KErrNone;
+               TInt toneType = 0;
+
+               lRetVal = aItem.GetNextInt(toneType);
+              
+        if ( lRetVal != KErrNone )
+        {
+            iLog->Log(_L("Csystemtoneservicestif::PlaySystemToneService tone type missing in config file "));
+            iLog->Log(_L("Playing Default Tone"));
+            iSts->PlayTone(CSystemToneService::EDefaultBeep);
+            lRetVal = KErrNone;
+        }
+				else
+        {
+            iSts->PlayTone(CSystemToneService::TToneType(toneType));
+            iLog->Log(_L("CSystemToneService::TToneType(toneType) %d"),CSystemToneService::TToneType(toneType) );
+        }
+        
+        return lRetVal;
+}
+
+
+TInt CSystemToneServiceStif::PlaySystemToneServiceWithContext( CStifItemParser& aItem )
+    {
+        // Print to UI
+            _LIT( Ksystemtoneservicestif, "systemtoneservicestif" );
+            _LIT( KPrint, "In PlaySystemToneServiceWithContext" );
+            TestModuleIf().Printf( 0, Ksystemtoneservicestif, KPrint );
+            // Print to log file
+            iLog->Log( KPrint );
+            
+               TInt lRetVal = KErrNone;
+               TInt toneType = 0;
+
+               lRetVal = aItem.GetNextInt(toneType);
+
+               if ( lRetVal != KErrNone )
+                {
+                   iLog->Log(_L("CSystemToneServiceStif::PlaySystemToneService tone type missing in config file "));
+                   iLog->Log(_L("Playing Default Tone"));
+                   
+            iSts->PlayTone(CSystemToneService::EDefaultBeep, iCurrentContext);
+        }
+			  else
+        {
+            //iSts->PlayTone(CSystemToneService::EClockAlarm, iCurrentContext);
+            iSts->PlayTone(CSystemToneService::TToneType(toneType), iCurrentContext);
+            iLog->Log(_L("CSystemToneService::TToneType(toneType) %d"),CSystemToneService::TToneType(toneType) );
+        }
+        
+        return lRetVal;       
+            
+        }
+
+
+TInt  CSystemToneServiceStif::StopSystemToneService(CStifItemParser& aItem  )
+    {
+    TPtrC StopType;
+		TInt error = KErrNone;
+		
+    error = aItem.GetNextString(StopType);
+    
+    
+    if (StopType == KTrue)
+    {
+				iLog->Log(_L("Stop Tone with recognized context number"));
+          
+        iSts->StopTone(iCurrentContext);
+		}
+		else
+		{
+		    iLog->Log(_L("Stop Tone with unrecognized context number"));
+          
+        iSts->StopTone(iCurrentContext+1);
+    }
+    
+    return error;
+}
+
--- a/mmmw_plat/telephony_multimedia_service_api/inc/tms.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmmw_plat/telephony_multimedia_service_api/inc/tms.h	Mon May 03 12:59:52 2010 +0300
@@ -182,8 +182,7 @@
 #define TMS_INBAND_NO_SEQUENCE                  ((gint)8)
 #define TMS_INBAND_BEEP_SEQUENCE                ((gint)9)
 
-
-// TMSSignalEvent structure for callback notifications
+// Structure signalling callback notifications
 struct TMSSignalEvent
     {
     guint type;
@@ -194,12 +193,12 @@
     gint prev_state;
     };
 
-// TMSRTPStreamDescription for RTP
-struct TMSRTPStreamDescription
+// Structure for global volume effect change event
+struct TMSVolumeEventChangeData
     {
-    gint filler1;
-    gint filler2;
-    gint filler3;
+    guint level;
+    TMSAudioOutput output;
+    gboolean output_changed;
     };
 
 } //namespace TMS
--- a/mmmw_plat/telephony_multimedia_service_api/inc/tmsclientsinkobsrvr.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmmw_plat/telephony_multimedia_service_api/inc/tmsclientsinkobsrvr.h	Mon May 03 12:59:52 2010 +0300
@@ -11,7 +11,8 @@
  *
  * Contributors:
  *
- * Description: Telephony Multimedia Service
+ * Description: This class provides callback mechanism for TMSClientSink
+ * listeners.
  *
  */
 
@@ -57,7 +58,7 @@
      *      Buffer with recorded data to be emptied by the client.
      *
      */
-    virtual void ProcessBuffer(TMSBuffer* buffer) = 0;
+    virtual void ProcessBuffer(const TMSBuffer* buffer) = 0;
     };
 
 } //namespace TMS
--- a/mmmw_plat/telephony_multimedia_service_api/inc/tmsclientsourceobsrvr.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmmw_plat/telephony_multimedia_service_api/inc/tmsclientsourceobsrvr.h	Mon May 03 12:59:52 2010 +0300
@@ -11,7 +11,7 @@
  *
  * Contributors:
  *
- * Description:This class provides callback mechanism for TMSClientSource
+ * Description: This class provides callback mechanism for TMSClientSource
  * listeners.
  *
  */
@@ -72,7 +72,7 @@
      *      The status of the operation.
      *
      */
-    virtual void BufferProcessed(TMSBuffer* buffer, gint reason) = 0;
+    virtual void BufferProcessed(const TMSBuffer* buffer, gint reason) = 0;
     };
 
 } //namespace TMS
--- a/mmmw_plat/telephony_multimedia_service_api/inc/tmsdtmfobsrvr.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmmw_plat/telephony_multimedia_service_api/inc/tmsdtmfobsrvr.h	Mon May 03 12:59:52 2010 +0300
@@ -11,8 +11,7 @@
  *
  * Contributors:
  *
- * Description: Telephony Multimedia Service
- * This class provides callback mechanism for TMSDTMF listeners.
+ * Description: This class provides callback mechanism for TMSDTMF listeners.
  *
  */
 
@@ -54,12 +53,12 @@
      *  TMS_EVENT_DTMF_TONE_STOPPED
 
      * @param  dtmf
-     *      Pointer to the object that is being signaled.
+     *      Reference to the object that is being signaled.
      *
      * @param  event
      *      Event descriptor.
      */
-    virtual void DTMFEvent(TMSDTMF* dtmf, TMSSignalEvent event) = 0;
+    virtual void DTMFEvent(const TMSDTMF& dtmf, TMSSignalEvent event) = 0;
     };
 
 } //namespace TMS
--- a/mmmw_plat/telephony_multimedia_service_api/inc/tmseffectobsrvr.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmmw_plat/telephony_multimedia_service_api/inc/tmseffectobsrvr.h	Mon May 03 12:59:52 2010 +0300
@@ -11,7 +11,7 @@
  *
  * Contributors:
  *
- * Description:This class provides callback mechanism for TMSEffect listeners.
+ * Description: This class provides callback mechanism for TMSEffect listeners.
  *
  */
 
@@ -74,13 +74,14 @@
      *  TMS_EVENT_EFFECT_GAIN_CHANGED
      *
      * @param  tmseffect
-     *      Pointer to the object that is being signaled.
+     *      Reference to the object that is being signaled.
      *
      * @param  event
      *      Event descriptor.
      *
      */
-    virtual void EffectsEvent(TMSEffect* tmseffect, TMSSignalEvent event) = 0;
+    virtual void EffectsEvent(const TMSEffect& tmseffect,
+            TMSSignalEvent event) = 0;
     };
 
 } //namespace TMS
--- a/mmmw_plat/telephony_multimedia_service_api/inc/tmsglobalroutingobsrvr.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmmw_plat/telephony_multimedia_service_api/inc/tmsglobalroutingobsrvr.h	Mon May 03 12:59:52 2010 +0300
@@ -11,7 +11,8 @@
  *
  * Contributors:
  *
- * Description:This class provides callback mechanism for TMSGlobalRouting listeners.
+ * Description: This class provides callback mechanism for TMSGlobalRouting
+ * listeners.
  *
  */
 
@@ -72,7 +73,7 @@
      *  TMS_EVENT_ROUTING_SET_OUTPUT_COMPLETE
      *
      * @param  routing
-     *      Pointer to the object that is being signaled.
+     *      Reference to the object that is being signaled.
      *
      * @param  event
      *      Event descriptor.
@@ -81,7 +82,7 @@
      *      Indicates the output device that audio will be routed to.
      *
      */
-    virtual void GlobalRoutingEvent(TMSGlobalRouting* routing,
+    virtual void GlobalRoutingEvent(const TMSGlobalRouting& routing,
             TMSSignalEvent event, TMSAudioOutput output) = 0;
     };
 
--- a/mmmw_plat/telephony_multimedia_service_api/inc/tmsinbandtoneobsrvr.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmmw_plat/telephony_multimedia_service_api/inc/tmsinbandtoneobsrvr.h	Mon May 03 12:59:52 2010 +0300
@@ -11,7 +11,8 @@
  *
  * Contributors:
  *
- * Description: Telephony Multimedia Service
+ * Description: This class provides callback mechanism for TMSInbandTone
+ * listeners.
  *
  */
 
@@ -44,6 +45,7 @@
  * @lib tmsapi.lib
  *
  */
+
 class TMSInbandToneObserver
     {
 public:
@@ -53,12 +55,13 @@
      *  TMS_EVENT_INBAND_TONE_STOPPED
 
      * @param  inbandtone
-     *      Pointer to the object that is being signaled.
+     *      Reference to the object that is being signaled.
      *
      * @param  event
      *      Event descriptor.
      */
-    virtual void InbandToneEvent(TMSInbandTone* inbandtone, TMSSignalEvent event) = 0;
+    virtual void InbandToneEvent(const TMSInbandTone& inbandtone,
+            TMSSignalEvent event) = 0;
     };
 
 } //namespace TMS
--- a/mmmw_plat/telephony_multimedia_service_api/inc/tmsringtoneobsrvr.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmmw_plat/telephony_multimedia_service_api/inc/tmsringtoneobsrvr.h	Mon May 03 12:59:52 2010 +0300
@@ -11,7 +11,8 @@
  *
  * Contributors:
  *
- * Description: Telephony Multimedia Service
+ * Description: This class provides callback mechanism for TMSRingTone
+ * listeners.
  *
  */
 
@@ -45,13 +46,14 @@
      *  TMS_EVENT_RINGTONE_PLAY_COMPLETE
      *
      * @param  rt
-     *      Pointer to the object that is being signaled.
+     *      Reference to the object that is being signaled.
      *
      * @param  event
      *      Event descriptor.
      *
      */
-    virtual void RingtoneEvent(TMSRingTone* rt, TMSSignalEvent event) = 0;
+    virtual void RingtoneEvent(const TMSRingTone& rt,
+            TMSSignalEvent event) = 0;
     };
 
 } //namespace TMS
--- a/mmmw_plat/telephony_multimedia_service_api/inc/tmsstreamobsrvr.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmmw_plat/telephony_multimedia_service_api/inc/tmsstreamobsrvr.h	Mon May 03 12:59:52 2010 +0300
@@ -11,7 +11,7 @@
  *
  * Contributors:
  *
- * Description: Telephony Multimedia Service
+ * Description: This class provides callback mechanism for TMSStream listeners.
  *
  */
 
@@ -64,13 +64,14 @@
      *
      *
      * @param  stream
-     *      Pointer to the object that is being signaled.
+     *      Reference to the object that is being signaled.
      *
      * @param  event
      *      Event descriptor.
      *
      */
-    virtual void TMSStreamEvent(TMSStream* stream, TMSSignalEvent event) = 0;
+    virtual void TMSStreamEvent(const TMSStream& stream,
+            TMSSignalEvent event) = 0;
     };
 
 } //namespace TMS
--- a/mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/inc/TMSAudioServicesTestClass.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/inc/TMSAudioServicesTestClass.h	Mon May 03 12:59:52 2010 +0300
@@ -211,20 +211,20 @@
     void HandleTimeout(TInt error);
 
     //From TMSStreamObserver
-    void TMSStreamEvent(TMSStream* stream, TMSSignalEvent event);
+    void TMSStreamEvent(const TMSStream& stream, TMSSignalEvent event);
 
     //From TMSClientSourceObserver
     void FillBuffer(TMSBuffer& buffer);
-    void BufferProcessed(TMSBuffer* buffer, gint reason);
+    void BufferProcessed(const TMSBuffer* buffer, gint reason);
 
     //From TMSClientSinkObserver
-    void ProcessBuffer(TMSBuffer* buffer);
+    void ProcessBuffer(const TMSBuffer* buffer);
 
     //From TMSClientSinkObserver starts
-    void EffectsEvent(TMSEffect* tmseffect, TMSSignalEvent event);
+    void EffectsEvent(const TMSEffect& tmseffect, TMSSignalEvent event);
 
     // from TMSGlobalRoutingObserver
-    void GlobalRoutingEvent(TMSGlobalRouting* /*routing*/,
+    void GlobalRoutingEvent(const TMSGlobalRouting& /*routing*/,
             TMSSignalEvent event, TMSAudioOutput output);
 
 private:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/sis/create_sis.bat	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,22 @@
+cls
+@echo off
+echo.
+
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+echo Description:  TMS SIS package creation utility
+rem
+
+del TmsAudioServicesTestClass.sis*
+makesis ..\group\TmsAudioServicesTestClass.pkg TmsAudioServicesTestClass.sis
+rem signsis TmsAudioServicesTestClass.sis TmsAudioServicesTestClass.sisx rd.crt rd.key
--- a/mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/src/TimeoutController.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/src/TimeoutController.cpp	Mon May 03 12:59:52 2010 +0300
@@ -175,7 +175,7 @@
     miliseconds /= 1000;
 
     TBuf<30> dateString;
-    TRAPD(ignore, endTime.FormatL(dateString, KFormatTimeStamp));
+    TRAP_IGNORE(endTime.FormatL(dateString, KFormatTimeStamp));
     iLog->Log(_L("Timer=%LD ms, EndTime=%S"), miliseconds, &dateString);
 
     // Store absolute timeout
@@ -248,9 +248,7 @@
         {
         if (iTestCaseTimeout > timeout)
             {
-            RDebug::Print(
-                    _L("Absolute timer still valid. Restaring timer. iStatus: %d"),
-                    iStatus.Int());
+            RDebug::Print(_L("Absolute timer still valid. Restaring timer. iStatus: %d"), iStatus.Int());
             // Start new timer
             iStatus = KErrNone; // reset value
             iTimer.At(iStatus, iTestCaseTimeout); // restart timer
--- a/mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/src/TmsAudioServicesTestClassBlocks.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/src/TmsAudioServicesTestClassBlocks.cpp	Mon May 03 12:59:52 2010 +0300
@@ -112,7 +112,7 @@
     iExpectedEvents.Close();
     iOcurredEvents.Close();
 
-    iLog->Log(_L("Deleti ng test class..."));
+    iLog->Log(_L("Deleting test class..."));
     iLog->Log(_L(""));
     iLog->Log(_L(""));
 
@@ -322,8 +322,7 @@
 // CTmsAudioServicesTestClass::RemoveExpectedEvent
 // Remove the indicated event from the expected events' list
 // -----------------------------------------------------------------------------
-TBool CTmsAudioServicesTestClass::RemoveExpectedEvent(
-        TTmsExpectedEvent aEvent)
+TBool CTmsAudioServicesTestClass::RemoveExpectedEvent(TTmsExpectedEvent aEvent)
     {
     FTRACE(FPrint(_L("CTmsAudioServicesTestClass::RemoveExpectedEvent")));
     iLog->Log(_L("CTmsAudioServicesTestClass::RemoveExpectedEvent"));
@@ -555,9 +554,7 @@
             case TMS_CALL_IP:
                 {
                 error = iFactory->CreateCall(calltype, iTmsCall, 0);
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::CreateCall, error [%d]"),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::CreateCall, error [%d]"), error);
                 }
                 break;
             default:
@@ -586,58 +583,49 @@
 
         if (iFactory && !iTmsFormat)
             {
-            iLog ->Log(
-                    _L("CTmsAudioServicesTestClass::CreateFormat - input format"));
+            iLog ->Log(_L("CTmsAudioServicesTestClass::CreateFormat - input format"));
 
             if (formatType == KTagG711)
                 {
                 format = TMS_FORMAT_G711;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::CreateFormat - input format TMS_FORMAT_G711"));
+                iLog->Log(_L("CTmsAudioServicesTestClass::CreateFormat - input format TMS_FORMAT_G711"));
                 }
             else if (formatType == KTagG729)
                 {
                 format = TMS_FORMAT_G729;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::CreateFormat - input format TMS_FO RMAT_G729"));
+                iLog->Log(_L("CTmsAudioServicesTestClass::CreateFormat - input format TMS_FO RMAT_G729"));
                 }
             else if (formatType == KTagILBC)
                 {
                 format = TMS_FORMAT_ILBC;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::CreateFormat - input format TMS_FORMAT_ILBC"));
+                iLog->Log(_L("CTmsAudioServicesTestClass::CreateFormat - input format TMS_FORMAT_ILBC"));
                 }
             else if (formatType == KTagAMRNB)
                 {
                 format = TMS_FORMAT_AMR;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::CreateFormat - input format TMS_FORMAT_AMR"));
+                iLog->Log(_L("CTmsAudioServicesTestClass::CreateFormat - input format TMS_FORMAT_AMR"));
                 }
             else if (formatType == KTagPCM16)
                 {
                 format = TMS_FORMAT_PCM;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::CreateFormat - input format TMS_FORMAT_PCM"));
+                iLog->Log(_L("CTmsAudioServicesTestClass::CreateFormat - input format TMS_FORMAT_PCM"));
                 }
             else
                 {
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::CreateFormat failed, format not supported"));
+                iLog->Log(_L("CTmsAudioServicesTestClass::CreateFormat failed, format not supported"));
                 error = KErrNotSupported;
                 return error;
                 }
 
             if (StreamType == KTagDnlink)
                 {
-                iLog ->Log(
-                        _L("CTmsAudioServicesTestClass::CreateFormat - iTmsFormatDn"));
+                iLog ->Log(_L("CTmsAudioServicesTestClass::CreateFormat - iTmsFormatDn"));
                 error = iFactory->CreateFormat(format, iTmsFormatDn);
                 iDnLinkCodec = format;
                 }
             else if (StreamType == KTagUplink)
                 {
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::CreateFormat - iTmsFormatUp"));
+                iLog->Log(_L("CTmsAudioServicesTestClass::CreateFormat - iTmsFormatUp"));
                 error = iFactory->CreateFormat(format, iTmsFormatUp);
                 iUpLinkCodec = format;
                 }
@@ -740,8 +728,7 @@
     else
         {
         error = KErrNotReady;
-        iLog->Log(
-                _L("CTmsAudioServicesTestClass::CreateGlobalRouting - Need create TMSFactory first" ));
+        iLog->Log(_L("CTmsAudioServicesTestClass::CreateGlobalRouting - Need create TMSFactory first" ));
         }
     return error;
 
@@ -872,9 +859,7 @@
 
     if (itSourceType != sourcetype)
         {
-        iLog->Log(
-                _L("returned souece type is not same as expected, returned sourcetype :[%d]"),
-                itSourceType);
+        iLog->Log(_L("returned souece type is not same as expected, returned sourcetype :[%d]"), itSourceType);
         error = KErrUnexpectedValue;
         }
     return error;
@@ -917,9 +902,7 @@
 
         if (itSinkType != sinktype)
             {
-            iLog->Log(
-                    _L("retur ned sink type is not sameas expected, returned sinktype :[%d]"),
-                    itSinkType);
+            iLog->Log(_L("retur ned sink type is not sameas expected, returned sinktype :[%d]"), itSinkType);
             error = KErrUnexpectedValue;
             }
         }
@@ -984,9 +967,7 @@
 
     if (itEffectType != effecttype)
         {
-        iLog->Log(
-                _L("returned effecttype type is not same as expected, returned effecttype :[%d]"),
-                itEffectType);
+        iLog->Log(_L("returned effecttype type is not same as expected, returned effecttype :[%d]"), itEffectType);
         error = KErrUnexpectedValue;
         }
     return error;
@@ -1004,9 +985,7 @@
             error = iFactory->DeleteSource(iTmsClientSource);
             if (error != KErrNone)
                 {
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::DeleteClientSource, failed [%d]"),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::DeleteClientSource, failed [%d]"), error);
                 return error;
                 }
             }
@@ -1015,9 +994,7 @@
             error = iFactory->DeleteSource(iTmsModemSource);
             if (error != KErrNone)
                 {
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::DeleteModemSource, failed [%d]"),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::DeleteModemSource, failed [%d]"), error);
                 return error;
                 }
             }
@@ -1026,9 +1003,7 @@
             error = iFactory->DeleteSource(iTmsMicSource);
             if (error != KErrNone)
                 {
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::DeleteMicSource, failed [%d]"),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::DeleteMicSource, failed [%d]"), error);
                 return error;
                 }
             }
@@ -1049,9 +1024,7 @@
             error = iFactory->DeleteSink(iTmsClientSink);
             if (error != KErrNone)
                 {
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::DeleteClientSource, failed [%d]"),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::DeleteClientSource, failed [%d]"), error);
                 return error;
                 }
             }
@@ -1060,9 +1033,7 @@
             error = iFactory->DeleteSink(iTmsModemSink);
             if (error != KErrNone)
                 {
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::DeleteModemSource, failed [%d]"),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::DeleteModemSource, failed [%d]"), error);
                 return error;
                 }
             }
@@ -1071,9 +1042,7 @@
             error = iFactory->DeleteSink(iTmsSpkrSink);
             if (error != KErrNone)
                 {
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::DeleteSpkrSource, failed [%d]"),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::DeleteSpkrSource, failed [%d]"), error);
                 return error;
                 }
             }
@@ -1093,9 +1062,7 @@
         error = iTmsCall->CreateStream(TMS_STREAM_DOWNLINK, iTmsDnlink);
         }
 
-    iLog->Log(
-            _L("CTmsAudioServicesTestClass::CreateDownlinkStream Error [%d]"),
-            error);
+    iLog->Log(_L("CTmsAudioServicesTestClass::CreateDownlinkStream Error [%d]"), error);
     return error;
     }
 
@@ -1229,9 +1196,7 @@
             }
         else
             {
-            error
-                    = iFactory->GetSupportedFormats(TMS_STREAM_DOWNLINK,
-                            iCodec);
+            error = iFactory->GetSupportedFormats(TMS_STREAM_DOWNLINK, iCodec);
             }
 
         if (error != KErrNone)
@@ -1257,7 +1222,6 @@
                 iCodec.erase(itCodecs);
                 //delete *itDnlCodecs;
                 iFactory->DeleteFormat(*itCodecs);
-
                 }
             }
         }
@@ -1306,8 +1270,7 @@
                 || (formatType == KTagAMRNB && fmttype != TMS_FORMAT_AMR)
                 || (formatType == KTagPCM16 && fmttype != TMS_FORMAT_PCM))
             {
-            iLog->Log(
-                    _L("CTmsAudioServicesTestClass::GetType failed, Format is same as expected"));
+            iLog->Log(_L("CTmsAudioServicesTestClass::GetType failed, Format is same as expected"));
             error = KErrUnexpectedValue;
             }
         }
@@ -1332,8 +1295,7 @@
 
         if (error != KErrNone)
             {
-            iLog->Log(
-                    _L("CTmsAudioServicesTestClass::SetDownlinkFormat - failed, return error = %d" ),
+            iLog->Log(_L("CTmsAudioServicesTestClass::SetDownlinkFormat - failed, return error = %d" ),
                     error);
             return error;
             }
@@ -1341,8 +1303,7 @@
     else
         {
         error = KErrNotReady;
-        iLog->Log(
-                _L("CTmsAudioServicesTestClass::SetDownlinkFormat - Need create TMSStream & TMSFormat first" ));
+        iLog->Log(_L("CTmsAudioServicesTestClass::SetDownlinkFormat - Need create TMSStream & TMSFormat first" ));
         }
 
     return error;
@@ -1359,8 +1320,7 @@
         error = iTmsDnlink->ResetFormat(iTmsFormatDn);
         if (error != KErrNone)
             {
-            iLog->Log(
-                    _L("CTmsAudioServicesTestClass::ReSetDownlinkFormat - failed, return error = %d" ),
+            iLog->Log(_L("CTmsAudioServicesTestClass::ReSetDownlinkFormat - failed, return error = %d" ),
                     error);
             return error;
             }
@@ -1368,8 +1328,7 @@
     else
         {
         error = KErrNotReady;
-        iLog->Log(
-                _L("CTmsAudioServicesTestClass::ReSetDownlinkFormat - Need create TMSStream & TMSFormat first" ));
+        iLog->Log(_L("CTmsAudioServicesTestClass::ReSetDownlinkFormat - Need create TMSStream & TMSFormat first" ));
         }
     return error;
     }
@@ -1383,8 +1342,7 @@
         {
         if (iTmsDnlink)
             {
-            iLog->Log(
-                    _L("CTmsAudioServicesTestClass::OpenDownlink - init Downlink"));
+            iLog->Log(_L("CTmsAudioServicesTestClass::OpenDownlink - init Downlink"));
             iTmsDnlink->AddObserver(*this, NULL);
             error = iTmsDnlink->Init();
             }
@@ -1420,15 +1378,13 @@
             }
         else
             {
-            iLog->Log(
-                    _L("CTmsAudioServicesTestClass::SetUplinkFormat - iTmsFormat"));
+            iLog->Log(_L("CTmsAudioServicesTestClass::SetUplinkFormat - iTmsFormat"));
             error = iTmsUplink->SetFormat(iTmsFormat);
             }
 
         if (error != KErrNone)
             {
-            iLog->Log(
-                    _L("CTmsAudioServicesTestClass::SetUplinkFormat - failed, return error = %d" ),
+            iLog->Log(_L("CTmsAudioServicesTestClass::SetUplinkFormat - failed, return error = %d" ),
                     error);
             return error;
             }
@@ -1436,8 +1392,7 @@
     else
         {
         error = KErrNotReady;
-        iLog->Log(
-                _L("CTmsAudioServicesTestClass::SetUplinkFormat - Need create TMSStream & TMSFormat first" ));
+        iLog->Log(_L("CTmsAudioServicesTestClass::SetUplinkFormat - Need create TMSStream & TMSFormat first" ));
         }
     return error;
     }
@@ -1453,17 +1408,14 @@
         error = iTmsUplink->ResetFormat(iTmsFormatUp);
         if (error != KErrNone)
             {
-            iLog->Log(
-                    _L("CTmsAudioServicesTestClass::ReSetUplinkFormat - failed, return error = %d" ),
-                    error);
+            iLog->Log(_L("CTmsAudioServicesTestClass::ReSetUplinkFormat - failed, return error = %d" ), error);
             return error;
             }
         }
     else
         {
         error = KErrNotReady;
-        iLog->Log(
-                _L("CTmsAudioServicesTestClass::ReSetUplinkFormat - Need create TMSStream & TMSFormat first" ));
+        iLog->Log(_L("CTmsAudioServicesTestClass::ReSetUplinkFormat - Need create TMSStream & TMSFormat first" ));
         }
     return error;
     }
@@ -1478,8 +1430,7 @@
         {
         if (iTmsUplink)
             {
-            iLog->Log(
-                    _L("CTmsAudioServicesTestClass::OpenDownlink - init Uplink"));
+            iLog->Log(_L("CTmsAudioServicesTestClass::OpenDownlink - init Uplink"));
             iTmsUplink->AddObserver(*this, NULL);
             error = iTmsUplink->Init();
             }
@@ -1739,72 +1690,59 @@
     if (effecttype == TMS_EFFECT_GAIN)
         {
         RDebug::Printf("[TMS STIF] GAIN, GetMaxLevel");
-        ret = ((TMSGainEffect*) iTmsUplinkEffect)->GetMaxLevel(iMaxGain);
-        RDebug::Printf(
-                "[TMS STIF] GAIN, GetMaxLevel Level [%d] Ret Err [%d]",
-                iMaxGain, ret);
+        ret = static_cast<TMSGainEffect*>(iTmsUplinkEffect)->GetMaxLevel(
+                iMaxGain);
+        RDebug::Printf("[TMS STIF] GAIN, GetMaxLevel Level [%d] Ret Err [%d]", iMaxGain, ret);
         RDebug::Printf("[TMS STIF] GAIN, SetLevel to [%d]", iMaxGain);
-        ret = ((TMSGainEffect*) iTmsUplinkEffect)->SetLevel(iMaxGain);
+        ret = static_cast<TMSGainEffect*>(iTmsUplinkEffect)->SetLevel(iMaxGain);
         RDebug::Printf("[TMS STIF] GAIN, SetLevel ret [%d]", ret);
         iLog->Log(_L("SetMaxGain: %d"), iMaxGain);
         RDebug::Printf("[TMS STIF] GAIN, GetLevel");
-        ret = ((TMSGainEffect*) iTmsUplinkEffect)->GetLevel(iGain);
-        RDebug::Printf(
-                "[TMS STIF] GAIN, Exp Level [%d] Ret Level [%d] Ret Err [%d]",
-                iMaxGain, iGain, ret);
+        ret = static_cast<TMSGainEffect*>(iTmsUplinkEffect)->GetLevel(iGain);
+        RDebug::Printf("[TMS STIF] GAIN, Exp Level [%d] Ret Level [%d] Ret Err [%d]", iMaxGain, iGain, ret);
         if (iGain != iMaxGain)
             {
-            iLog->Log(
-                    _L("GetGain doesn't return expected MaxGain!!! returned Gain = %d"),
-                    iGain);
+            iLog->Log(_L("GetGain doesn't return expected MaxGain!!! returned Gain = %d"), iGain);
             return KErrUnexpectedValue;
             }
 
-        ((TMSGainEffect*) iTmsUplinkEffect)->SetLevel(0);
+        static_cast<TMSGainEffect*>(iTmsUplinkEffect)->SetLevel(0);
         iLog->Log(_L("MuteMic"));
-        ((TMSGainEffect*) iTmsUplinkEffect)->GetLevel(iGain);
+        static_cast<TMSGainEffect*>(iTmsUplinkEffect)->GetLevel(iGain);
 
         if (iGain != 0)
             {
-            iLog->Log(
-                    _L("GetGain does not return expected Mute value!!! returned Gain = %d"),
-                    iGain);
+            iLog->Log(_L("GetGain does not return expected Mute value!!! returned Gain = %d"), iGain);
             return KErrUnexpectedValue;
             }
         }
     else if (effecttype == TMS_EFFECT_GLOBAL_GAIN)
         {
         RDebug::Printf("[TMS STIF] GLOBAL GAIN, GetMaxLevel");
-        ret = ((TMSGlobalGainEffect*) iGlobalGain)->GetMaxLevel(iMaxGain);
-        RDebug::Printf(
-                "[TMS STIF] GLOBAL GAIN, GetMaxLevel Level [%d] Ret Err [%d]",
-                iMaxGain, ret);
+        ret = static_cast<TMSGlobalGainEffect*>(iGlobalGain)->GetMaxLevel(
+                iMaxGain);
+        RDebug::Printf("[TMS STIF] GLOBAL GAIN, GetMaxLevel Level [%d] Ret Err [%d]", iMaxGain, ret);
         RDebug::Printf("[TMS STIF] GLOBAL GAIN, SetLevel to [%d]", iMaxGain);
-        ret = ((TMSGlobalGainEffect*) iGlobalGain)->SetLevel(iMaxGain);
+        ret = static_cast<TMSGlobalGainEffect*>(iGlobalGain)->SetLevel(
+                iMaxGain);
         RDebug::Printf("[TMS STIF] GLOBAL GAIN, SetLevel ret [%d]", ret);
         iLog->Log(_L("SetGlobleMaxGain: %d"), iMaxGain);
         RDebug::Printf("[TMS STIF] GLOBAL GAIN, GetLevel");
-        ret = ((TMSGlobalGainEffect*) iGlobalGain)->GetLevel(iGain);
-        RDebug::Printf(
-                "[TMS STIF] GLOBAL GAIN, Exp Level [%d] Ret Level [%d] Ret Err [%d]",
-                iMaxGain, iGain, ret);
+        ret = static_cast<TMSGlobalGainEffect*>(iGlobalGain)->GetLevel(iGain);
+        RDebug::Printf("[TMS STIF] GLOBAL GAIN, Exp Level [%d] Ret Level [%d] Ret Err [%d]", iMaxGain, iGain, ret);
         if (iGain != iMaxGain)
             {
-            iLog->Log(
-                    _L("GetGain doesn't return expected Globle MaxGain!!! returned Gain = %d"),
-                    iGain);
+            iLog->Log(_L("GetGain doesn't return expected Globle MaxGain!!! returned Gain = %d"), iGain);
             return KErrUnexpectedValue;
             }
 
-        ((TMSGlobalGainEffect*) iGlobalGain)->SetLevel(0);
+        static_cast<TMSGlobalGainEffect*>(iGlobalGain)->SetLevel(0);
         iLog->Log(_L("MuteMic"));
-        ((TMSGlobalGainEffect*) iGlobalGain)->GetLevel(iGain);
+        static_cast<TMSGlobalGainEffect*>(iGlobalGain)->GetLevel(iGain);
 
         if (iGain != 0)
             {
-            iLog->Log(
-                    _L("GetGain does not return expected loble Mute value!!! returned Gain = %d"),
-                    iGain);
+            iLog->Log(_L("GetGain does not return expected loble Mute value!!! returned Gain = %d"), iGain);
             return KErrUnexpectedValue;
             }
         }
@@ -1826,76 +1764,68 @@
     if (effecttype == TMS_EFFECT_VOLUME)
         {
         RDebug::Printf("[TMS STIF] Volume, GetMaxLevel");
-        ret = ((TMSVolumeEffect*) iTmsDnlinkEffect)->GetMaxLevel(iMaxVolume);
-        RDebug::Printf("[TMS STIF] MaxLevel [%d] Ret Error [%d]", iMaxVolume,
-                ret);
-        RDebug::Printf("[TMS STIF] Volume, SetLevel to MaxLevel [%d]",
+        ret = static_cast<TMSVolumeEffect*>(iTmsDnlinkEffect)->GetMaxLevel(
                 iMaxVolume);
-        ret = ((TMSVolumeEffect*) iTmsDnlinkEffect)->SetLevel(iMaxVolume);
+        RDebug::Printf("[TMS STIF] MaxLevel [%d] Ret Error [%d]", iMaxVolume, ret);
+        RDebug::Printf("[TMS STIF] Volume, SetLevel to MaxLevel [%d]", iMaxVolume);
+        ret = static_cast<TMSVolumeEffect*>(iTmsDnlinkEffect)->SetLevel(
+                iMaxVolume);
         RDebug::Printf("[TMS STIF] SetLevel Ret Error [%d]", ret);
         iLog->Log(_L("SetMaxVolume: %d"), iMaxVolume);
         RDebug::Printf("[TMS STIF] GetLevel");
-        ret = ((TMSVolumeEffect*) iTmsDnlinkEffect)->GetLevel(iVolume);
+        ret = static_cast<TMSVolumeEffect*>(iTmsDnlinkEffect)->GetLevel(
+                iVolume);
         RDebug::Printf("[TMS STIF] Level [%d] Ret Error [%d]", iVolume, ret);
         if (iVolume != iMaxVolume)
             {
-            iLog->Log(
-                    _L("GetVolume doesn't return expected MaxVolume!!! returned Volume = %d"),
-                    iVolume);
+            iLog->Log(_L("GetVolume doesn't return expected MaxVolume!!! returned Volume = %d"), iVolume);
             return KErrUnexpectedValue;
             }
 
         RDebug::Printf("[TMS STIF] Volume, SetLevel to 0 ");
-        ret = ((TMSVolumeEffect*) iTmsDnlinkEffect)->SetLevel(0);
+        ret = static_cast<TMSVolumeEffect*>(iTmsDnlinkEffect)->SetLevel(0);
         RDebug::Printf("[TMS STIF] SetLevel Ret Error [%d]", ret);
         iLog->Log(_L("Mute Volume"));
-        ret = ((TMSVolumeEffect*) iTmsDnlinkEffect)->GetLevel(iVolume);
+        ret = static_cast<TMSVolumeEffect*>(iTmsDnlinkEffect)->GetLevel(
+                iVolume);
         RDebug::Printf("[TMS STIF] Level [%d] Ret Error [%d]", iVolume, ret);
         if (iVolume != 0)
             {
-            iLog->Log(
-                    _L("GetVolume does not return expected Mute value!!! returned Volume = %d"),
-                    iVolume);
+            iLog->Log(_L("GetVolume does not return expected Mute value!!! returned Volume = %d"), iVolume);
             return KErrUnexpectedValue;
             }
         }
     else if (effecttype == TMS_EFFECT_GLOBAL_VOL)
         {
         RDebug::Printf("[TMS STIF] GLOBAL_VOL, Get Current Level");
-        ret = ((TMSGlobalVolEffect*) iGlobalVol)->GetLevel(iVolume);
-        RDebug::Printf("[TMS STIF] Current Vol Level [%d] Ret Error [%d]",
-                iVolume, ret);
+        ret = static_cast<TMSGlobalVolEffect*>(iGlobalVol)->GetLevel(iVolume);
+        RDebug::Printf("[TMS STIF] Current Vol Level [%d] Ret Error [%d]", iVolume, ret);
         RDebug::Printf("[TMS STIF] GLOBAL_VOL, GetMaxLevel");
-        ret = ((TMSGlobalVolEffect*) iGlobalVol)->GetMaxLevel(iMaxVolume);
-        RDebug::Printf("[TMS STIF] MaxLevel [%d] Ret Error [%d]", iMaxVolume,
-                ret);
+        ret = static_cast<TMSGlobalVolEffect*>(iGlobalVol)->GetMaxLevel(
+                iMaxVolume);
+        RDebug::Printf("[TMS STIF] MaxLevel [%d] Ret Error [%d]", iMaxVolume, ret);
         RDebug::Printf("[TMS STIF] GLOBAL_VOL, SetLevel to [%d]", iMaxVolume);
-        ret = ((TMSGlobalVolEffect*) iGlobalVol)->SetLevel(iMaxVolume);
+        ret = static_cast<TMSGlobalVolEffect*>(iGlobalVol)->SetLevel(
+                iMaxVolume);
         RDebug::Printf("[TMS STIF] SetLevel Ret Error [%d]", ret);
         iLog->Log(_L("SetMaxGlobleVolume: %d"), iMaxVolume);
         RDebug::Printf("[TMS STIF] GLOBAL_VOL,GetLevel");
-        ret = ((TMSGlobalVolEffect*) iGlobalVol)->GetLevel(iVolume);
-        RDebug::Printf(
-                "[TMS STIF] Expected Level [%d] Ret Level [%d] Ret Error [%d]",
-                iMaxVolume, iVolume, ret);
+        ret = static_cast<TMSGlobalVolEffect*>(iGlobalVol)->GetLevel(iVolume);
+        RDebug::Printf("[TMS STIF] Expected Level [%d] Ret Level [%d] Ret Error [%d]", iMaxVolume, iVolume, ret);
         iLog->Log(_L("GetMaxGlobleVolume: %d"), iVolume);
         if (iVolume != iMaxVolume)
             {
-            iLog->Log(
-                    _L("GetGlobleVolume doesn't return expected MaxVolume!!! returned Volume = %d"),
-                    iVolume);
+            iLog->Log(_L("GetGlobleVolume doesn't return expected MaxVolume!!! returned Volume = %d"), iVolume);
             return KErrUnexpectedValue;
             }
 
-        ((TMSGlobalVolEffect*) iGlobalVol)->SetLevel(0);
+        static_cast<TMSGlobalVolEffect*>(iGlobalVol)->SetLevel(0);
         iLog->Log(_L("Mute Globle Volume"));
-        ((TMSGlobalVolEffect*) iGlobalVol)->GetLevel(iVolume);
+        static_cast<TMSGlobalVolEffect*>(iGlobalVol)->GetLevel(iVolume);
 
         if (iVolume != 0)
             {
-            iLog->Log(
-                    _L("GetGlobleVolume does not return expected Mute value!!! returned Volume = %d"),
-                    iVolume);
+            iLog->Log(_L("GetGlobleVolume does not return expected Mute value!!! returned Volume = %d"), iVolume);
             return KErrUnexpectedValue;
             }
         }
@@ -1989,9 +1919,7 @@
 
     if (error != KErrNone)
         {
-        iLog->Log(
-                _L("CTmsAudioServicesTestClass::AddGlobalRoutingObserver failed error [%d]"),
-                error);
+        iLog->Log(_L("CTmsAudioServicesTestClass::AddGlobalRoutingObserver failed error [%d]"), error);
         }
     return error;
     }
@@ -2008,9 +1936,7 @@
 
     if (error != KErrNone)
         {
-        iLog->Log(
-                _L("CTmsAudioServicesTestClass::DeleteGlobalRoutingObserver failed error [%d]"),
-                error);
+        iLog->Log(_L("CTmsAudioServicesTestClass::DeleteGlobalRoutingObserver failed error [%d]"), error);
         }
     return error;
     }
@@ -2026,59 +1952,43 @@
         if (OutputType == KTagNone)
             {
             error = iTmsGlobalRouting->SetOutput(TMS_AUDIO_OUTPUT_NONE);
-            iLog->Log(
-                    _L("CTmsAudioServicesTestClass::SetOutputDevice - TMS_AUDIO_OUTPUT_NONE, error:[%d] "),
-                    error);
+            iLog->Log(_L("CTmsAudioServicesTestClass::SetOutputDevice - TMS_AUDIO_OUTPUT_NONE, error:[%d] "), error);
             }
         else if (OutputType == KTagPublic)
             {
             error = iTmsGlobalRouting->SetOutput(TMS_AUDIO_OUTPUT_PUBLIC);
-            iLog->Log(
-                    _L("CTmsAudioServicesTestClass::SetOutputDevice - TMS_AUDIO_OUTPUT_PUBLIC, error:[%d] "),
-                    error);
+            iLog->Log(_L("CTmsAudioServicesTestClass::SetOutputDevice - TMS_AUDIO_OUTPUT_PUBLIC, error:[%d] "), error);
             }
         else if (OutputType == KTagPrivate)
             {
             error = iTmsGlobalRouting->SetOutput(TMS_AUDIO_OUTPUT_PRIVATE);
-            iLog->Log(
-                    _L ("CTmsAudioServicesTestClass::SetOutputDevice - TMS_AUDIO_OUTPUT_PRIVATE, error:[%d] "),
-                    error);
+            iLog->Log(_L ("CTmsAudioServicesTestClass::SetOutputDevice - TMS_AUDIO_OUTPUT_PRIVATE, error:[%d] "), error);
             }
         else if (OutputType == KTagHandset)
             {
             error = iTmsGlobalRouting->SetOutput(TMS_AUDIO_OUTPUT_HANDSET);
-            iLog->Log(
-                    _L("CTmsAudioServicesTestClass::SetOutputDevice - TMS_AUDIO_OUTPUT_HANDSET, error:[%d] "),
-                    error);
+            iLog->Log(_L("CTmsAudioServicesTestClass::SetOutputDevice - TMS_AUDIO_OUTPUT_HANDSET, error:[%d] "), error);
             }
         else if (OutputType == KTagLoudspeaker)
             {
             error = iTmsGlobalRouting->SetOutput(TMS_AUDIO_OUTPUT_LOUDSPEAKER);
-            iLog->Log(
-                    _L("CTmsAudioServicesTestClass::SetOutputDevice - TMS_AUDIO_OUTPUT_LOUDSPEAKER, error:[%d] "),
-                    error);
+            iLog->Log(_L("CTmsAudioServicesTestClass::SetOutputDevice - TMS_AUDIO_OUTPUT_LOUDSPEAKER, error:[%d] "), error);
             }
         else if (OutputType == KTagWiredAccessory)
             {
             error = iTmsGlobalRouting->SetOutput(
                     TMS_AUDIO_OUTPUT_WIRED_ACCESSORY);
-            iLog->Log(
-                    _L("CTmsAudioServicesTestClass::SetOutputDevice - TMS_AUDIO_OUTPUT_WIRED_ACCESSORY, error:[%d] "),
-                    error);
+            iLog->Log(_L("CTmsAudioServicesTestClass::SetOutputDevice - TMS_AUDIO_OUTPUT_WIRED_ACCESSORY, error:[%d] "), error);
             }
         else if (OutputType == KTagAccessory)
             {
             error = iTmsGlobalRouting->SetOutput(TMS_AUDIO_OUTPUT_ACCESSORY);
-            iLog->Log(
-                    _L("CTmsAudioServicesTestClass::SetOutputDevice - TMS_AUDIO_OUTPUT_ACCESSORY, error:[%d] "),
-                    error);
+            iLog->Log(_L("CTmsAudioServicesTestClass::SetOutputDevice - TMS_AUDIO_OUTPUT_ACCESSORY, error:[%d] "), error);
             }
         else if (OutputType == KTagTTY)
             {
             error = iTmsGlobalRouting->SetOutput(TMS_AUDIO_OUTPUT_ETTY);
-            iLog->Log(
-                    _L("CTmsAudioServicesTestClass::SetOutputDevice - TMS_AUDIO_OUTPUT_ETTY, error:[%d] "),
-                    error);
+            iLog->Log(_L("CTmsAudioServicesTestClass::SetOutputDevice - TMS_AUDIO_OUTPUT_ETTY, error:[%d] "), error);
             }
         else
             {
@@ -2101,9 +2011,7 @@
     if (iTmsGlobalRouting)
         {
         error = iTmsGlobalRouting->GetOutput(iDevice);
-        iLog->Log(
-                _L("CTmsAudioServicesTestClass::GetOutput, error:[%d] iDevice:[%d]"),
-                error, iDevice);
+        iLog->Log(_L("CTmsAudioServicesTestClass::GetOutput, error:[%d] iDevice:[%d]"), error, iDevice);
         }
 
     if (error != KErrNone)
@@ -2120,9 +2028,7 @@
             if (iDevice != TMS_AUDIO_OUTPUT_NONE)
                 {
                 error = KErrUnexpectedValue;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::GetOutput - not expected output, error:[%d] "),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::GetOutput - not expected output, error:[%d] "), error);
                 }
             }
         else if (OutputType == KTagPublic)
@@ -2130,9 +2036,7 @@
             if (iDevice != TMS_AUDIO_OUTPUT_PUBLIC)
                 {
                 error = KErrUnexpectedValue;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::GetOutput - TMS_AUDIO_OUTPUT_PUBLIC, error:[%d] "),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::GetOutput - TMS_AUDIO_OUTPUT_PUBLIC, error:[%d] "), error);
                 }
             }
         else if (OutputType == KTagPrivate)
@@ -2140,9 +2044,7 @@
             if (iDevice != TMS_AUDIO_OUTPUT_PRIVATE)
                 {
                 error = KErrUnexpectedValue;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::GetOutput - TMS_AUDIO_OUTPUT_PRIVATE, error:[%d] "),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::GetOutput - TMS_AUDIO_OUTPUT_PRIVATE, error:[%d] "), error);
                 }
             }
         else if (OutputType == KTagHandset)
@@ -2150,9 +2052,7 @@
             if (iDevice != TMS_AUDIO_OUTPUT_HANDSET)
                 {
                 error = KErrUnexpectedValue;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::GetOutput - not expected output, error:[%d] "),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::GetOutput - not expected output, error:[%d] "), error);
                 }
             }
         else if (OutputType == KTagLoudspeaker)
@@ -2160,9 +2060,7 @@
             if (iDevice != TMS_AUDIO_OUTPUT_LOUDSPEAKER)
                 {
                 error = KErrUnexpectedValue;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::GetOutput - not expected output, error:[%d] "),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::GetOutput - not expected output, error:[%d] "), error);
                 }
             }
         else if (OutputType == KTagWiredAccessory)
@@ -2170,9 +2068,7 @@
             if (iDevice != TMS_AUDIO_OUTPUT_WIRED_ACCESSORY)
                 {
                 error = KErrUnexpectedValue;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::GetOutput - not expected output, error:[%d] "),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::GetOutput - not expected output, error:[%d] "), error);
                 }
             }
         else if (OutputType == KTagAccessory)
@@ -2180,9 +2076,7 @@
             if (iDevice != TMS_AUDIO_OUTPUT_ACCESSORY)
                 {
                 error = KErrUnexpectedValue;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::GetOutput - not expected output, error:[%d] "),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::GetOutput - not expected output, error:[%d] "), error);
                 }
             }
         else if (OutputType == KTagTTY)
@@ -2190,9 +2084,7 @@
             if (iDevice != TMS_AUDIO_OUTPUT_ETTY)
                 {
                 error = KErrUnexpectedValue;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::GetOutput - not expected output, error:[%d] "),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::GetOutput - not expected output, error:[%d] "), error);
                 }
             }
         else
@@ -2213,9 +2105,7 @@
     if (iTmsGlobalRouting)
         {
         error = iTmsGlobalRouting->GetPreviousOutput(iDevice);
-        iLog->Log(
-                _L("CTmsAudioServicesTestClass::GetPreviousOutput, error:[%d] "),
-                error);
+        iLog->Log(_L("CTmsAudioServicesTestClass::GetPreviousOutput, error:[%d] "), error);
         }
 
     if (error != KErrNone)
@@ -2232,9 +2122,7 @@
             if (iDevice != TMS_AUDIO_OUTPUT_NONE)
                 {
                 error = KErrUnexpectedValue;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::GetPreviousOutput - not expected output, error:[%d] "),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::GetPreviousOutput - not expected output, error:[%d] "), error);
                 }
             }
         else if (OutputType == KTagPublic)
@@ -2242,9 +2130,7 @@
             if (iDevice != TMS_AUDIO_OUTPUT_PUBLIC)
                 {
                 error = KErrUnexpectedValue;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::GetPreviousOutput - TMS_AUDIO_OUTPUT_PUBLIC, error:[%d] "),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::GetPreviousOutput - TMS_AUDIO_OUTPUT_PUBLIC, error:[%d] "), error);
                 }
             }
         else if (OutputType == KTagPrivate)
@@ -2252,9 +2138,7 @@
             if (iDevice != TMS_AUDIO_OUTPUT_PRIVATE)
                 {
                 error = KErrUnexpectedValue;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::GetPreviousOutput - TMS_AUDIO_OUTPUT_PRIVATE, error:[%d] "),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::GetPreviousOutput - TMS_AUDIO_OUTPUT_PRIVATE, error:[%d] "), error);
                 }
             }
         else if (OutputType == KTagHandset)
@@ -2262,9 +2146,7 @@
             if (iDevice != TMS_AUDIO_OUTPUT_HANDSET)
                 {
                 error = KErrUnexpectedValue;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::GetPreviousOutput - not expected output, error:[%d] "),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::GetPreviousOutput - not expected output, error:[%d] "), error);
                 }
             }
         else if (OutputType == KTagLoudspeaker)
@@ -2272,9 +2154,7 @@
             if (iDevice != TMS_AUDIO_OUTPUT_LOUDSPEAKER)
                 {
                 error = KErrUnexpectedValue;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::GetPreviousOutput - not expected output, error:[%d] "),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::GetPreviousOutput - not expected output, error:[%d] "), error);
                 }
             }
         else if (OutputType == KTagWiredAccessory)
@@ -2282,9 +2162,7 @@
             if (iDevice != TMS_AUDIO_OUTPUT_WIRED_ACCESSORY)
                 {
                 error = KErrUnexpectedValue;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::GetPreviousOutput - not expected output, error:[%d] "),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::GetPreviousOutput - not expected output, error:[%d] "), error);
                 }
             }
         else if (OutputType == KTagAccessory)
@@ -2292,9 +2170,7 @@
             if (iDevice != TMS_AUDIO_OUTPUT_ACCESSORY)
                 {
                 error = KErrUnexpectedValue;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::GetPreviousOutput - not expected output, error:[%d] "),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::GetPreviousOutput - not expected output, error:[%d] "), error);
                 }
             }
         else if (OutputType == KTagTTY)
@@ -2302,9 +2178,7 @@
             if (iDevice != TMS_AUDIO_OUTPUT_ETTY)
                 {
                 error = KErrUnexpectedValue;
-                iLog->Log(
-                        _L("CTmsAudioServicesTestClass::GetPr eviousOutput - not expected output, error:[%d] "),
-                        error);
+                iLog->Log(_L("CTmsAudioServicesTestClass::GetPr eviousOutput - not expected output, error:[%d] "), error);
                 }
             }
         else
@@ -2328,8 +2202,7 @@
 
         if (error == KErrNone)
             {
-            iLog->Log(
-                    _L("CTmsAudioServicesTestClass::GetAvailableOutputs, display output"));
+            iLog->Log(_L("CTmsAudioServicesTestClass::GetAvailableOutputs, display output"));
             std::vector<guint>::iterator iteroutputs =
                     iAvailableoutputs.begin();
 
@@ -2340,9 +2213,7 @@
             }
         else
             {
-            iLog->Log(
-                    _L("CTmsAudioServicesTestClass::GetAvailableOutputs failed, error = %d"),
-                    error);
+            iLog->Log(_L("CTmsAudioServicesTestClass::GetAvailableOutputs failed, error = %d"), error);
             }
         }
     else
@@ -2446,21 +2317,16 @@
 
     if (error == KErrNone)
         {
-        iLog->Log(
-                _L("CTmsAudioServicesTestClass::GetBitRateList - display supported bitRate list"));
+        iLog->Log(_L("CTmsAudioServicesTestClass::GetBitRateList - display supported bitRate list"));
         std::vector<guint>::iterator itBitrates = iBitratesVector.begin();
         for (; itBitrates <= iBitratesVector.end(); itBitrates++)
             {
-            iLog->Log(
-                    _L("CTmsAudioServicesTestClass::GetBitRateList BR: %d"),
-                    *itBitrates);
+            iLog->Log(_L("CTmsAudioServicesTestClass::GetBitRateList BR: %d"), *itBitrates);
             }
         }
     else
         {
-        iLog->Log(
-                _L("CTmsAudioServicesTestClass::GetBitRateList failed. error: %d"),
-                error);
+        iLog->Log(_L("CTmsAudioServicesTestClass::GetBitRateList failed. error: %d"), error);
         }
     return error;
     }
@@ -2559,13 +2425,13 @@
     switch (iUpLinkCodec)
         {
         case TMS_FORMAT_G711:
-            error = ((TMSG711Format*) iTmsFormatUp)->GetVADMode(aVad);
+            error = static_cast<TMSG711Format*>(iTmsFormatUp)->GetVADMode(aVad);
             break;
         case TMS_FORMAT_G729:
-            error = ((TMSG729Format*) iTmsFormatUp)->GetVADMode(aVad);
+            error = static_cast<TMSG729Format*>(iTmsFormatUp)->GetVADMode(aVad);
             break;
         case TMS_FORMAT_ILBC:
-            error = ((TMSILBCFormat*) iTmsFormatUp)->GetVADMode(aVad);
+            error = static_cast<TMSILBCFormat*>(iTmsFormatUp)->GetVADMode(aVad);
             break;
         default:
             break;
@@ -2590,13 +2456,13 @@
     switch (iUpLinkCodec)
         {
         case TMS_FORMAT_G711:
-            error = ((TMSG711Format*) iTmsFormatUp)->SetVADMode(iVad);
+            error = static_cast<TMSG711Format*>(iTmsFormatUp)->SetVADMode(iVad);
             break;
         case TMS_FORMAT_G729:
-            error = ((TMSG729Format*) iTmsFormatUp)->SetVADMode(iVad);
+            error = static_cast<TMSG729Format*>(iTmsFormatUp)->SetVADMode(iVad);
             break;
         case TMS_FORMAT_ILBC:
-            error = ((TMSILBCFormat*) iTmsFormatUp)->SetVADMode(iVad);
+            error = static_cast<TMSILBCFormat*>(iTmsFormatUp)->SetVADMode(iVad);
             break;
         default:
             break;
@@ -2616,7 +2482,7 @@
         if ((linkType == KTagUplink) && (iUpLinkCodec == TMS_FORMAT_G711))
             {
             TMSG711CodecMode aMode;
-            ((TMSG711Format*) iTmsFormatUp)->GetMode(aMode);
+            static_cast<TMSG711Format*>(iTmsFormatUp)->GetMode(aMode);
 
             if (aMode == TMS_G711_CODEC_MODE_ALAW)
                 {
@@ -2635,7 +2501,7 @@
                 && (iUpLinkCodec == TMS_FORMAT_ILBC))
             {
             TMSILBCCodecMode aMode;
-            ((TMSILBCFormat*) iTmsFormatUp)->GetMode(aMode);
+            static_cast<TMSILBCFormat*>(iTmsFormatUp)->GetMode(aMode);
 
             if (aMode == TMS_ILBC_CODEC_MODE_20MS_FRAME)
                 {
@@ -2654,7 +2520,7 @@
                 && (iDnLinkCodec == TMS_FORMAT_G711))
             {
             TMSG711CodecMode aMode;
-            ((TMSG711Format*) iTmsFormatDn)->GetMode(aMode);
+            static_cast<TMSG711Format*>(iTmsFormatDn)->GetMode(aMode);
 
             if (aMode == TMS_G711_CODEC_MODE_ALAW)
                 {
@@ -2673,7 +2539,7 @@
                 && (iDnLinkCodec == TMS_FORMAT_ILBC))
             {
             TMSILBCCodecMode aMode;
-            ((TMSILBCFormat*) iTmsFormatDn)->GetMode(aMode);
+            static_cast<TMSILBCFormat*>(iTmsFormatDn)->GetMode(aMode);
 
             if (aMode == TMS_ILBC_CODEC_MODE_20MS_FRAME)
                 {
@@ -2716,54 +2582,56 @@
                 && (mode == KTagALaw))
             {
             iLog->Log(_L("UPL Mode Set: aLaw"));
-            ((TMSG711Format*) iTmsFormatUp)->SetMode(TMS_G711_CODEC_MODE_ALAW);
+            static_cast<TMSG711Format*>(iTmsFormatUp)->SetMode(
+                    TMS_G711_CODEC_MODE_ALAW);
             }
         else if ((linkType == KTagUplink)
                 && (iUpLinkCodec == TMS_FORMAT_G711) && (mode == KTagULaw))
             {
             iLog->Log(_L("UPL Mode Set: uLaw"));
-            ((TMSG711Format*) iTmsFormatUp)->SetMode(
+            static_cast<TMSG711Format*>(iTmsFormatUp)->SetMode(
                     TMS_G711_CODEC_MODE_MULAW);
             }
         else if ((linkType == KTagUplink)
                 && (iUpLinkCodec == TMS_FORMAT_ILBC) && (mode == KTag20ms))
             {
             iLog->Log(_L("UPL Mode Set: 20ms frame"));
-            ((TMSILBCFormat*) iTmsFormatUp)->SetMode(
+            static_cast<TMSILBCFormat*>(iTmsFormatUp)->SetMode(
                     TMS_ILBC_CODEC_MODE_20MS_FRAME);
             }
         else if ((linkType == KTagUplink)
                 && (iUpLinkCodec == TMS_FORMAT_ILBC) && (mode == KTag30ms))
             {
             iLog->Log(_L("UPL Mode Set: 30ms frame"));
-            ((TMSILBCFormat*) iTmsFormatUp)->SetMode(
+            static_cast<TMSILBCFormat*>(iTmsFormatUp)->SetMode(
                     TMS_ILBC_CODEC_MODE_30MS_FRAME);
             }
         else if ((linkType == KTagDnlink)
                 && (iDnLinkCodec == TMS_FORMAT_G711) && (mode == KTagALaw))
             {
             iLog->Log(_L("DNL Mode Set: aLaw"));
-            ((TMSG711Format*) iTmsFormatDn)->SetMode(TMS_G711_CODEC_MODE_ALAW);
+            static_cast<TMSG711Format*>(iTmsFormatDn)->SetMode(
+                    TMS_G711_CODEC_MODE_ALAW);
             }
         else if ((linkType == KTagDnlink)
                 && (iDnLinkCodec == TMS_FORMAT_G711) && (mode == KTagULaw))
             {
             iLog->Log(_L("DNL Mode Set: uLaw"));
-            ((TMSG711Format*) iTmsFormatDn)->SetMode(
+            static_cast<TMSG711Format*>(iTmsFormatDn)->SetMode(
                     TMS_G711_CODEC_MODE_MULAW);
             }
         else if ((linkType == KTagDnlink)
                 && (iDnLinkCodec == TMS_FORMAT_ILBC) && (mode == KTag20ms))
             {
             iLog->Log(_L("DNL Mode Set: 20ms frame"));
-            ((TMSILBCFormat*) iTmsFormatDn)->SetMode(
+            static_cast<TMSILBCFormat*>(iTmsFormatDn)->SetMode(
                     TMS_ILBC_CODEC_MODE_20MS_FRAME);
             }
         else if ((linkType == KTagDnlink)
                 && (iDnLinkCodec == TMS_FORMAT_ILBC) && (mode == KTag30ms))
             {
             iLog->Log(_L("DNL Mode Set: 30ms frame"));
-            ((TMSILBCFormat*) iTmsFormatDn)->SetMode(
+            static_cast<TMSILBCFormat*>(iTmsFormatDn)->SetMode(
                     TMS_ILBC_CODEC_MODE_30MS_FRAME);
             }
         else
@@ -2784,11 +2652,11 @@
     switch (iDnLinkCodec)
         {
         case TMS_FORMAT_G711:
-            error = ((TMSG711Format*) iTmsFormatDn)->GetCNG(aCng);
+            error = static_cast<TMSG711Format*>(iTmsFormatDn)->GetCNG(aCng);
             iLog->Log(_L("CNG: %d"), aCng);
             break;
         case TMS_FORMAT_ILBC:
-            error = ((TMSILBCFormat*) iTmsFormatDn)->GetCNG(aCng);
+            error = static_cast<TMSILBCFormat*>(iTmsFormatDn)->GetCNG(aCng);
             iLog->Log(_L("CNG: %d"), aCng);
             break;
         default:
@@ -2812,11 +2680,11 @@
     switch (iDnLinkCodec)
         {
         case TMS_FORMAT_G711:
-            ((TMSG711Format*) iTmsFormatDn)->SetCNG(iCng);
+            static_cast<TMSG711Format*>(iTmsFormatDn)->SetCNG(iCng);
             iLog->Log(_L("CNG set: %d"), iCng);
             break;
         case TMS_FORMAT_ILBC:
-            ((TMSILBCFormat*) iTmsFormatDn)->SetCNG(iCng);
+            static_cast<TMSILBCFormat*>(iTmsFormatDn)->SetCNG(iCng);
             iLog->Log(_L("CNG set: %d"), iCng);
             break;
         default:
@@ -2832,7 +2700,7 @@
     TBool aPlc = EFalse;
     if (iDnLinkCodec == TMS_FORMAT_G711)
         {
-        ((TMSG711Format*) iTmsFormatDn)->GetPlc(aPlc);
+        static_cast<TMSG711Format*>(iTmsFormatDn)->GetPlc(aPlc);
         iLog->Log(_L("PLC: %d"), aPlc);
         }
 
@@ -2852,7 +2720,7 @@
     iPlc = (iPlc) ? EFalse : ETrue;
     if (iDnLinkCodec == TMS_FORMAT_G711)
         {
-        error = ((TMSG711Format*) iTmsFormatDn)->SetPlc(iPlc);
+        error = static_cast<TMSG711Format*>(iTmsFormatDn)->SetPlc(iPlc);
         iLog->Log(_L("PLC set: %d"), iPlc);
         }
 
@@ -2909,9 +2777,7 @@
         {
         error = iTmsUplink->AddSource(iTmsMicSource);
         }
-    iLog->Log(
-            _L("CTmsAudioServicesTestClass::AddMicSrcToUplStream Error [%d]"),
-            error);
+    iLog->Log(_L("CTmsAudioServicesTestClass::AddMicSrcToUplStream Error [%d]"), error);
     return error;
     }
 
@@ -2924,9 +2790,7 @@
         {
         error = iTmsDnlink->AddSource(iTmsModemSource);
         }
-    iLog->Log(
-            _L("CTmsAudioServicesTestClass::AddModemSrcToDnlStream Error [%d]"),
-            error);
+    iLog->Log(_L("CTmsAudioServicesTestClass::AddModemSrcToDnlStream Error [%d]"), error);
     return error;
     }
 
@@ -2940,14 +2804,13 @@
         {
         error = iTmsDnlink->RemoveSource(iTmsClientSource);
         }
-    iLog->Log(
-            _L("CTmsAudioServicesTestClass::RemoveClientSrcFromDnlStream Error [%d]"),
-            error);
+    iLog->Log(_L("CTmsAudioServicesTestClass::RemoveClientSrcFromDnlStream Error [%d]"), error);
     return error;
     }
 
 // Note: CS and IP
-TInt CTmsAudioServicesTestClass::RemoveMicSrcFromUplStream(CStifItemParser& /*aItem*/)
+TInt CTmsAudioServicesTestClass::RemoveMicSrcFromUplStream(
+        CStifItemParser& /*aItem*/)
     {
     iLog->Log(_L("CTmsAudioServicesTestClass::RemoveMicSrcFromUplStream"));
     TInt error = KErrNone;
@@ -2955,14 +2818,13 @@
         {
         error = iTmsUplink->RemoveSource(iTmsMicSource);
         }
-    iLog->Log(
-            _L("CTmsAudioServicesTestClass::RemoveMicSrcFromUplStream Error [%d]"),
-            error);
+    iLog->Log(_L("CTmsAudioServicesTestClass::RemoveMicSrcFromUplStream Error [%d]"), error);
     return error;
     }
 
 // Note: CS ONLY
-TInt CTmsAudioServicesTestClass::RemoveModemSrcFromDnlStream(CStifItemParser& /*aItem*/)
+TInt CTmsAudioServicesTestClass::RemoveModemSrcFromDnlStream(
+        CStifItemParser& /*aItem*/)
     {
     iLog->Log(_L("CTmsAudioServicesTestClass::RemoveModemSrcFromDnlStream"));
     TInt error = KErrNone;
@@ -2970,9 +2832,7 @@
         {
         error = iTmsDnlink->RemoveSource(iTmsModemSource);
         }
-    iLog->Log(
-            _L("CTmsAudioServicesTestClass::RemoveModemSrcFromDnlStream Error [%d]"),
-            error);
+    iLog->Log(_L("CTmsAudioServicesTestClass::RemoveModemSrcFromDnlStream Error [%d]"), error);
     return error;
     }
 
@@ -2982,48 +2842,53 @@
     TInt error = KErrNone;
     if (iTmsClientSource)
         {
-        error = ((TMSClientSource*) iTmsClientSource)->AddObserver(*this,
-                NULL);
+        error = static_cast<TMSClientSource*>(iTmsClientSource)->AddObserver(
+                *this, NULL);
         }
     return error;
     }
 
-TInt CTmsAudioServicesTestClass::RemoveSourceObserver(CStifItemParser& /*aItem*/)
+TInt CTmsAudioServicesTestClass::RemoveSourceObserver(
+        CStifItemParser& /*aItem*/)
     {
     iLog->Log(_L("CTmsAudioServicesTestClass::RemoveSourceObserver"));
     TInt error = KErrNone;
     if (iTmsClientSource)
         {
-        error = ((TMSClientSource*) iTmsClientSource)->RemoveObserver(*this);
+        error = static_cast<TMSClientSource*>(iTmsClientSource)->RemoveObserver(
+                *this);
         }
     return error;
     }
 
-TInt CTmsAudioServicesTestClass::AddClientSinkToUplStream(CStifItemParser& /*aItem*/)
+TInt CTmsAudioServicesTestClass::AddClientSinkToUplStream(
+        CStifItemParser& /*aItem*/)
     {
     iLog->Log(_L("CTmsAudioServicesTestClass::AddClientSinkToUplStream"));
     TInt error = KErrNone;
     if (iTmsUplink && iTmsClientSink)
         {
-        //((TMSClientSink*) iTmsSink)->AddObserver(*this, NULL);
+        //static_cast<TMSClientSink*>(iTmsSink)->AddObserver(*this, NULL);
         error = iTmsUplink->AddSink(iTmsClientSink);
         }
     return error;
     }
 
-TInt CTmsAudioServicesTestClass::AddModemSinkToUplStream(CStifItemParser& /*aItem*/)
+TInt CTmsAudioServicesTestClass::AddModemSinkToUplStream(
+        CStifItemParser& /*aItem*/)
     {
     iLog->Log(_L("CTmsAudioServicesTestClass::AddModemSinkToUplStream"));
     TInt error = KErrNone;
     if (iTmsUplink && iTmsModemSink)
         {
-        //((TMSClientSink*) iTmsSink)->AddObserver(*this, NULL);
+        //static_cast<TMSClientSink*>(iTmsSink)->AddObserver(*this, NULL);
         error = iTmsUplink->AddSink(iTmsModemSink);
         }
     return error;
     }
 
-TInt CTmsAudioServicesTestClass::AddSpkrSinkToDnlStream(CStifItemParser& /*aItem*/)
+TInt CTmsAudioServicesTestClass::AddSpkrSinkToDnlStream(
+        CStifItemParser& /*aItem*/)
     {
     iLog->Log(_L("CTmsAudioServicesTestClass::AddSpkrSinkToDnlStream"));
     TInt error = KErrNone;
@@ -3058,7 +2923,8 @@
     return error;
     }
 
-TInt CTmsAudioServicesTestClass::RemoveSpkrSinkFromDnlStream(CStifItemParser& /*aItem*/)
+TInt CTmsAudioServicesTestClass::RemoveSpkrSinkFromDnlStream(
+        CStifItemParser& /*aItem*/)
     {
     iLog->Log(_L("CTmsAudioServicesTestClass::RemoveSpkrSinkFromDnlStream"));
     TInt error = KErrNone;
@@ -3075,7 +2941,8 @@
     TInt error = KErrNone;
     if (iTmsUplink && iTmsClientSink)
         {
-        error = ((TMSClientSink*) iTmsClientSink)->AddObserver(*this, NULL);
+        error = static_cast<TMSClientSink*>(iTmsClientSink)->AddObserver(*this,
+                NULL);
         }
     return error;
     }
@@ -3086,7 +2953,8 @@
     TInt error = KErrNone;
     if (iTmsUplink && iTmsClientSink)
         {
-        error = ((TMSClientSink*) iTmsClientSink)->RemoveObserver(*this);
+        error = static_cast<TMSClientSink*>(iTmsClientSink)->RemoveObserver(
+                *this);
         }
     return error;
     }
@@ -3100,7 +2968,8 @@
         status = iFactory->CreateEffect(TMS_EFFECT_VOLUME, iTmsDnlinkEffect);
         if (status == KErrNone)
             {
-            ((TMSVolumeEffect*) iTmsDnlinkEffect)->AddObserver(*this, NULL);
+            static_cast<TMSVolumeEffect*>(iTmsDnlinkEffect)->AddObserver(*this,
+                    NULL);
             }
         }
     RDebug::Printf("[TMS STIF] CreateVolumeEffect Return [%d]", status);
@@ -3117,16 +2986,17 @@
 
         if (status == KErrNone)
             {
-            ((TMSGlobalVolEffect*) iGlobalVol)->AddObserver(*this, NULL);
-            iLog->Log(
-                    _L("CTmsAudioServicesTestClass::CreateVolumeGlobleEffect - AddObserver"));
+            static_cast<TMSGlobalVolEffect*>(iGlobalVol)->AddObserver(*this,
+                    NULL);
+            iLog->Log(_L("CTmsAudioServicesTestClass::CreateVolumeGlobleEffect - AddObserver"));
             }
         }
     RDebug::Printf("[TMS STIF] CreateVolumeGlobleEffect Return [%d]", status);
     return status;
     }
 
-TInt CTmsAudioServicesTestClass::AddVolumeEffectToStream(CStifItemParser& /*aItem*/)
+TInt CTmsAudioServicesTestClass::AddVolumeEffectToStream(
+        CStifItemParser& /*aItem*/)
     {
     iLog->Log(_L("CTmsAudioServicesTestClass::AddVolumeEffectToStream"));
     TInt error = KErrNone;
@@ -3152,8 +3022,7 @@
 TInt CTmsAudioServicesTestClass::RemoveGlobleVolumeEffectToStream(
         CStifItemParser& /*aItem*/)
     {
-    iLog->Log(
-            _L("CTmsAudioServicesTestClass::RemoveGlobleVolumeEffectToStream"));
+    iLog->Log(_L("CTmsAudioServicesTestClass::RemoveGlobleVolumeEffectToStream"));
     TInt error = KErrNone;
     if (iTmsDnlink && iGlobalVol)
         {
@@ -3172,7 +3041,8 @@
         status = iFactory->CreateEffect(TMS_EFFECT_GAIN, iTmsUplinkEffect);
         if (status == KErrNone)
             {
-            ((TMSGainEffect*) iTmsUplinkEffect)->AddObserver(*this, NULL);
+            static_cast<TMSGainEffect*>(iTmsUplinkEffect)->AddObserver(*this,
+                    NULL);
             }
         }
     RDebug::Printf("[TMS STIF] CreateGainEffect Return [%d]", status);
@@ -3188,14 +3058,16 @@
         status = iFactory->CreateEffect(TMS_EFFECT_GLOBAL_GAIN, iGlobalGain);
         if (status == KErrNone)
             {
-            ((TMSGlobalGainEffect*) iGlobalGain)->AddObserver(*this, NULL);
+            static_cast<TMSGlobalGainEffect*>(iGlobalGain)->AddObserver(*this,
+                    NULL);
             }
         }
     RDebug::Printf("[TMS STIF] CreateGlobleGainEffect Return [%d]", status);
     return status;
     }
 
-TInt CTmsAudioServicesTestClass::AddGainEffectToStream(CStifItemParser& /*aItem*/)
+TInt CTmsAudioServicesTestClass::AddGainEffectToStream(
+        CStifItemParser& /*aItem*/)
     {
     iLog->Log(_L("CTmsAudioServicesTestClass::AddGainEffectToStream"));
     TInt error = KErrNone;
@@ -3206,7 +3078,8 @@
     return error;
     }
 
-TInt CTmsAudioServicesTestClass::AddGlobleGainEffectToStream(CStifItemParser& /*aItem*/)
+TInt CTmsAudioServicesTestClass::AddGlobleGainEffectToStream(
+        CStifItemParser& /*aItem*/)
     {
     iLog->Log(_L("CTmsAudioServicesTestClass::AddGlobleGainEffectToStream"));
     TInt error = KErrNone;
@@ -3220,8 +3093,7 @@
 TInt CTmsAudioServicesTestClass::RemoveGlobleGainEffectToStream(
         CStifItemParser& /*aItem*/)
     {
-    iLog->Log(
-            _L("CTmsAudioServicesTestClass::RemoveGlobleGainEffectToStream"));
+    iLog->Log(_L("CTmsAudioServicesTestClass::RemoveGlobleGainEffectToStream"));
     TInt error = KErrNone;
     if (iTmsUplink && iGlobalGain)
         {
@@ -3255,8 +3127,9 @@
 
         Mem::Copy(desptr, srcptr, srcsize);
 
-        ((TMSClientSource*) iTmsClientSource)->BufferFilled(*iPlayBuf);
-        ((TMSClientSink*) iTmsClientSink)->BufferProcessed(iRecBuf);
+        static_cast<TMSClientSource*>(iTmsClientSource)->BufferFilled(
+                *iPlayBuf);
+        static_cast<TMSClientSink*>(iTmsClientSink)->BufferProcessed(iRecBuf);
 
         iPlayBufReady = EFalse; // buf filled, ready for FillBuffer
         iRecBufReady = EFalse; // buf consumed, ready for EmptyBuffer
--- a/mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/src/TmsAudioServicesTestClassBlocksCallbacks.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/src/TmsAudioServicesTestClassBlocksCallbacks.cpp	Mon May 03 12:59:52 2010 +0300
@@ -19,11 +19,11 @@
 #include "TmsAudioServicesTestClass.h"
 #include "debug.h"
 
-void CTmsAudioServicesTestClass::TMSStreamEvent(TMSStream* stream,
+void CTmsAudioServicesTestClass::TMSStreamEvent(const TMSStream& stream,
         TMSSignalEvent event)
     {
     iLog->Log(_L("[tms cb]CTmsAudioServicesTestClass::TMSStreamEvent"));
-    switch (stream->GetStreamType())
+    switch (const_cast<TMSStream&>(stream).GetStreamType())
         {
         case TMS_STREAM_UPLINK:
             {
@@ -36,26 +36,22 @@
                         {
                         case TMS_STREAM_INITIALIZED:
                             iUpLinkStatus = INITIALIZED;
-                            iLog->Log(
-                                    _L("[tms cb]TMSStreamEvent EOpenUplinkComplete"));
+                            iLog->Log(_L("[tms cb]TMSStreamEvent EOpenUplinkComplete"));
                             ProcessEvent(EOpenUplinkComplete, KErrNone);
                             break;
                         case TMS_STREAM_UNINITIALIZED:
                             iUpLinkStatus = UNINITIALIZED;
-                            iLog->Log(
-                                    _L("[tms cb]TMSStreamEvent EUplinkClosed"));
+                            iLog->Log(_L("[tms cb]TMSStreamEvent EUplinkClosed"));
                             ProcessEvent(EUplinkClosed, KErrNone);
                             break;
                         case TMS_STREAM_PAUSED:
                             iUpLinkStatus = PAUSED;
-                            iLog->Log(
-                                    _L("[tms cb]TMSStreamEvent EStreamPaused"));
+                            iLog->Log(_L("[tms cb]TMSStreamEvent EStreamPaused"));
                             ProcessEvent(EStreamPaused, KErrNone);
                             break;
                         case TMS_STREAM_STARTED:
                             iUpLinkStatus = STARTED;
-                            iLog->Log(
-                                    _L("[tms cb]TMSStreamEvent EStreamStarted"));
+                            iLog->Log(_L("[tms cb]TMSStreamEvent EStreamStarted"));
                             ProcessEvent(EStreamStarted, KErrNone);
                             break;
                         default:
@@ -78,26 +74,22 @@
                         {
                         case TMS_STREAM_INITIALIZED:
                             iDnLinkStatus = INITIALIZED;
-                            iLog->Log(
-                                    _L("[tms cb]TMSStreamEvent EOpenDownlinkComplete"));
+                            iLog->Log(_L("[tms cb]TMSStreamEvent EOpenDownlinkComplete"));
                             ProcessEvent(EOpenDownlinkComplete, KErrNone);
                             break;
                         case TMS_STREAM_UNINITIALIZED:
                             iDnLinkStatus = UNINITIALIZED;
-                            iLog->Log(
-                                    _L("[tms cb]TMSStreamEvent EDownlinkClosed"));
+                            iLog->Log(_L("[tms cb]TMSStreamEvent EDownlinkClosed"));
                             ProcessEvent(EDownlinkClosed, KErrNone);
                             break;
                         case TMS_STREAM_PAUSED:
                             iDnLinkStatus = PAUSED;
-                            iLog->Log(
-                                    _L("[tms cb]TMSStreamEvent EStreamPaused"));
+                            iLog->Log(_L("[tms cb]TMSStreamEvent EStreamPaused"));
                             ProcessEvent(EStreamPaused, KErrNone);
                             break;
                         case TMS_STREAM_STARTED:
                             iDnLinkStatus = STARTED;
-                            iLog->Log(
-                                    _L("[tms cb]TMSStreamEvent EStreamStarted"));
+                            iLog->Log(_L("[tms cb]TMSStreamEvent EStreamStarted"));
                             ProcessEvent(EStreamStarted, KErrNone);
                             break;
                         default:
@@ -128,32 +120,32 @@
         }
     }
 
-void CTmsAudioServicesTestClass::BufferProcessed(TMSBuffer* /*buffer*/,
+void CTmsAudioServicesTestClass::BufferProcessed(const TMSBuffer* /*buffer*/,
         gint /*reason*/)
     {
     iLog->Log(_L("[tms cb]CTmsAudioServicesTestClass::BufferProcessed"));
     }
 
 //From TMSClientSinkObserver
-void CTmsAudioServicesTestClass::ProcessBuffer(TMSBuffer* buffer)
+void CTmsAudioServicesTestClass::ProcessBuffer(const TMSBuffer* buffer)
     {
     iLog->Log(_L("[tms cb]CTmsAudioServicesTestClass::ProcessBuffer"));
     ProcessEvent(EEmptyBuffer, KErrNone);
     iRecBufReady = ETrue;
-    iRecBuf = buffer;
+    iRecBuf = const_cast<TMSBuffer*>(buffer);
     if (iUpLinkStatus == STARTED)
         {
         // Process recorded buffer here.
         DoLoopback();
-        //  ((TMSClientSink*)iTmsSink)->BufferProcessed(iRecBuf);
+        //static_cast<TMSClientSink*>(iTmsSink)->BufferProcessed(iRecBuf);
         }
     }
 
-void CTmsAudioServicesTestClass::EffectsEvent(TMSEffect* tmseffect,
+void CTmsAudioServicesTestClass::EffectsEvent(const TMSEffect& tmseffect,
         TMSSignalEvent /*event*/)
     {
     TMSEffectType effecttype;
-    tmseffect->GetType(effecttype);
+    const_cast<TMSEffect&>(tmseffect).GetType(effecttype);
     switch (effecttype)
         {
         case TMS_EFFECT_VOLUME:
@@ -166,7 +158,7 @@
 
 // From TMSGlobalRoutingObserver
 void CTmsAudioServicesTestClass::GlobalRoutingEvent(
-        TMSGlobalRouting* /*routing*/, TMSSignalEvent event,
+        const TMSGlobalRouting& /*routing*/, TMSSignalEvent event,
         TMSAudioOutput /*output*/)
     {
     iLog->Log(_L("[tms cb]CTmsAudioServicesTestClass::GlobalRoutingEvent"));
--- a/mmserv/group/bld.inf	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/group/bld.inf	Mon May 03 12:59:52 2010 +0300
@@ -27,6 +27,7 @@
 #include "../callaudiocontrol/group/bld.inf"
 #include "../metadatautility/Group/bld.inf"
 #include "../radioutility/group/bld.inf"
+#include "../sts/group/bld.inf"
 #include "../thumbnailengine/Group/bld.inf"
 #include "../tms/group/bld.inf"
 #include "../voipaudioservices/group/bld.inf"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/bwins/FmPresetUtilityu.def	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,23 @@
+EXPORTS
+	??1CRadioFmPresetUtility@@UAE@XZ @ 1 NONAME ; CRadioFmPresetUtility::~CRadioFmPresetUtility(void)
+	?DeletePresetL@CRadioFmPresetUtility@@UAEXH@Z @ 2 NONAME ; void CRadioFmPresetUtility::DeletePresetL(int)
+	?GetFirstPresetL@CRadioFmPresetUtility@@UBEXAAH@Z @ 3 NONAME ; void CRadioFmPresetUtility::GetFirstPresetL(int &) const
+	?GetMaxNumberOfPresets@CRadioFmPresetUtility@@UBEHAAH@Z @ 4 NONAME ; int CRadioFmPresetUtility::GetMaxNumberOfPresets(int &) const
+	?GetNextPresetL@CRadioFmPresetUtility@@UBEXHAAH@Z @ 5 NONAME ; void CRadioFmPresetUtility::GetNextPresetL(int, int &) const
+	?GetNumberOfPresets@CRadioFmPresetUtility@@UBEHAAH@Z @ 6 NONAME ; int CRadioFmPresetUtility::GetNumberOfPresets(int &) const
+	?GetPresetL@CRadioFmPresetUtility@@UAEXHAAV?$TBuf@$0CA@@@AAH@Z @ 7 NONAME ; void CRadioFmPresetUtility::GetPresetL(int, class TBuf<32> &, int &)
+	?NewL@CRadioFmPresetUtility@@SAPAV1@AAVMRadioPresetObserver@@@Z @ 8 NONAME ; class CRadioFmPresetUtility * CRadioFmPresetUtility::NewL(class MRadioPresetObserver &)
+	?SetPresetL@CRadioFmPresetUtility@@UAEXHABV?$TBuf@$0CA@@@H@Z @ 9 NONAME ; void CRadioFmPresetUtility::SetPresetL(int, class TBuf<32> const &, int)
+	?GetPresetFrequencyL@CRadioFmPresetUtility@@UAEXHAAH@Z @ 10 NONAME ; void CRadioFmPresetUtility::GetPresetFrequencyL(int, int &)
+	?GetPresetNameL@CRadioFmPresetUtility@@UAEXHAAV?$TBuf@$0CA@@@@Z @ 11 NONAME ; void CRadioFmPresetUtility::GetPresetNameL(int, class TBuf<32> &)
+	?SetPresetFavouriteInfoL@CRadioFmPresetUtility@@QAEXHH@Z @ 12 NONAME ; void CRadioFmPresetUtility::SetPresetFavouriteInfoL(int, int)
+	?SetPresetUserRenameInfoL@CRadioFmPresetUtility@@QAEXHH@Z @ 13 NONAME ; void CRadioFmPresetUtility::SetPresetUserRenameInfoL(int, int)
+	?SetPresetPICodeL@CRadioFmPresetUtility@@QAEXHI@Z @ 14 NONAME ; void CRadioFmPresetUtility::SetPresetPICodeL(int, unsigned int)
+	?GetPresetUserRenameInfoL@CRadioFmPresetUtility@@QAEXHAAH@Z @ 15 NONAME ; void CRadioFmPresetUtility::GetPresetUserRenameInfoL(int, int &)
+	?GetPresetPtyL@CRadioFmPresetUtility@@QAEXHAAI@Z @ 16 NONAME ; void CRadioFmPresetUtility::GetPresetPtyL(int, unsigned int &)
+	?SetPresetPtyL@CRadioFmPresetUtility@@QAEXHI@Z @ 17 NONAME ; void CRadioFmPresetUtility::SetPresetPtyL(int, unsigned int)
+	?GetPresetPICodeL@CRadioFmPresetUtility@@QAEXHAAI@Z @ 18 NONAME ; void CRadioFmPresetUtility::GetPresetPICodeL(int, unsigned int &)
+	?SetPresetUrlL@CRadioFmPresetUtility@@QAEXHABV?$TBuf@$0EA@@@@Z @ 19 NONAME ; void CRadioFmPresetUtility::SetPresetUrlL(int, class TBuf<64> const &)
+	?GetPresetFavouriteInfoL@CRadioFmPresetUtility@@QAEXHAAH@Z @ 20 NONAME ; void CRadioFmPresetUtility::GetPresetFavouriteInfoL(int, int &)
+	?GetPresetUrlL@CRadioFmPresetUtility@@QAEXHAAV?$TBuf@$0EA@@@@Z @ 21 NONAME ; void CRadioFmPresetUtility::GetPresetUrlL(int, class TBuf<64> &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/bwins/presetutilityu.def	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,26 @@
+EXPORTS
+	?SetRenamedByUser@TPreset@@QAEXH@Z @ 1 NONAME ; void TPreset::SetRenamedByUser(int)
+	?Name@TPreset@@QBE?AVTPtrC16@@XZ @ 2 NONAME ; class TPtrC16 TPreset::Name(void) const
+	??1CPresetUtility@@UAE@XZ @ 3 NONAME ; CPresetUtility::~CPresetUtility(void)
+	?SetFavorite@TPreset@@QAEXH@Z @ 4 NONAME ; void TPreset::SetFavorite(int)
+	?SetFrequency@TPreset@@QAEXI@Z @ 5 NONAME ; void TPreset::SetFrequency(unsigned int)
+	?PiCode@TPreset@@QBEHXZ @ 6 NONAME ; int TPreset::PiCode(void) const
+	?MyExternalizedDataSize@TPreset@@UBEIXZ @ 7 NONAME ; unsigned int TPreset::MyExternalizedDataSize(void) const
+	?LocalStation@TPreset@@QBEHXZ @ 8 NONAME ; int TPreset::LocalStation(void) const
+	?ExternalizeL@TPreset@@UBEXAAVRWriteStream@@@Z @ 9 NONAME ; void TPreset::ExternalizeL(class RWriteStream &) const
+	?SetGenre@TPreset@@QAEXH@Z @ 10 NONAME ; void TPreset::SetGenre(int)
+	?Genre@TPreset@@QBEHXZ @ 11 NONAME ; int TPreset::Genre(void) const
+	?Favorite@TPreset@@QBEHXZ @ 12 NONAME ; int TPreset::Favorite(void) const
+	?SetName@TPreset@@QAEXABV?$TBuf@$0CA@@@@Z @ 13 NONAME ; void TPreset::SetName(class TBuf<32> const &)
+	?Frequency@TPreset@@QBEIXZ @ 14 NONAME ; unsigned int TPreset::Frequency(void) const
+	?NewL@CPresetUtilityBody@@SAPAV1@XZ @ 15 NONAME ; class CPresetUtilityBody * CPresetUtilityBody::NewL(void)
+	?SetPiCode@TPreset@@QAEXH@Z @ 16 NONAME ; void TPreset::SetPiCode(int)
+	?SetLocalStation@TPreset@@QAEXH@Z @ 17 NONAME ; void TPreset::SetLocalStation(int)
+	??1CPresetUtilityBody@@UAE@XZ @ 18 NONAME ; CPresetUtilityBody::~CPresetUtilityBody(void)
+	?RenamedByUser@TPreset@@QBEHXZ @ 19 NONAME ; int TPreset::RenamedByUser(void) const
+	??0TPreset@@QAE@XZ @ 20 NONAME ; TPreset::TPreset(void)
+	?Url@TPreset@@QBE?AVTPtrC16@@XZ @ 21 NONAME ; class TPtrC16 TPreset::Url(void) const
+	?InternalizeL@TPreset@@UAEXAAVRReadStream@@@Z @ 22 NONAME ; void TPreset::InternalizeL(class RReadStream &)
+	?NewL@CPresetUtility@@SAPAV1@XZ @ 23 NONAME ; class CPresetUtility * CPresetUtility::NewL(void)
+	?SetUrl@TPreset@@QAEXABV?$TBuf@$0DC@@@@Z @ 24 NONAME ; void TPreset::SetUrl(class TBuf<50> const &)
+
Binary file mmserv/radioutility/presetutility/cenrep/10207b87.txt has changed
Binary file mmserv/radioutility/presetutility/conf/presetutility.confml has changed
Binary file mmserv/radioutility/presetutility/conf/presetutility_10207B87.crml has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/eabi/FmPresetUtilityu.def	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,40 @@
+EXPORTS
+	_ZN21CRadioFmPresetUtility10GetPresetLEiR4TBufILi32EERi @ 1 NONAME
+	_ZN21CRadioFmPresetUtility10SetPresetLEiRK4TBufILi32EEi @ 2 NONAME
+	_ZN21CRadioFmPresetUtility13DeletePresetLEi @ 3 NONAME
+	_ZN21CRadioFmPresetUtility4NewLER20MRadioPresetObserver @ 4 NONAME
+	_ZN21CRadioFmPresetUtilityD0Ev @ 5 NONAME
+	_ZN21CRadioFmPresetUtilityD1Ev @ 6 NONAME
+	_ZN21CRadioFmPresetUtilityD2Ev @ 7 NONAME
+	_ZNK21CRadioFmPresetUtility14GetNextPresetLEiRi @ 8 NONAME
+	_ZNK21CRadioFmPresetUtility15GetFirstPresetLERi @ 9 NONAME
+	_ZNK21CRadioFmPresetUtility18GetNumberOfPresetsERi @ 10 NONAME
+	_ZNK21CRadioFmPresetUtility21GetMaxNumberOfPresetsERi @ 11 NONAME
+	_ZTI21CRadioFmPresetUtility @ 12 NONAME ; #<TI>#
+	_ZTI25CCentralRepositoryHandler @ 13 NONAME ; #<TI>#
+	_ZTIN21CRadioFmPresetUtility5CBodyE @ 14 NONAME ; #<TI>#
+	_ZTV21CRadioFmPresetUtility @ 15 NONAME ; #<VT>#
+	_ZTV25CCentralRepositoryHandler @ 16 NONAME ; #<VT>#
+	_ZTVN21CRadioFmPresetUtility5CBodyE @ 17 NONAME ; #<VT>#
+	_ZThn4_N21CRadioFmPresetUtility13DeletePresetLEi @ 18 NONAME ; #<thunk>#
+	_ZThn4_NK21CRadioFmPresetUtility14GetNextPresetLEiRi @ 19 NONAME ; #<thunk>#
+	_ZThn4_NK21CRadioFmPresetUtility15GetFirstPresetLERi @ 20 NONAME ; #<thunk>#
+	_ZThn4_NK21CRadioFmPresetUtility18GetNumberOfPresetsERi @ 21 NONAME ; #<thunk>#
+	_ZThn4_NK21CRadioFmPresetUtility21GetMaxNumberOfPresetsERi @ 22 NONAME ; #<thunk>#
+	_ZThn8_N21CRadioFmPresetUtility10GetPresetLEiR4TBufILi32EERi @ 23 NONAME ; #<thunk>#
+	_ZThn8_N21CRadioFmPresetUtility10SetPresetLEiRK4TBufILi32EEi @ 24 NONAME ; #<thunk>#
+	_ZN21CRadioFmPresetUtility14GetPresetNameLEiR4TBufILi32EE @ 25 NONAME
+	_ZN21CRadioFmPresetUtility19GetPresetFrequencyLEiRi @ 26 NONAME
+	_ZThn8_N21CRadioFmPresetUtility14GetPresetNameLEiR4TBufILi32EE @ 27 NONAME ; #<thunk>#
+	_ZThn8_N21CRadioFmPresetUtility19GetPresetFrequencyLEiRi @ 28 NONAME ; #<thunk>#
+	_ZN21CRadioFmPresetUtility13GetPresetPtyLEiRj @ 29 NONAME
+	_ZN21CRadioFmPresetUtility13GetPresetUrlLEiR4TBufILi64EE @ 30 NONAME
+	_ZN21CRadioFmPresetUtility13SetPresetPtyLEij @ 31 NONAME
+	_ZN21CRadioFmPresetUtility13SetPresetUrlLEiRK4TBufILi64EE @ 32 NONAME
+	_ZN21CRadioFmPresetUtility16GetPresetPICodeLEiRj @ 33 NONAME
+	_ZN21CRadioFmPresetUtility16SetPresetPICodeLEij @ 34 NONAME
+	_ZN21CRadioFmPresetUtility23GetPresetFavouriteInfoLEiRi @ 35 NONAME
+	_ZN21CRadioFmPresetUtility23SetPresetFavouriteInfoLEii @ 36 NONAME
+	_ZN21CRadioFmPresetUtility24GetPresetUserRenameInfoLEiRi @ 37 NONAME
+	_ZN21CRadioFmPresetUtility24SetPresetUserRenameInfoLEii @ 38 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/eabi/presetutilityu.def	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,35 @@
+EXPORTS
+	_ZN14CPresetUtility4NewLEv @ 1 NONAME
+	_ZN14CPresetUtilityD0Ev @ 2 NONAME
+	_ZN14CPresetUtilityD1Ev @ 3 NONAME
+	_ZN14CPresetUtilityD2Ev @ 4 NONAME
+	_ZN18CPresetUtilityBody4NewLEv @ 5 NONAME
+	_ZN18CPresetUtilityBodyD0Ev @ 6 NONAME
+	_ZN18CPresetUtilityBodyD1Ev @ 7 NONAME
+	_ZN18CPresetUtilityBodyD2Ev @ 8 NONAME
+	_ZN7TPreset11SetFavoriteEi @ 9 NONAME
+	_ZN7TPreset12InternalizeLER11RReadStream @ 10 NONAME
+	_ZN7TPreset12SetFrequencyEj @ 11 NONAME
+	_ZN7TPreset15SetLocalStationEi @ 12 NONAME
+	_ZN7TPreset16SetRenamedByUserEi @ 13 NONAME
+	_ZN7TPreset6SetUrlERK4TBufILi50EE @ 14 NONAME
+	_ZN7TPreset7SetNameERK4TBufILi32EE @ 15 NONAME
+	_ZN7TPreset8SetGenreEi @ 16 NONAME
+	_ZN7TPreset9SetPiCodeEi @ 17 NONAME
+	_ZN7TPresetC1Ev @ 18 NONAME
+	_ZN7TPresetC2Ev @ 19 NONAME
+	_ZNK7TPreset12ExternalizeLER12RWriteStream @ 20 NONAME
+	_ZNK7TPreset12LocalStationEv @ 21 NONAME
+	_ZNK7TPreset13RenamedByUserEv @ 22 NONAME
+	_ZNK7TPreset22MyExternalizedDataSizeEv @ 23 NONAME
+	_ZNK7TPreset3UrlEv @ 24 NONAME
+	_ZNK7TPreset4NameEv @ 25 NONAME
+	_ZNK7TPreset5GenreEv @ 26 NONAME
+	_ZNK7TPreset6PiCodeEv @ 27 NONAME
+	_ZNK7TPreset8FavoriteEv @ 28 NONAME
+	_ZNK7TPreset9FrequencyEv @ 29 NONAME
+	_ZTI14CCenrepHandler @ 30 NONAME
+	_ZTI7TPreset @ 31 NONAME
+	_ZTV14CCenrepHandler @ 32 NONAME
+	_ZTV7TPreset @ 33 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/group/backup_registration.xml	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="yes"?>
+<backup_registration version="1.0">
+    <proxy_data_manager sid = "0x10202BE9" />
+    <restore requires_reboot = "no"/>
+</backup_registration>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/group/bld.inf	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,38 @@
+/*
+* Copyright (c) 2009 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:  Project build file for RadioPresetUtility
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+
+// Generic configuration interface for component cenrep settings
+// presetutility_10207B87 implementation specifics for cenrep data
+../conf/presetutility.confml                  MW_LAYER_CONFML(presetutility.confml)
+../conf/presetutility_10207B87.crml           MW_LAYER_CRML(presetutility_10207B87.crml)
+
+
+// iby files
+../rom/fmpresetutility.iby			CORE_MW_LAYER_IBY_EXPORT_PATH(fmpresetutility.iby)
+../rom/presetutility.iby			  CORE_MW_LAYER_IBY_EXPORT_PATH(presetutility.iby)
+
+
+PRJ_MMPFILES
+presetutility.mmp
+fmpresetutility.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/group/fmpresetutility.mmp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,46 @@
+/*
+* 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:
+* Project definition file for FmPresetUtility.
+*
+*/
+
+
+//#include <data_caging_paths.hrh>
+//#include <domain/osextensions/platform_paths.hrh>
+#include <platform_paths.hrh>
+
+TARGET          FmPresetUtility.dll
+TARGETTYPE      DLL
+CAPABILITY      CAP_GENERAL_DLL ReadUserData
+VENDORID        VID_DEFAULT
+UID             0x1000008D 0x10207B87
+VERSION 10.3
+
+SOURCEPATH      ../src/old_api
+SOURCE          radiofmpresetutility.cpp    // Compatibility api
+SOURCE          radiofmpresetcentralrepositoryhandler.cpp
+
+USERINCLUDE     ../inc
+
+MW_LAYER_SYSTEMINCLUDE
+
+LIBRARY			presetutility.lib
+LIBRARY         cenrepnotifhandler.lib
+LIBRARY         centralrepository.lib
+LIBRARY         euser.lib
+LIBRARY         estor.lib
+//LIBRARY         dsclient.lib
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/group/presetutility.mmp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,49 @@
+/*
+* 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:
+* Project definition file for RadioPresetUtility.
+*
+*/
+
+
+//#include <data_caging_paths.hrh>
+//#include <domain/osextensions/platform_paths.hrh>
+#include <platform_paths.hrh>
+
+TARGET          presetutility.dll // Temporarily renamed to not clash with the existing utility
+TARGETTYPE      DLL
+CAPABILITY      CAP_GENERAL_DLL ReadUserData
+VENDORID        VID_DEFAULT
+UID             0x1000008D 0x2002C307
+VERSION 10.3
+
+SOURCEPATH      ../src
+SOURCE          presetutility.cpp
+SOURCE          presetutilitybody.cpp
+SOURCE          preset.cpp
+SOURCE          cenrephandler.cpp
+SOURCE			cenrepbookkeeping.cpp
+USERINCLUDE     ../cenrep
+USERINCLUDE     ../src
+USERINCLUDE     ../inc
+
+MW_LAYER_SYSTEMINCLUDE
+
+LIBRARY         cenrepnotifhandler.lib
+LIBRARY         centralrepository.lib
+LIBRARY         euser.lib
+LIBRARY         estor.lib
+//LIBRARY         dsclient.lib
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/inc/cenrepbookkeeping.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,122 @@
+/*
+* Copyright (c) 2009 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:  This is a class, responsible of keeping track of existing presets
+*               and their indexes.
+*
+*
+*/
+
+#ifndef CCENREPBOOKKEEPING_H_
+#define CCENREPBOOKKEEPING_H_
+
+#include <e32base.h>
+
+class RWriteStream;
+class RReadStream;
+
+const TInt KMaxNumberOfPresetStations = 100;  // One temporarily used for internal book keeping
+
+#define  LENGTHOFUSEDINDEXLWORDSARRAY ((KMaxNumberOfPresetStations/32) + 1)
+/**
+ *  it is a class, responsible of keeping track of existing presets and their indexes.
+ */
+NONSHARABLE_CLASS( CCenrepBookKeeping ) : public CBase
+{
+public:
+
+    /**
+    * Default class constructor.
+    */
+    CCenrepBookKeeping();
+
+    /**
+    * Destructor of CCenrepBookKeeping class.
+    */
+    ~CCenrepBookKeeping();
+
+    /**
+    * Get the current number of presets.
+    * @return The number of presets.
+    */
+    TInt PresetCount() const;
+
+    /**
+    * Get the index of first preset.
+    * @return The first preset index.
+    */        
+    TInt FirstIndex() const;
+
+    /**
+    * Get the index of the next preset.
+    * @param aFromIndex -  Start from index after this.
+    * @return the next preset index.
+    */           
+    TInt NextIndex( TInt aFromIndex = 0 );
+
+    /**
+    * Find an unused preset index.
+    * @return Allocated index.
+    */           
+    TInt FindUnusedIndex() const;
+    
+    /**
+    * Check if given index is used.
+    * @return ETrue if used, otherwise EFalse 
+    */           
+    TBool IsIndexUsed( const TInt aIndex );
+
+    /**
+    * Add a preset.
+    * @param aIndex -  Proposed index.
+    * @return Used/Allocated index.
+    */           
+    void AddIndex( const TInt aIndex );
+
+    /**
+    * Remove a preset.
+    * @param aIndex -  Index of the preset to be removed.
+    * @return Used/Allocated index.
+    */           
+    void RemoveIndex( const TInt aIndex );
+
+    /**
+    * Clear all data.
+    * @return The first preset index.
+    */
+    void Clear();
+    
+    /**
+    * Gives descriptor pointer to bookkeeping's data.
+    * @return TPtr8 Descriptor that contains bookkeeping data.
+    */
+    TPtr8 BookKeepingData();
+
+private:
+
+    // This data is copied to Central Repository Key (buffer) as such without
+    // actual serialization.
+    // Therefore in order to keep backward incombatibility don't
+    // change the order of fields. Only the last array field can be allowed to grow.
+    // If a new field is added to the end, the preceding array field cannot grow anymore.
+    // Additionally the size of this structure should never shrink.
+    class TBookKeepingData 
+    {
+    public:
+        TInt iCount;    
+        TUint32 iUsedIndexLWords[ LENGTHOFUSEDINDEXLWORDSARRAY ];
+    } iBookKeepingData;
+
+};
+
+#endif // CCENREPBOOKKEEPING_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/inc/cenrephandler.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,141 @@
+/*
+* Copyright (c) 2009 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:  This is a wrapper class of Central Repository, responsible
+*               for the operations that need to access the central respository.
+*
+*
+*/
+
+#ifndef CCENREPHANDLER_H
+#define CCENREPHANDLER_H
+
+// System includes
+#include <e32base.h>
+
+// Constants
+const TInt KBufferLength = 20;
+const TInt KStreamBufferSize = 100;
+
+// Forward declarations
+class CRepository;
+class TPreset;
+class CCenrepBookKeeping;
+
+// Class declaration
+
+/**
+ *  it is a wrapper of Central Repository, responsible for the operations that need to access
+ *  the central respository.
+ */
+class CCenrepHandler : public CBase
+    {
+public:
+
+    /**
+    * Two-phased class constructor.
+    */
+    static CCenrepHandler* NewL();
+    
+    /**
+    * Destructor of CCenrepHandler class.
+    */
+    virtual ~CCenrepHandler();
+
+    /**
+    * Get the maximum number of presets.
+    * @return The maximum number of presets.
+    */
+    TInt MaxPresetCount() const;
+
+    /**
+    * Get the current number of presets.
+    * @return The number of presets.
+    */
+    TInt PresetCount() const;
+
+    /**
+    * Get the index of first preset.
+    * @return The first preset index.
+    */        
+    TInt FirstPreset() const;
+
+    /**
+    * Get the index of the next preset.
+    * @param aFromIndex -  Start from index after this.
+    * @return the next preset index.
+    */           
+    TInt NextPreset( TInt aFromIndex ) const;
+    
+    /**
+    * Delete the specified preset.
+    * Specifying aIndex < 0, will delete all presets.
+    * Has no effect if specified index contains no preset.
+    */
+    TInt DeletePreset( TInt aIndex );
+    
+    /**
+    * Save the preset.
+    * @param aPreset Preset object.
+    * @param aIndex -  Preset index.
+    * @return given/allocated(in case given value was -1) index.
+    */           
+    TInt SavePresetL( const TPreset& aPreset, TInt aIndex = -1 );
+    
+    
+    /**
+    * Read a preset.
+    * @param aIndex -  Preset index.
+    * @param aPreset Preset object to where to update the data.
+    * @return none
+    */           
+    void ReadPresetL( TInt aIndex, TPreset& aPreset );
+
+private:
+
+    /**
+    * Default class constructor.
+    */
+    CCenrepHandler();
+
+    /**
+    * Second phase class constructor.
+    */
+    void ConstructL();
+
+    /**
+    * Read bookkeeping information from the permanent storage.
+    */
+    void ReadBookKeepingL();
+
+    /**
+    * Save bookkeeping information to the permanent storage.
+    */
+    void SaveBookKeeping();
+        
+    /**
+    * Read preconfigured presets from the permanent storage.
+    */
+    void ReadPreDefinedPresetsL();
+
+private: // data
+
+    // Central Repository
+    CRepository*        iCentralRepository;
+
+    // Bookkeeping of existing presets
+    CCenrepBookKeeping* iBookKeeping;
+
+    };
+
+#endif  // CCENREPHANDLER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/inc/presetcrkeys.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,35 @@
+/*
+* Copyright (c) 2009 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:  Preset Utility's Central Repository key index definitions.
+*
+*
+*/
+
+
+#ifndef RADIOPRESETCRKEYS_H
+#define RADIOPRESETCRKEYS_H
+
+// Preset Utility UID
+const TUid KCRUidPresetUtility = {0x10207B87};
+
+// The first preset channel's location in central repository
+const TUint32 KRadioBookKeepingLocation = 0x00000001;
+const TUint32 KRadioPresetChannel1 = 0x00001000;
+const TUint32 KNbrOfParametersPerChannelSequence = 0x10;
+const TUint32 KChannelNameOffset = 0x0;
+const TUint32 KFrequencyOffset = 0x1;
+const TUint32 KUrlOffset = 0x2;
+const TUint32 KRestOfParametersOffset = 0xF;
+
+#endif // RADIOPRESETCRKEYS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/inc/presetutilitybody.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,74 @@
+/*
+* Copyright (c) 2009 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:  Preset Utility Body class.
+*
+*
+*/
+
+#ifndef C_PRESETUTILITYBODY_H
+#define C_PRESETUTILITYBODY_H
+
+#include <presetutility.h>
+
+class MPresetUtilityObserver;
+class CCenrepHandler;
+
+NONSHARABLE_CLASS( CPresetUtilityBody ) : public CPresetUtility
+    {
+public:
+
+    /**
+    * Two-phased class constructor.
+    */
+    IMPORT_C static CPresetUtilityBody* NewL();
+
+    /**
+    * Destructor of CPresetUtilityBody class.
+    */
+    IMPORT_C ~CPresetUtilityBody();
+
+// from base class CFmRadioPresetUtility
+
+    void SetObserver( MPresetUtilityObserver* aObserver );
+    TInt MaxNumberOfPresets() const;
+    TInt PresetCount() const;
+    TInt FirstPreset() const;
+    TInt NextPreset( TInt aFromIndex ) const;
+    TInt DeletePreset( TInt aIndex );
+    TInt SavePresetL( const TPreset& aPreset, TInt aIndex );
+    void ReadPresetL( TInt aIndex, TPreset& aPreset );
+
+private:
+
+    /**
+    * Default class constructor.
+    */
+    CPresetUtilityBody();
+
+    /**
+    * Second phase class constructor.
+    */
+    void ConstructL();
+
+private:
+
+    // Observer object
+    MPresetUtilityObserver*   iObserver;
+
+    // Central Repository interface
+    CCenrepHandler*         iCenrepHandler;
+
+    };
+
+#endif // C_PRESETUTILITYBODY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/inc/trace.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,596 @@
+/*
+* Copyright (c) 2009 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:
+* Trace macro definitions.
+*
+*/
+
+#ifndef TRACE_H
+#define TRACE_H
+
+#include <e32base.h> // TCleanupItem
+#include "traceconfiguration.hrh"
+
+#ifdef TRACE_INTO_FILE
+#include <flogger.h> // RFileLogger
+#else
+#include <e32debug.h> // RDebug
+#endif
+
+//-----------------------------------------------------------------------------
+// Constants
+//-----------------------------------------------------------------------------
+//
+
+// NOTE!
+// Replace all COMPONENT_NAME occurnaces with your own component / module name.
+
+/**
+* Prefix trace macro to complete tracing with component name.
+* Returns TDesC which can be used directly with RDebug or RFileLogger.
+*/
+#define _PREFIX_TRACE( aMsg ) TPtrC( (const TText*)L"[PresetUtility]: " L##aMsg )
+
+/**
+* Prefix error trace
+*/
+#define _PREFIX_ERROR( aMsg ) _PREFIX_TRACE( "[ERROR: %d]: " L##aMsg )
+
+/**
+* Prefix info trace.
+*/
+#define _PREFIX_INFO( aMsg ) _PREFIX_TRACE( "[INFO]: " L##aMsg )
+
+/**
+* Prefix macro for strings
+*/
+#define _PREFIX_CHAR( aMsg ) (const char*)"[PresetUtility]: " ##aMsg
+
+/**
+* Define needed directories if TRACE_INTO_FILE macro in use
+*/
+#ifdef TRACE_INTO_FILE
+
+    _LIT( KDir, "PresetUtility" );
+    _LIT( KFile, "PresetUtility_log.txt" );
+    _LIT( KFullPath, "c:\\logs\\PresetUtility\\" );
+
+#endif
+
+//-----------------------------------------------------------------------------
+// Error trace macros
+//-----------------------------------------------------------------------------
+//
+#ifdef ERROR_TRACE
+
+    /**
+    * Error trace definitions.
+    */
+    #ifdef TRACE_INTO_FILE
+
+        #define ERROR( aErr, aMsg )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr );\
+                }\
+            }
+        #define ERROR_1( aErr, aMsg, aP1 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr, aP1 );\
+                }\
+            }
+        #define ERROR_2( aErr, aMsg, aP1, aP2 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr, aP1, aP2 );\
+                }\
+            }
+        #define ERROR_3( aErr, aMsg, aP1, aP2, aP3 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3 );\
+                }\
+            }
+        #define ERROR_4( aErr, aMsg, aP1, aP2, aP3, aP4 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3, aP4 );\
+                }\
+            }
+        #define ERROR_5( aErr, aMsg, aP1, aP2, aP3, aP4, aP5 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3, aP4, aP5 );\
+                }\
+            }
+        #define ERROR_6( aErr, aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3, aP4, aP5 );\
+                }\
+            }
+            
+    #else//TRACE_INTO_FILE not defined
+    
+        #define ERROR( aErr, aMsg )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr );\
+                }\
+            }
+        #define ERROR_1( aErr, aMsg, aP1 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr, aP1 );\
+                }\
+            }
+        #define ERROR_2( aErr, aMsg, aP1, aP2 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr, aP1, aP2 );\
+                }\
+            }
+        #define ERROR_3( aErr, aMsg, aP1, aP2, aP3 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3 );\
+                }\
+            }
+        #define ERROR_4( aErr, aMsg, aP1, aP2, aP3, aP4 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3, aP4 );\
+                }\
+            }
+        #define ERROR_5( aErr, aMsg, aP1, aP2, aP3, aP4, aP5 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3, aP4, aP5 );\
+                }\
+            }
+        #define ERROR_6( aErr, aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3, aP4, aP5, aP6 );\
+                }\
+            }
+    
+    #endif//TRACE_INTO_FILE
+
+    #define ERROR_GEN( aMsg ) ERROR( KErrGeneral, aMsg )
+    #define ERROR_GEN_1( aMsg, aP1 ) ERROR_1( KErrGeneral, aMsg, aP1 )
+    #define ERROR_GEN_2( aMsg, aP1, aP2 ) ERROR_2( KErrGeneral, aMsg, aP1, aP2 )
+    #define ERROR_GEN_3( aMsg, aP1, aP2, aP3 ) ERROR_3( KErrGeneral, aMsg, aP1, aP3 )
+    #define ERROR_GEN_4( aMsg, aP1, aP2, aP3, aP4 ) ERROR_4( KErrGeneral, aMsg, aP1, aP3, aP4 )
+    #define ERROR_GEN_5( aMsg, aP1, aP2, aP3, aP4, aP5 ) ERROR_5( KErrGeneral, aMsg, aP1, aP3, aP4, aP5 )
+    #define ERROR_GEN_6( aMsg, aP1, aP2, aP3, aP4, aP5, aP6 ) ERROR_6( KErrGeneral, aMsg, aP1, aP3, aP4, aP5, aP6 )
+
+#else//ERROR_TRACE not defined
+
+    #define ERROR( aErr, aMsg )
+    #define ERROR_1( aErr, aMsg, aP1 )
+    #define ERROR_2( aErr, aMsg, aP1, aP2 )
+    #define ERROR_3( aErr, aMsg, aP1, aP2, aP3 )
+    #define ERROR_4( aErr, aMsg, aP1, aP2, aP3, aP4 )
+    #define ERROR_5( aErr, aMsg, aP1, aP2, aP3, aP4, aP5 )
+    #define ERROR_6( aErr, aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )
+
+    #define ERROR_GEN( aMsg )
+    #define ERROR_GEN_1( aMsg, aP1 )
+    #define ERROR_GEN_2( aMsg, aP1, aP2 )
+    #define ERROR_GEN_3( aMsg, aP1, aP2, aP3 )
+    #define ERROR_GEN_4( aMsg, aP1, aP2, aP3, aP4 )
+    #define ERROR_GEN_5( aMsg, aP1, aP2, aP3, aP4, aP5 )
+    #define ERROR_GEN_6( aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )
+
+#endif//ERROR_TRACE
+
+//-----------------------------------------------------------------------------
+// TRAP and trace with error macro
+//-----------------------------------------------------------------------------
+//
+#define TRAP_ERROR( aErr, aFunction )\
+    {\
+    TRAP( aErr, aFunction );\
+    TPtrC8 file( ( TText8* )__FILE__ );\
+    ERROR_2( aErr, "Trapped leave in '%S' line %d", &file, __LINE__);\
+    }
+
+//-----------------------------------------------------------------------------
+// Info trace macros
+//-----------------------------------------------------------------------------
+//
+#ifdef INFO_TRACE
+
+    /**
+    * Info log message definitions.
+    */
+    #ifdef TRACE_INTO_FILE
+    
+        #define INFO( aMsg )\
+            {\
+            RFileLogger::Write( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ) );\
+            }
+        #define INFO_1( aMsg, aP1 )\
+            {\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ), aP1 );\
+            }
+        #define INFO_2( aMsg, aP1, aP2 )\
+            {\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ), aP1, aP2 );\
+            }
+        #define INFO_3( aMsg, aP1, aP2, aP3 )\
+            {\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ), aP1, aP2, aP3 );\
+            }
+        #define INFO_4( aMsg, aP1, aP2, aP3, aP4 )\
+            {\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ), aP1, aP2, aP3, aP4 );\
+            }
+        #define INFO_5( aMsg, aP1, aP2, aP3, aP4, aP5 )\
+            {\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ), aP1, aP2, aP3, aP4, aP5 );\
+            }
+        #define INFO_6( aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )\
+            {\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ), aP1, aP2, aP3, aP4, aP5, aP6 );\
+            }
+
+    #else//TRACE_INTO_FILE not defined
+
+        #define INFO( aMsg )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ) );\
+            }
+        #define INFO_1( aMsg, aP1 )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ), aP1 );\
+            }
+        #define INFO_2( aMsg, aP1, aP2 )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ), aP1, aP2 );\
+            }
+        #define INFO_3( aMsg, aP1, aP2, aP3 )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ), aP1, aP2, aP3 );\
+            }
+        #define INFO_4( aMsg, aP1, aP2, aP3, aP4 )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ), aP1, aP2, aP3, aP4 );\
+            }
+        #define INFO_5( aMsg, aP1, aP2, aP3, aP4, aP5 )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ), aP1, aP2, aP3, aP4, aP5 );\
+            }
+        #define INFO_6( aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ), aP1, aP2, aP3, aP4, aP5, aP6 );\
+            }
+
+    #endif//TRACE_INTO_FILE
+        
+#else//INFO_TRACE not defined
+
+    #define INFO( aMsg )
+    #define INFO_1( aMsg, aP1 )
+    #define INFO_2( aMsg, aP1, aP2 )
+    #define INFO_3( aMsg, aP1, aP2, aP3 )
+    #define INFO_4( aMsg, aP1, aP2, aP3, aP4 )
+    #define INFO_5( aMsg, aP1, aP2, aP3, aP4, aP5 )
+    #define INFO_6( aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )
+
+#endif//INFO_TRACE
+
+//-----------------------------------------------------------------------------
+// Trace current client thread name and process id
+//-----------------------------------------------------------------------------
+//
+#ifdef CLIENT_TRACE
+
+    #define CLIENT_PROCESS\
+        {\
+        CLIENT_PROCESS_PREFIX( "" );\
+        }        
+
+    #define CLIENT_PROCESS_PREFIX( aPrefix )\
+        {\
+        RProcess process;\
+        TPtrC name( process.Name() );\
+        TSecureId sid( process.SecureId() );\
+        TPtrC prefix( _S( aPrefix ) );\
+        if( prefix.Length() )\
+            {\
+            INFO_3( "%S: CLIENT - Name: [%S], Sid: [0x%x]", &prefix, &name, sid.iId );\
+            }\
+        else\
+            {\
+            INFO_2( "CLIENT - Name: [%S], Sid: [0x%x]", &name, sid.iId );\
+            }\
+        process.Close();\
+        }        
+
+    #define CLIENT_MESSAGE( aMsg )\
+        {\
+        CLIENT_MESSAGE_PREFIX( "", aMsg );\
+        }
+
+    #define CLIENT_MESSAGE_PREFIX( aPrefix, aMsg )\
+        {\
+        RThread thread;\
+        TInt err = aMsg.Client( thread );\
+        if( err == KErrNone )\
+            {\
+            RProcess process;\
+            err = thread.Process( process );\
+            if( err == KErrNone )\
+                {\
+                TPtrC threadName( thread.Name() );\
+                TUid processUid( process.SecureId() );\
+                TPtrC prefix( _S( aPrefix ) );\
+                if( prefix.Length() )\
+                    {\
+                    INFO_4( "%S: MSG - Name: [%S], Sid: [0x%x], Message ID: [%d]",\
+                        &prefix,\
+                        &threadName,\
+                        processUid,\
+                        aMsg.Function() );\
+                    }\
+                else\
+                    {\
+                    INFO_3( "MSG - Name: [%S], Sid: [0x%x], Message ID: [%d]",\
+                        &threadName,\
+                        processUid,\
+                        aMsg.Function() );\
+                    }\
+                }\
+            process.Close();\
+            }\
+        thread.Close();\
+        }
+
+#else
+
+    #define CLIENT_PROCESS
+    #define CLIENT_PROCESS_PREFIX( aPrefix )
+    #define CLIENT_MESSAGE( aMsg )
+    #define CLIENT_MESSAGE_PREFIX( aPrefix, aMsg )
+
+#endif
+
+//-----------------------------------------------------------------------------
+// Function trace macros
+//-----------------------------------------------------------------------------
+//
+#ifdef FUNC_TRACE
+
+    /**
+    * Function logging definitions.
+    */
+    #ifdef TRACE_INTO_FILE
+    
+        #define FUNC( aMsg, aP1 )\
+            {\
+            TPtrC8 trace( _S8( aMsg ) );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, trace, aP1 );\
+            }\
+    
+    #else//TRACE_INTO_FILE not defined
+    
+        #define FUNC( aMsg, aP1 )\
+            {\
+            RDebug::Printf( aMsg, aP1 );\
+            }\
+    
+    #endif//TRACE_INTO_FILE
+        
+    /**
+    * Function trace helper class.
+    * 
+    * NOTE:
+    * LC -methods cannot be trapped. Therefore if LC -method leaves
+    * END trace is used instead of LEAVE trace.
+    * If you have an idea how to round this problem please tell.
+    */
+    _LIT8( KFuncNameTerminator, "(" );
+    _LIT8( KFuncLeavePatternL, "L" );
+    class TFuncLog
+        {
+        public:
+            static void Cleanup( TAny* aPtr )
+                {
+                TFuncLog* self = static_cast< TFuncLog* >( aPtr );
+                self->iLeft = ETrue;
+                FUNC( _PREFIX_CHAR("%S-LEAVE"), &self->iFunc ); // Leave detected
+                }
+            inline TFuncLog( const char* aFunc ) :
+                    iFunc( aFunc ? _S8( aFunc ) : _S8("") ),
+                    iLeft( EFalse ),
+                    iCleanupItem( Cleanup, this ),
+                    iCanLeave( EFalse )
+                {
+                TInt pos( iFunc.Find( KFuncNameTerminator ) );
+                if( pos != KErrNotFound )
+                    {
+                    iFunc.Set( iFunc.Left( pos ) );
+                    iCanLeave = !iFunc.Right( KFuncLeavePatternL().Length() ).Compare( KFuncLeavePatternL );
+                    if ( iCanLeave )
+                        {
+                        CleanupStack::PushL( iCleanupItem ); // Ignore warnings
+                        }
+                    }
+                FUNC( _PREFIX_CHAR("%S-START"), &iFunc );
+                }
+
+            inline ~TFuncLog()
+                {
+                if ( !iLeft )
+                    {
+                    if ( iCanLeave )
+                        {
+                        CleanupStack::Pop( this ); // Pop the cleanup item
+                        }
+                    FUNC( _PREFIX_CHAR("%S-END"), &iFunc ); // Normally finished
+                    }
+                }
+
+        private: // Data
+            TPtrC8 iFunc;
+            TBool iLeft;
+            TCleanupItem iCleanupItem;
+            TBool iCanLeave;
+        };
+    #define FUNC_LOG TFuncLog _fl( __PRETTY_FUNCTION__ );
+    
+#else//FUNC_TRACE not defined
+
+    #define FUNC_LOG
+
+#endif//FUNC_TRACE
+
+//-----------------------------------------------------------------------------
+// Timestamp trace macros
+//-----------------------------------------------------------------------------
+//
+#ifdef TIMESTAMP_TRACE
+
+    #ifdef TRACE_INTO_FILE
+    
+        #define TIMESTAMP( aCaption )\
+            {\
+            TTime t;\
+            t.HomeTime();\
+            TDateTime dt = t.DateTime();\
+            _LIT( KCaption, aCaption );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend,\
+                _PREFIX_TRACE("[TIMESTAMP] %S %d:%02d:%02d.%d us"),\
+                    &KCaption, dt.Hour(), dt.Minute(), dt.Second(), dt.MicroSecond() );\
+            }
+
+    #else//TRACE_INTO_FILE not defined
+    
+        #define TIMESTAMP( aCaption )\
+            {\
+            TTime t;\
+            t.HomeTime();\
+            TDateTime dt = t.DateTime();\
+            _LIT( KCaption, aCaption );\
+            RDebug::Print( _PREFIX_TRACE("[TIMESTAMP] %S %d:%02d:%02d.%d us"),\
+                &KCaption, dt.Hour(), dt.Minute(), dt.Second(), dt.MicroSecond() );\
+            }
+
+    #endif//TRACE_INTO_FILE
+
+#else//TIMESTAMP_TRACE not defined
+
+    #define TIMESTAMP( aCaption )
+
+#endif//TIMESTAMP_TRACE
+
+#ifdef HEAP_TRACE
+
+    #ifdef TRACE_INTO_FILE
+
+        #define HEAP( aMsg )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_HEAP( aMsg ), totalAllocSpace );\
+            }
+        #define HEAP_1( aMsg, aP1 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1 );\
+            }
+        #define HEAP_2( aMsg, aP1, aP2 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1, aP2 );\
+            }
+        #define HEAP_3( aMsg, aP1, aP2, aP3 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1, aP2, aP3 );\
+            }
+        #define HEAP_4( aMsg, aP1, aP2, aP3, aP4 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1, aP2, aP3, aP4 );\
+            }
+
+    #else//TRACE_INTO_FILE not defined
+
+        #define HEAP( aMsg )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RDebug::Print( _PREFIX_HEAP( aMsg ), totalAllocSpace );\
+            }
+        #define HEAP_1( aMsg, aP1 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RDebug::Print( _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1 );\
+            }
+        #define HEAP_2( aMsg, aP1, aP2 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RDebug::Print( _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1, aP2 );\
+            }
+        #define HEAP_3( aMsg, aP1, aP2, aP3 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RDebug::Print( _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1, aP2, aP3 );\
+            }
+        #define HEAP_4( aMsg, aP1, aP2, aP3, aP4 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RDebug::Print( _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1, aP2, aP3, aP4 );\
+            }
+
+    #endif//TRACE_INTO_FILE
+
+#else//HEAP_TRACE not defined
+
+    #define HEAP( aMsg )
+    #define HEAP_1( aMsg, aP1 )
+    #define HEAP_2( aMsg, aP1, aP2 )
+    #define HEAP_3( aMsg, aP1, aP2, aP3 )
+    #define HEAP_4( aMsg, aP1, aP2, aP3, aP4 )
+
+#endif//HEAP_TRACE
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/inc/traceconfiguration.hrh	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2009 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:
+* Trace Macro Configurations.
+*
+*/
+
+#ifndef TRACECONFIGURATION_HRH
+#define TRACECONFIGURATION_HRH
+
+//-----------------------------------------------------------------------------
+// Trace definitions
+//-----------------------------------------------------------------------------
+//
+
+/**
+* Error trace enabled
+*/
+#ifdef _DEBUG
+    #define ERROR_TRACE
+#else
+    #undef ERROR_TRACE
+#endif
+
+/**
+* Info trace enabled
+*/
+#ifdef _DEBUG
+    #define INFO_TRACE
+#else
+    #undef INFO_TRACE
+#endif
+
+/**
+* Timestamp tracing on
+*/
+#ifdef _DEBUG
+    #define TIMESTAMP_TRACE
+#else
+    #undef TIMESTAMP_TRACE
+#endif
+
+/**
+* Tracing current client process and thread
+*/
+#ifdef _DEBUG
+    #define CLIENT_TRACE
+#else
+    #undef CLIENT_TRACE
+#endif
+
+/**
+* Function trace enabled
+*/
+#ifdef _DEBUG
+    #define FUNC_TRACE
+#else
+    #undef FUNC_TRACE
+#endif
+
+/**
+* Tracing into file enabled, default RDebug
+*/
+#undef TRACE_INTO_FILE
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/rom/fmpresetutility.iby	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2009 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:  IBY file for the FmPresetUtility
+*
+*/
+
+
+#ifndef FMPRESETUTILITY_IBY
+#define FMPRESETUTILITY_IBY
+
+file=ABI_DIR\BUILD_DIR\fmPresetUtility.dll SHARED_LIB_DIR\fmPresetUtility.dll
+
+// Backup
+//data=ZPRIVATE\10207B87\backup_registration.xml        PRIVATE\10207B87\backup_registration.xml
+
+#endif // FMPRESETUTILITY_IBY
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/rom/presetutility.iby	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2009 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:  IBY file for the presetutility
+*
+*/
+
+
+#ifndef PRESETUTILITY_IBY
+#define PRESETUTILITY_IBY
+
+file=ABI_DIR\BUILD_DIR\presetutility.dll SHARED_LIB_DIR\presetutility.dll
+
+// Backup
+data=ZPRIVATE\10207B87\backup_registration.xml        PRIVATE\10207B87\backup_registration.xml
+
+#endif // PRESETUTILITY_IBY
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/src/cenrepbookkeeping.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,281 @@
+/*
+* Copyright (c) 2009 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 <s32mem.h> // RWriteStream, RReadStream
+
+#include "cenrepbookkeeping.h"
+#include "trace.h"
+
+
+const TUint8 KNbrOfBitsPerByte = 8;
+
+
+#define BITSPERLWORD ( sizeof(iBookKeepingData.iUsedIndexLWords[0]) * KNbrOfBitsPerByte)
+
+
+// ============= MEMBER FUNCTIONS ==============
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CCenrepBookKeeping::CCenrepBookKeeping()
+    {
+    FUNC_LOG;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CCenrepBookKeeping::~CCenrepBookKeeping()
+    {
+    FUNC_LOG;
+    Clear();
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TInt CCenrepBookKeeping::PresetCount() const
+    {
+    FUNC_LOG;
+    return iBookKeepingData.iCount;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TInt CCenrepBookKeeping::FirstIndex() const
+    {
+    FUNC_LOG;
+    TInt retIndex( KErrGeneral );
+    TUint32 bitMask( 0 );
+    for ( TInt lwordOffset = 0; ; ++lwordOffset)
+        {
+        if ( 0 !=iBookKeepingData.iUsedIndexLWords[lwordOffset] )
+            {
+            bitMask = 1;
+            for ( TUint8 bitOffset( 0 ); BITSPERLWORD > bitOffset; ++bitOffset )
+                {
+                if ( KMaxNumberOfPresetStations <= ( ( BITSPERLWORD * lwordOffset ) + bitOffset ) )
+                    {
+                    retIndex = KErrNotFound;
+                    break;
+                    }
+                if ( 0 != ( iBookKeepingData.iUsedIndexLWords[lwordOffset] & bitMask) )
+                    {
+                    retIndex = ( BITSPERLWORD * lwordOffset ) + bitOffset;
+                    break;
+                    }
+                bitMask = bitMask << 1;                
+                }
+            }
+        else if ( KMaxNumberOfPresetStations < ( BITSPERLWORD * (lwordOffset + 1) ) )
+            {
+            retIndex = KErrNotFound;
+            break;            
+            }
+        if ( KErrGeneral != retIndex )
+            {
+            break;
+            }
+        }
+    INFO_1( "retIndex: %i", retIndex );
+    return retIndex;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TInt CCenrepBookKeeping::NextIndex( TInt aFromIndex )
+    {
+    FUNC_LOG;
+    TInt retIndex( KErrGeneral );
+    TInt startIndex( aFromIndex + 1 );
+    TUint32 bitMask( 0 );
+    TUint8 bitOffset( 0 );
+    for ( TInt lwordOffset(startIndex/BITSPERLWORD); ; ++lwordOffset)
+        {
+        if ( lwordOffset == (startIndex/BITSPERLWORD) )
+            {
+            bitMask = 1 << (startIndex%BITSPERLWORD);
+            bitOffset = (startIndex%BITSPERLWORD);
+            }
+        else
+            {
+            bitMask = 1;
+            bitOffset = 0;
+            }
+        if ( 0 !=iBookKeepingData.iUsedIndexLWords[lwordOffset] )
+            {            
+            for ( ; BITSPERLWORD > bitOffset; ++bitOffset )
+                {
+                if ( KMaxNumberOfPresetStations <=  ( ( BITSPERLWORD * lwordOffset ) + bitOffset ) )
+                    {
+                    retIndex = KErrNotFound;
+                    break;
+                    }
+                if ( 0 != ( iBookKeepingData.iUsedIndexLWords[lwordOffset] & bitMask) )
+                    {
+                    retIndex = ( BITSPERLWORD * lwordOffset ) + bitOffset;
+                    break;
+                    }
+                bitMask = bitMask << 1;                
+                }
+            }
+        else if ( KMaxNumberOfPresetStations < ( BITSPERLWORD * (lwordOffset + 1) ) )
+            {
+            retIndex = KErrNotFound;
+            break;            
+            }
+        if ( KErrGeneral != retIndex )
+            {
+            break;
+            }
+        }
+    INFO_1( "retIndex: %i", retIndex );
+    return retIndex;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CCenrepBookKeeping::AddIndex( const TInt aIndex )
+    {
+    FUNC_LOG;
+    if  (
+        ( KMaxNumberOfPresetStations >iBookKeepingData.iCount ) &&
+        ( !IsIndexUsed( aIndex ) )
+    )
+        {
+        TInt lwordOffset(aIndex/BITSPERLWORD);
+        TUint bitOffset( (aIndex%BITSPERLWORD) );
+        TUint32 bitMask( 1 );
+        bitMask  = bitMask << bitOffset;
+       iBookKeepingData.iUsedIndexLWords[lwordOffset] |= bitMask;    
+        ++iBookKeepingData.iCount;       
+        }
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CCenrepBookKeeping::RemoveIndex( const TInt aIndex )
+    {
+    FUNC_LOG;
+    if  ( 
+        ( 0 <iBookKeepingData.iCount ) &&
+        ( IsIndexUsed( aIndex ) )
+    ) 
+        {
+        TInt lwordOffset(aIndex/BITSPERLWORD);
+        TUint bitOffset( (aIndex%BITSPERLWORD) );
+        TUint32 bitMask( 1 );
+        bitMask = bitMask << bitOffset;
+        bitMask = ~bitMask;
+       iBookKeepingData.iUsedIndexLWords[lwordOffset] &= bitMask;    
+        --iBookKeepingData.iCount;       
+        }
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CCenrepBookKeeping::Clear()
+    {
+    FUNC_LOG;
+    for ( TInt lwordOffset(0); LENGTHOFUSEDINDEXLWORDSARRAY > lwordOffset; ++lwordOffset)
+        {
+       iBookKeepingData.iUsedIndexLWords[lwordOffset] = 0;
+        }
+   iBookKeepingData.iCount = 0;    
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TInt CCenrepBookKeeping::FindUnusedIndex() const
+    {
+    FUNC_LOG;
+    TInt retIndex( KErrGeneral );
+    TUint32 bitMask( 0 );
+    for ( TInt lwordOffset = 0; ; ++lwordOffset)
+        {
+        if ( 0xFFFFFFFF !=iBookKeepingData.iUsedIndexLWords[lwordOffset] )
+            {
+            bitMask = 1;
+            for ( TUint8 bitOffset = 0; BITSPERLWORD > bitOffset; ++bitOffset )
+                {
+                if ( KMaxNumberOfPresetStations <=  ( ( BITSPERLWORD * lwordOffset ) + bitOffset ) )
+                    {
+                    retIndex = KErrNotFound;
+                    break;
+                    }
+                if ( 0 == ( iBookKeepingData.iUsedIndexLWords[lwordOffset] & bitMask) )
+                    {
+                    retIndex = ( BITSPERLWORD * lwordOffset ) + bitOffset;
+                    break;
+                    }
+                bitMask = bitMask << 1;                
+                }
+            }
+        else if ( KMaxNumberOfPresetStations < ( BITSPERLWORD * (lwordOffset + 1) ) )
+            {
+            retIndex = KErrNotFound;
+            break;            
+            }
+        if ( KErrGeneral != retIndex )
+            {
+            break;
+            }
+        }
+    INFO_1( "retIndex: %i", retIndex );
+    return retIndex;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TBool CCenrepBookKeeping::IsIndexUsed( const TInt aIndex )
+    {
+    FUNC_LOG;
+    TInt lwordOffset(aIndex/BITSPERLWORD);
+    TUint bitOffset( (aIndex%BITSPERLWORD) );
+    TUint32 bitMask( 1 );
+    bitMask = bitMask << bitOffset;
+    return ( iBookKeepingData.iUsedIndexLWords[lwordOffset] & bitMask);    
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TPtr8 CCenrepBookKeeping::BookKeepingData()
+    {
+    TPtr8 bookKeepingData( (TUint8*)&iBookKeepingData, sizeof( iBookKeepingData ), sizeof( iBookKeepingData ) );
+    return bookKeepingData;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/src/cenrephandler.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,390 @@
+/*
+* Copyright (c) 2009 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:
+*
+*
+*/
+
+
+// System includes
+#include <centralrepository.h>
+#include <s32mem.h>
+
+// User includes
+#include "cenrephandler.h"
+#include "presetcrkeys.h"
+#include <preset.h>
+#include "cenrepbookkeeping.h"
+#include "trace.h"
+
+
+class TChannelIndexList
+    {
+public:
+    TInt iChannelIndex;
+    TInt iNameIndex;
+    TInt iFrequencyIndex;
+    TInt iUrlIndex;
+    TInt iRestOfParametersIndex;
+    };
+
+// ============= STATIC FUNCTIONS ==============
+
+static TInt CalculateChannelIndexes( const TInt aChannelIndex,  TChannelIndexList& aChannelIndexList)
+    {
+    FUNC_LOG;
+    TInt err( KErrNone );
+    if ( ( KMaxNumberOfPresetStations <= aChannelIndex ) ||
+            ( 0 >  aChannelIndex ) )
+        {
+        err = KErrArgument;
+        }
+    else
+        {
+        aChannelIndexList.iChannelIndex = 
+         KRadioPresetChannel1 + ( KNbrOfParametersPerChannelSequence * aChannelIndex );
+        aChannelIndexList.iNameIndex =
+            aChannelIndexList.iChannelIndex + KChannelNameOffset;        
+        aChannelIndexList.iFrequencyIndex =
+            aChannelIndexList.iChannelIndex + KFrequencyOffset;        
+        aChannelIndexList.iUrlIndex =
+            aChannelIndexList.iChannelIndex + KUrlOffset;        
+        aChannelIndexList.iRestOfParametersIndex =
+            aChannelIndexList.iChannelIndex + KRestOfParametersOffset;
+        }
+    return err;
+    }
+
+// ============= MEMBER FUNCTIONS ==============
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CCenrepHandler::CCenrepHandler()
+    {
+    FUNC_LOG;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CCenrepHandler::ConstructL()
+    {
+    FUNC_LOG;
+    iCentralRepository = CRepository::NewL( KCRUidPresetUtility );
+    iBookKeeping = new (ELeave) CCenrepBookKeeping;
+    ReadBookKeepingL();
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CCenrepHandler* CCenrepHandler::NewL()
+    {
+    FUNC_LOG;
+    CCenrepHandler* self = new (ELeave) CCenrepHandler();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CCenrepHandler::~CCenrepHandler()
+    {
+    FUNC_LOG;
+    delete iCentralRepository;
+    delete iBookKeeping;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CCenrepHandler::MaxPresetCount() const
+    {
+    FUNC_LOG;
+    return KMaxNumberOfPresetStations;
+    }
+
+// -----------------------------------------------------------------------------
+// Get the current number of presets
+// -----------------------------------------------------------------------------
+//
+TInt CCenrepHandler::PresetCount() const
+    {
+    FUNC_LOG;
+    return iBookKeeping->PresetCount();
+    }
+
+// -----------------------------------------------------------------------------
+// Gets the first preset
+// -----------------------------------------------------------------------------
+//
+TInt CCenrepHandler::FirstPreset() const
+    {
+    FUNC_LOG;
+    return iBookKeeping->FirstIndex();
+    }
+
+// -----------------------------------------------------------------------------
+// Get the next preset index that has been set, given the current index
+// -----------------------------------------------------------------------------
+//
+TInt CCenrepHandler::NextPreset( TInt aFromIndex ) const
+    {
+    FUNC_LOG;
+    return iBookKeeping->NextIndex( aFromIndex );
+    }
+
+// -----------------------------------------------------------------------------
+// Delete the current preset
+// -----------------------------------------------------------------------------
+//
+TInt CCenrepHandler::DeletePreset( TInt aIndex )
+    {
+    FUNC_LOG;
+    TInt err( KErrNone );
+    if ( -1 == aIndex )
+        {
+        // Delete all
+        TChannelIndexList channelIndexList;
+        for (  TInt j( FirstPreset() ); 0 <= j;  j = FirstPreset() )
+            {
+            INFO_1("Deleting index: %i", j );
+            if ( KErrNone == CalculateChannelIndexes( j, channelIndexList ) )
+                {                
+                iCentralRepository->Delete( channelIndexList.iNameIndex );    
+                iCentralRepository->Delete( channelIndexList.iFrequencyIndex );   
+                iCentralRepository->Delete( channelIndexList.iUrlIndex );
+                iCentralRepository->Delete( channelIndexList.iRestOfParametersIndex );
+                iBookKeeping->RemoveIndex( j );        
+                }
+            }
+        }
+    else
+        {
+        TChannelIndexList channelIndexList;
+        err = CalculateChannelIndexes( aIndex, channelIndexList );
+        if ( KErrNone == err )
+            {
+            iCentralRepository->Delete( channelIndexList.iNameIndex );    
+            iCentralRepository->Delete( channelIndexList.iFrequencyIndex );   
+            iCentralRepository->Delete( channelIndexList.iUrlIndex );
+            iCentralRepository->Delete( channelIndexList.iRestOfParametersIndex );
+            iBookKeeping->RemoveIndex( aIndex );        
+            }
+        }
+    if ( KErrNone == err )
+        {
+        SaveBookKeeping();
+        }
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CCenrepHandler::SavePresetL( const TPreset& aPreset, TInt aIndex )
+    {
+    FUNC_LOG;
+    if ( 0 > aIndex )
+        {
+        aIndex = iBookKeeping->FindUnusedIndex();
+        }
+    if ( 0 > aIndex )
+        {
+        User::Leave( KErrDiskFull ); // Not really a good code for this
+        }
+    TChannelIndexList channelIndexList;
+    User::LeaveIfError( CalculateChannelIndexes( aIndex, channelIndexList) );
+
+    // First save name to its own key in the key sequence.
+    User::LeaveIfError( iCentralRepository->Set( channelIndexList.iNameIndex, aPreset.Name() ) );
+
+    // Frequency  to its own key in the key sequence.
+    User::LeaveIfError( iCentralRepository->Set( channelIndexList.iFrequencyIndex, (TInt)aPreset.Frequency() ) );
+
+    // Url to its own key in the key sequence.
+    User::LeaveIfError( iCentralRepository->Set( channelIndexList.iUrlIndex, aPreset.Url() ) );
+
+    // Then externalize the rest of the data to a common key.
+    TInt err( KErrNone );
+    TInt length( aPreset.MyExternalizedDataSize() );
+    TUint i ( 1 );
+    INFO_1( "aPreset.MyExternalizedDataSize()=%i", length );
+    for ( TBool cont = ( 0 < length ) ? ETrue : EFalse; (cont); cont = ( KErrOverflow == err ) ?  ETrue : EFalse ) 
+        {
+        HBufC8* buf = HBufC8::NewLC( i * length  );
+        TPtr8 bufPtr = buf->Des();
+        RDesWriteStream outStream( bufPtr );
+        CleanupClosePushL( outStream );
+        TRAP( err, aPreset.ExternalizeL( outStream ) );
+        if ( KErrNone == err )
+            {
+            outStream.CommitL();
+            User::LeaveIfError( iCentralRepository->Set( channelIndexList.iRestOfParametersIndex, *buf ) );
+            }
+        else
+            {
+            INFO_2( "SavePresetL bigger buffer (%i) needed than required by aPreset.MyExternalizedDataSize()=%i", i*length, aPreset.MyExternalizedDataSize() );
+            ++i;
+            }
+        CleanupStack::PopAndDestroy( &outStream );
+        CleanupStack::PopAndDestroy( buf );
+        }
+    User::LeaveIfError( err );
+
+    iBookKeeping->AddIndex( aIndex );
+    SaveBookKeeping();
+    return aIndex;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CCenrepHandler::ReadPresetL( TInt aIndex, TPreset& aPreset )
+    {
+    FUNC_LOG;
+
+    // Read name from its own key in the key sequence
+    TChannelIndexList channelIndexList;
+    User::LeaveIfError( CalculateChannelIndexes( aIndex, channelIndexList) );
+    TPresetName tempChannelName;
+    User::LeaveIfError( iCentralRepository->Get(channelIndexList.iNameIndex, tempChannelName ) );
+    aPreset.SetName( tempChannelName );
+
+    // Read frequency from its own key in the key sequence
+    TInt frequency( 0 );
+    User::LeaveIfError( iCentralRepository->Get( channelIndexList.iFrequencyIndex, frequency ) );
+    aPreset.SetFrequency( frequency );
+
+    // Read url from its own key in the key sequence
+    TRadioUrl tempUrlName;
+    TInt err = iCentralRepository->Get( channelIndexList.iUrlIndex, tempUrlName );
+    if ( KErrNone == err )
+        {        
+        aPreset.SetUrl( tempUrlName );
+        }
+    else if ( KErrNotFound == err )
+        {
+        // This is an optional parameter.
+        }
+    else
+        {
+        User::Leave( err );
+        }
+                      
+
+    // Then use the below code to internalize rest of parameters from the common key
+    TInt actualLength( aPreset.MyExternalizedDataSize() );
+    INFO_1( "ReadPresetL aPreset.MyExternalizedDataSize()=%i", actualLength );
+    for ( TBool cont = ( 0 < actualLength ) ? ETrue : EFalse; (cont); cont = ( KErrOverflow == err ) ?  ETrue : EFalse ) 
+        {
+        HBufC8* buf = HBufC8::NewLC( actualLength );
+        TPtr8 bufPtr = buf->Des();
+        err = iCentralRepository->Get( channelIndexList.iRestOfParametersIndex, bufPtr, actualLength );
+        if ( ( KErrNone == err ) && ( 0 < buf->Length() ) )
+            {
+            RDesReadStream inStream;
+            inStream.Open( *buf );
+            CleanupClosePushL( inStream );       
+            aPreset.InternalizeL( inStream );        
+            CleanupStack::PopAndDestroy( &inStream );
+            }
+        else if ( KErrNotFound == err )
+            {
+            // This is not filled by CT tool even though name, frequency and URL might be 
+            // filled for the current channel. Don't leave.
+            INFO_1( "ReadPresetL KErrNotFound, key=%i", channelIndexList.iRestOfParametersIndex );
+            }
+        else if ( KErrOverflow == err )
+            {
+            INFO_2( "ReadPresetL KErrOverflow, buf->Length()=%i actualLength=%i", buf->Length(), actualLength );
+            // Trying again with actual with buffer that can store the whole key
+            }
+        else
+            {
+            User::Leave( err );
+            }
+        CleanupStack::PopAndDestroy(buf);
+        } // for (;;) 
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CCenrepHandler::ReadBookKeepingL()
+    {
+    FUNC_LOG;
+    TPtr8 bufPtr = iBookKeeping->BookKeepingData();
+
+    TInt err( iCentralRepository->Get( KRadioBookKeepingLocation, bufPtr ) );
+    if ( KErrNotFound == err )
+        {
+        // Bookkeeping does not exist. Search possible preconfigured channels.
+        ReadPreDefinedPresetsL();
+        err = KErrNone;
+        }
+    User::LeaveIfError( err );
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CCenrepHandler::SaveBookKeeping()
+    {
+    FUNC_LOG;
+    TInt err( iCentralRepository->Set( KRadioBookKeepingLocation, iBookKeeping->BookKeepingData() ) );
+    if ( KErrNone !=  err )
+        {
+        INFO_1("Saving of BookKeeping failed with error: %i ", err)
+        // It is better to destroy data that is out of sync
+        iCentralRepository->Delete( KRadioBookKeepingLocation );
+        // Go on with local bookkeeping data
+        }
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CCenrepHandler::ReadPreDefinedPresetsL()
+    {
+    FUNC_LOG;
+    TInt frequency ( 0 );
+    TInt err( KErrNone );
+    TChannelIndexList channelIndexList;
+    iBookKeeping->Clear();
+    for(TInt index = 0; index < KMaxNumberOfPresetStations; index++)
+        {
+        User::LeaveIfError( CalculateChannelIndexes( index, channelIndexList) );
+        err = iCentralRepository->Get( channelIndexList.iFrequencyIndex, frequency );
+        if ( KErrNone ==  err )
+            {
+            iBookKeeping->AddIndex( index );
+            }
+        } 
+    SaveBookKeeping();
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/src/old_api/radiofmpresetcentralrepositoryhandler.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 2009 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:  Contains a dummy implementation of the CCentralRepositoryHandler class. 
+*
+*/
+
+
+//  INCLUDE FILES
+#include "radiofmpresetcentralrepositoryhandler.h"
+#include "trace.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// ----------------------------------------------------
+// CCentralRepositoryHandler::CCentralRepositoryHandler
+// Default class constructor.
+// ----------------------------------------------------
+//
+CCentralRepositoryHandler::CCentralRepositoryHandler()
+    {
+    FUNC_LOG;
+    }
+
+
+// ----------------------------------------------------
+// CCentralRepositoryHandler::NewL
+// Two-phased class constructor.
+// ----------------------------------------------------
+//
+CCentralRepositoryHandler* CCentralRepositoryHandler::NewL()
+    {
+    FUNC_LOG;
+    CCentralRepositoryHandler *self = new(ELeave) CCentralRepositoryHandler();
+    return self;
+    }
+
+// ----------------------------------------------------
+// CCentralRepositoryHandler::~CCentralRepositoryHandler
+// Destructor of CCentralRepositoryHandler class.
+// ----------------------------------------------------
+//
+CCentralRepositoryHandler::~CCentralRepositoryHandler()
+    {
+    FUNC_LOG;
+    }
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/src/old_api/radiofmpresetcentralrepositoryhandler.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2009 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:  Defines APIs to communicate with Central Repository
+*
+*/
+
+
+#ifndef RADIOFMPRESETCENTRALREPOSITORYHANDLER_H
+#define RADIOFMPRESETCENTRALREPOSITORYHANDLER_H
+
+//  INCLUDES
+#include <e32base.h>
+
+// CLASS DECLARATION
+
+/**
+*  it is a wrapper of Central Repository, responsible for the operations that need to access 
+*  the central respositorhy.
+*
+*  @lib FmPresetUtility.lib
+*  @since Series 60 3.0_version
+*/
+class CCentralRepositoryHandler : public CBase
+    {
+    public:
+      	/**
+      	* Two-phased class constructor.
+      	*/
+        static CCentralRepositoryHandler* NewL();
+      	/**
+      	* Destructor of CCentralRepositoryHandler class.
+      	*/
+        virtual ~CCentralRepositoryHandler();
+              
+    private:
+      	/**
+      	* Default class constructor.
+      	*/
+        CCentralRepositoryHandler();
+    };
+
+#endif  // RADIOFMPRESETCENTRALREPOSITORYHANDLER_H
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/src/old_api/radiofmpresetutility.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,354 @@
+/*
+* Copyright (c) 2009 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:  Contains implementation of the CRadioFmPresetUtility class,
+*                 which controlls the presets for an FM tuner.
+*/
+
+
+#include <RadioPresetUtility.h>
+#include <RadioFmPresetUtility.h>
+#include "presetutilitybody.h"
+#include <preset.h>
+#include "trace.h"
+
+// #############################################################################
+// This file has been deprecated! It is kept only for BC compatibility purposes
+// Please use the new API instead of this one
+// #############################################################################
+
+// Dummy body
+class CRadioFmPresetUtility::CBody : public CBase,
+                                     public MRadioPreset,
+                                     public MRadioFmPreset
+    {
+public:
+    ~CBody();
+    CBody();
+    };
+CRadioFmPresetUtility::CBody::CBody() {}
+CRadioFmPresetUtility::CBody::~CBody() {}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CRadioFmPresetUtility* CRadioFmPresetUtility::NewL( MRadioPresetObserver& aObserver )
+    {
+    FUNC_LOG;
+    CRadioFmPresetUtility* self = new (ELeave) CRadioFmPresetUtility( aObserver );
+    CleanupStack::PushL(self);
+    self->iBody = CPresetUtilityBody::NewL();
+    self->iBody->SetObserver( self );
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CRadioFmPresetUtility::~CRadioFmPresetUtility()
+    {
+    FUNC_LOG;
+    delete iBody;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CRadioFmPresetUtility::CRadioFmPresetUtility( MRadioPresetObserver& aObserver ):
+    iObserver( aObserver )
+    {
+    FUNC_LOG;
+    }
+
+// -----------------------------------------------------------------------------
+// CRadioFmPresetUtility::SetPresetL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CRadioFmPresetUtility::SetPresetL( TInt aIndex, const TFmPresetName& aName, TInt aFrequency )
+    {
+    FUNC_LOG;
+    TPreset radioPreset;
+    TInt err( KErrNone );
+    TRAP(err, iBody->ReadPresetL( aIndex, radioPreset ) );
+    if (KErrNotFound == err)
+        {
+        // Preset doesn't need to exist yet.
+        // Handling of err only to get rid of compile warning.
+        err = KErrNone;
+        }
+    User::LeaveIfError(err);
+    radioPreset.SetName( aName );
+    radioPreset.SetFrequency( aFrequency );
+    if ( 0 >= aFrequency )
+        {
+        // aFrequency values 0, -1(Or <=0) means that it is better to destroy
+        // rest of parameters and also URL
+        TFmPresetUrl url;
+        radioPreset.SetUrl( url );
+        radioPreset.SetGenre( 0 );
+        radioPreset.SetPiCode( 0 );
+        radioPreset.SetLocalStation( 0 );
+        radioPreset.SetFavorite( EFalse );
+        radioPreset.SetRenamedByUser( EFalse );             
+        }
+    User::LeaveIfError( iBody->SavePresetL( radioPreset, aIndex ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CRadioFmPresetUtility::SetPresetUrlL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CRadioFmPresetUtility::SetPresetUrlL( TInt aIndex, const TFmPresetUrl& aUrl )
+    {
+    FUNC_LOG;
+    TPreset radioPreset;
+    iBody->ReadPresetL( aIndex, radioPreset );
+    radioPreset.SetUrl( aUrl );
+    User::LeaveIfError( iBody->SavePresetL( radioPreset, aIndex ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CRadioFmPresetUtility::SetPresetPtyL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CRadioFmPresetUtility::SetPresetPtyL( TInt aIndex, TUint aPty )
+    {
+    FUNC_LOG;
+    TPreset radioPreset;
+    iBody->ReadPresetL( aIndex, radioPreset );
+    radioPreset.SetGenre( aPty );
+    User::LeaveIfError( iBody->SavePresetL( radioPreset, aIndex ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CRadioFmPresetUtility::SetPresetPICodeL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CRadioFmPresetUtility::SetPresetPICodeL( TInt aIndex, TUint aPICode )
+    {
+    FUNC_LOG;
+    TPreset radioPreset;
+    iBody->ReadPresetL( aIndex, radioPreset );
+    radioPreset.SetPiCode( aPICode );
+    User::LeaveIfError( iBody->SavePresetL( radioPreset, aIndex ) );
+    }
+// -----------------------------------------------------------------------------
+// CRadioFmPresetUtility::SetPresetFavouriteInfoL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CRadioFmPresetUtility::SetPresetFavouriteInfoL( TInt aIndex, TBool aFavourite )
+    {
+    FUNC_LOG;
+    TPreset radioPreset;
+    iBody->ReadPresetL( aIndex, radioPreset );
+    radioPreset.SetFavorite( aFavourite );
+    User::LeaveIfError( iBody->SavePresetL( radioPreset, aIndex ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CRadioFmPresetUtility::SetPresetUserRenameInfoL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CRadioFmPresetUtility::SetPresetUserRenameInfoL( TInt aIndex, TBool aRename )
+    {
+    FUNC_LOG;
+    TPreset radioPreset;
+    iBody->ReadPresetL( aIndex, radioPreset );
+    radioPreset.SetRenamedByUser( aRename );
+    User::LeaveIfError( iBody->SavePresetL( radioPreset, aIndex ) );
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CRadioFmPresetUtility::GetPresetL( TInt aIndex, TFmPresetName& aName, TInt& aFrequency )
+    {
+    FUNC_LOG;
+    TPreset preset;
+    iBody->ReadPresetL( aIndex, preset );
+    aName.Copy( preset.Name() );
+    aFrequency = preset.Frequency();
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CRadioFmPresetUtility::GetPresetNameL( TInt aIndex, TFmPresetName& aName)
+    {
+    FUNC_LOG;
+    TInt unused;
+    GetPresetL( aIndex, aName, unused );
+    }
+
+// -----------------------------------------------------------------------------
+// CRadioFmPresetUtility::GetPresetUrlL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//  
+EXPORT_C void CRadioFmPresetUtility::GetPresetUrlL( TInt aIndex, TFmPresetUrl& aUrl)
+    {
+    FUNC_LOG;
+    TPreset radioPreset;
+    iBody->ReadPresetL( aIndex, radioPreset);
+    aUrl.Copy( radioPreset.Url() );
+    }
+
+// -----------------------------------------------------------------------------
+// CRadioFmPresetUtility::GetPresetPtyL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//  
+EXPORT_C void CRadioFmPresetUtility::GetPresetPtyL( TInt aIndex, TUint& aPty)
+    {
+    FUNC_LOG;
+    TPreset radioPreset;
+    iBody->ReadPresetL( aIndex, radioPreset);
+    aPty = radioPreset.Genre();
+    }
+
+// -----------------------------------------------------------------------------
+// CRadioFmPresetUtility::GetPresetPICodeL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//  
+EXPORT_C void CRadioFmPresetUtility::GetPresetPICodeL( TInt aIndex, TUint& aPICode)
+    {
+    FUNC_LOG;
+    TPreset radioPreset;
+    iBody->ReadPresetL( aIndex, radioPreset);
+    aPICode = radioPreset.PiCode();
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRadioFmPresetUtility::GetPresetFavouriteInfoL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//  
+EXPORT_C void CRadioFmPresetUtility::GetPresetFavouriteInfoL( TInt aIndex, TBool& aFavourite)
+    {
+    FUNC_LOG;
+    TPreset radioPreset;
+    iBody->ReadPresetL( aIndex, radioPreset);
+    aFavourite = radioPreset.Favorite();
+    }
+
+// -----------------------------------------------------------------------------
+// CRadioFmPresetUtility::GetPresetUserRenameInfoL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//  
+EXPORT_C void CRadioFmPresetUtility::GetPresetUserRenameInfoL( TInt aIndex, TBool& aRename)
+    {
+    FUNC_LOG;
+    TPreset preset;
+    iBody->ReadPresetL( aIndex, preset);
+    aRename = preset.RenamedByUser();
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CRadioFmPresetUtility::GetPresetFrequencyL( TInt aIndex, TInt& aFrequency)
+    {
+    FUNC_LOG;
+    TPreset preset;
+    iBody->ReadPresetL( aIndex, preset );
+    aFrequency = preset.Frequency();
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CRadioFmPresetUtility::GetMaxNumberOfPresets( TInt& aMaxNumOfPresets ) const
+    {
+    FUNC_LOG;
+    aMaxNumOfPresets = iBody->MaxNumberOfPresets();
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CRadioFmPresetUtility::GetNumberOfPresets( TInt& aNumOfPresets ) const
+    {
+    FUNC_LOG;
+    aNumOfPresets = iBody->PresetCount();
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CRadioFmPresetUtility::GetFirstPresetL( TInt& aIndex) const
+    {
+    FUNC_LOG;
+    aIndex = iBody->FirstPreset();
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CRadioFmPresetUtility::GetNextPresetL( TInt aIndex, TInt& aNextIndex ) const
+    {
+    FUNC_LOG;
+    aNextIndex = iBody->NextPreset( aIndex );
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CRadioFmPresetUtility::DeletePresetL( TInt aIndex )
+    {
+    FUNC_LOG;
+    User::LeaveIfError( iBody->DeletePreset( aIndex ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CRadioFmPresetUtility::PresetChanged()
+// Returns: None
+// -----------------------------------------------------------------------------
+void CRadioFmPresetUtility::PresetChanged( TPresetChangeEvent aChange, TInt aIndex )
+    {
+    FUNC_LOG;
+    iObserver.MrpeoPresetChanged( (MRadioPresetObserver::TPresetChangeEvent)aChange, aIndex );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/src/preset.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,268 @@
+/*
+* Copyright (c) 2009 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:
+*
+*
+*/
+
+
+//  INCLUDES
+#include <s32mem.h> // RWriteStream, RReadStream
+
+#include <preset.h>
+#include "trace.h"
+
+/**
+ * On/Off type flags
+ *
+ * Bit shifting in the value initialization is used to easily create
+ * progressing bit patterns like so:
+ *  1 << 0 equals 0001 equals 0x1
+ *  1 << 1 equals 0010 equals 0x2
+ *  1 << 2 equals 0100 equals 0x4
+ *  1 << 3 equals 1000 equals 0x8
+ */
+enum TFlagValues
+    {
+     EFavorite       = 1 << 0
+    ,ELocalStation   = 1 << 1
+    ,ERenamedByUser  = 1 << 2
+    };
+
+// ============== LOCAL FUNCTIONS ===============
+
+/**
+ * Normalize return value from TBitFlags to ETrue or EFalse values
+ * Two negations: 16 => 0 => 1
+ */
+static TBool NormalizeBool( TBool aBool )
+    {
+    return !( !aBool );
+    }
+
+const TUint8 KNbrOfMyExternalizedUint32Items = 3;
+
+// ============= MEMBER FUNCTIONS ==============
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPreset::TPreset()
+    : iPresetFrequency( 0 )
+    {
+    FUNC_LOG;
+    }
+
+// ---------------------------------------------------------------------------
+// Returns the channel frequency
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TUint TPreset::Frequency() const
+    {
+    FUNC_LOG;
+    return iPresetFrequency;
+    }
+
+// ---------------------------------------------------------------------------
+// Returns the channel name
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtrC TPreset::Name() const
+    {
+    FUNC_LOG;
+    return TPtrC( iPresetName );
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtrC TPreset::Url() const
+    {
+    FUNC_LOG;
+    return TPtrC( iUrl );
+    }
+
+
+// ---------------------------------------------------------------------------
+// Sets the channel name
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void TPreset::SetName( const TPresetName& aStationName )
+    {
+    FUNC_LOG;
+    iPresetName = aStationName;
+    }
+
+// ---------------------------------------------------------------------------
+// Sets the channel frequency
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void TPreset::SetFrequency( const TUint aFrequency )
+    {
+    FUNC_LOG;
+    iPresetFrequency = aFrequency;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void TPreset::SetUrl( const TRadioUrl& aUrl )
+    {
+    FUNC_LOG;
+    iUrl = aUrl;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void TPreset::SetFavorite( TBool aFavorite )
+    {
+    FUNC_LOG;
+    iFlags.Assign( EFavorite, aFavorite );
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool TPreset::Favorite() const
+    {
+    FUNC_LOG;
+    // Normalize return value from TBitFlags to 1 or 0 just in case
+    // Two negations: 16 => 0 => 1
+    return NormalizeBool( iFlags.IsSet( EFavorite ) );
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void TPreset::SetLocalStation( TBool aLocalStation )
+    {
+    FUNC_LOG;
+    iFlags.Assign( ELocalStation, aLocalStation );
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool TPreset::LocalStation() const
+    {
+    FUNC_LOG;
+    // Normalize return value from TBitFlags to 1 or 0 just in case
+    // Two negations: 16 => 0 => 1
+    return NormalizeBool( iFlags.IsSet( ELocalStation ) );
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void TPreset::SetRenamedByUser( TBool aRenamed )
+    {
+    FUNC_LOG;
+    iFlags.Assign( ERenamedByUser, aRenamed );
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool TPreset::RenamedByUser() const
+    {
+    FUNC_LOG;
+    // Normalize return value from TBitFlags to 1 or 0 just in case
+    // Two negations: 16 => 0 => 1
+    return NormalizeBool( iFlags.IsSet( ERenamedByUser ) );
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void TPreset::SetGenre( TInt aGenre )
+    {
+    FUNC_LOG;
+    iGenre = aGenre;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt TPreset::Genre() const
+    {
+    FUNC_LOG;
+    return iGenre;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void TPreset::SetPiCode( TInt aPiCode )
+    {
+    FUNC_LOG;
+    iPiCode = aPiCode;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt TPreset::PiCode() const
+    {
+    FUNC_LOG;
+    return iPiCode;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TUint TPreset::MyExternalizedDataSize() const
+    {
+    FUNC_LOG;
+    return ( KNbrOfMyExternalizedUint32Items * sizeof(TUint32) );
+    }
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void TPreset::ExternalizeL( RWriteStream& aStream ) const
+    {
+    FUNC_LOG;
+    aStream.WriteUint32L( iGenre );
+    aStream.WriteUint32L( iPiCode );
+    aStream.WriteUint32L( iFlags.Value() );
+
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void TPreset::InternalizeL( RReadStream& aStream )
+    {
+    FUNC_LOG;
+    iGenre = aStream.ReadUint32L();
+    iPiCode = aStream.ReadUint32L();
+    iFlags = TBitFlags( aStream.ReadUint32L() );
+
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/src/presetutility.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2009 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 <presetutility.h>
+#include "presetutilitybody.h"
+#include "trace.h"
+
+// ============= MEMBER FUNCTIONS ==============
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CPresetUtility* CPresetUtility::NewL()
+    {
+    FUNC_LOG;
+    return CPresetUtilityBody::NewL();
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CPresetUtility::~CPresetUtility()
+    {
+    FUNC_LOG;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/src/presetutilitybody.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,158 @@
+/*
+* Copyright (c) 2009 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 "presetutilitybody.h"
+#include "cenrephandler.h"
+#include "presetcrkeys.h"
+#include <presetutilityobserver.h>
+#include "trace.h"
+
+
+// ============= MEMBER FUNCTIONS ==============
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CPresetUtilityBody* CPresetUtilityBody::NewL()
+    {
+    FUNC_LOG;
+    CPresetUtilityBody* self = new (ELeave) CPresetUtilityBody();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CPresetUtilityBody::CPresetUtilityBody()
+    {
+    FUNC_LOG;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CPresetUtilityBody::~CPresetUtilityBody()
+    {
+    FUNC_LOG;
+    delete iCenrepHandler;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPresetUtilityBody::ConstructL()
+    {
+    FUNC_LOG;
+    iCenrepHandler = CCenrepHandler::NewL();
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPresetUtilityBody::SetObserver( MPresetUtilityObserver* aObserver )
+    {
+    FUNC_LOG;
+    iObserver = aObserver;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CPresetUtilityBody::MaxNumberOfPresets() const
+    {
+    FUNC_LOG;
+    return iCenrepHandler->MaxPresetCount();
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CPresetUtilityBody::PresetCount() const
+    {
+    FUNC_LOG;
+    return iCenrepHandler->PresetCount();
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CPresetUtilityBody::FirstPreset() const
+    {
+    FUNC_LOG;
+    return iCenrepHandler->FirstPreset();
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CPresetUtilityBody::NextPreset( TInt aFromIndex ) const
+    {
+    return iCenrepHandler->NextPreset( aFromIndex );
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CPresetUtilityBody::DeletePreset( TInt aIndex )
+    {
+    FUNC_LOG;
+    TInt err( iCenrepHandler->DeletePreset( aIndex ) );
+    if ( iObserver )
+        {
+        iObserver->PresetChanged( MPresetUtilityObserver::EPresetDeleted, aIndex );
+        }
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CPresetUtilityBody::SavePresetL( const TPreset& aPreset, TInt aIndex )
+    {
+    FUNC_LOG;
+    TInt usedIndex = iCenrepHandler->SavePresetL( aPreset, aIndex );
+    if ( iObserver )
+        {
+        iObserver->PresetChanged( MPresetUtilityObserver::EPresetAdded, aIndex );
+        }
+    return usedIndex;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPresetUtilityBody::ReadPresetL( TInt aIndex, TPreset& aPreset )
+    {
+    FUNC_LOG;
+    iCenrepHandler->ReadPresetL( aIndex, aPreset );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/tsrc/Bmarm/PresetUtilityTestModuleU.DEF	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	LibEntryL__FR13CTestModuleIf @ 1 NONAME R3UNUSED ; LibEntryL(CTestModuleIf &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/tsrc/Bwins/PresetUtilityTestModuleU.DEF	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * __cdecl LibEntryL(class CTestModuleIf &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/tsrc/EABI/PresetUtilityTestModuleU.def	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	_Z9LibEntryLR13CTestModuleIf @ 1 NONAME
+
Binary file mmserv/radioutility/presetutility/tsrc/cenrep/10207B87.txt has changed
Binary file mmserv/radioutility/presetutility/tsrc/cenrep/presetutility.confml has changed
Binary file mmserv/radioutility/presetutility/tsrc/cenrep/presetutility_10207B87.crml has changed
Binary file mmserv/radioutility/presetutility/tsrc/conf/10207B87.txt has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/tsrc/conf/PresetUtilityTestModule.cfg	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,698 @@
+[Define]
+ChannelNameNull "EMPTYSTRING"
+ChannelFrequencyNull 0
+ChannelUrlNull "EMPTYSTRING"
+ChannelName0 "Radio Pop"
+ChannelFrequency0 104000000
+ChannelUrl0 "www.radiopop.fi"
+ChannelName1 "Radio Soul"
+ChannelFrequency1 97500000
+ChannelUrl1 "www.radiosoul.fi"
+ChannelName2 "Radio Rock"
+ChannelFrequency2 91300000
+ChannelUrl2 "www.radiorock.fi"
+ChannelName3 "Radio Humppa"
+ChannelFrequency3 11300000
+ChannelUrl3 "www.radiohumppa.fi"
+KErrNotFound				-1
+KErrGeneral                 -2
+KErrArgument				-6
+KErrDiskFull				-26
+KErrBadTestParameter		-1000
+KErrEventPending			-2000
+KErrCallbackErrorCode		-2001
+KErrUnexpectedValue			-2002
+KExpectedFrequencyChange	-2003
+KErrTimeoutController		-2007
+[Enddefine]
+
+[Test]
+title Example
+create PresetUtilityTestModule PresetUtility
+PresetUtility Example pa ra me ters
+delete PresetUtility
+[Endtest] 
+
+// Preset Utility API functions' tests
+
+[Test]
+title 1.1 Create PresetUtility
+create PresetUtilityTestModule PresetUtility
+PresetUtility CreatePresetUtility Preset
+PresetUtility DestroyPresetUtility
+delete PresetUtility
+[Endtest]
+
+[Test]
+title 1.1a OOM for creation of PresetUtility
+create PresetUtilityTestModule PresetUtility
+oomignorefailure ON
+loop 9
+oomheapfailnext LOOP_COUNTER
+PresetUtility CreatePresetUtility Preset
+print LOOP_COUNTER
+endloop
+oomignorefailure OFF
+oomheaptonormal
+PresetUtility DestroyPresetUtility
+delete PresetUtility
+[Endtest]
+
+[Test]
+title 1.2 Get current and max number of preset channels
+create PresetUtilityTestModule PresetUtility
+PresetUtility CreatePresetUtility Preset
+PresetUtility PresetCount 2
+allownextresult 100
+PresetUtility MaxNumberOfPresets
+PresetUtility DestroyPresetUtility
+delete PresetUtility
+[Endtest]
+
+[Test]
+title 1.3 Get preset channels 1 and 2
+create PresetUtilityTestModule PresetUtility
+PresetUtility CreatePresetUtility Preset
+PresetUtility ReadPresetL 0 ChannelName0 ChannelFrequency0 ChannelUrl0
+PresetUtility ReadPresetL 1 ChannelName1 ChannelFrequency1 ChannelUrl1
+PresetUtility DestroyPresetUtility
+delete PresetUtility
+[Endtest]
+
+[Test]
+title 1.4 Get first preset channels
+create PresetUtilityTestModule PresetUtility
+PresetUtility CreatePresetUtility Preset
+PresetUtility FirstPreset 0
+PresetUtility DestroyPresetUtility
+delete PresetUtility
+[Endtest]
+
+[Test]
+title 1.5 Get next preset channels
+create PresetUtilityTestModule PresetUtility
+PresetUtility CreatePresetUtility Preset
+PresetUtility NextPreset 0 1
+PresetUtility DestroyPresetUtility
+delete PresetUtility
+[Endtest]
+
+[Test]
+title 1.5a Set and delete preset channels x
+create PresetUtilityTestModule PresetUtility
+PresetUtility CreatePresetUtility Preset
+allownextresult 2
+PresetUtility SavePresetL -1 ChannelName2 ChannelFrequency2 ChannelUrl2
+PresetUtility DeletePreset 2
+PresetUtility DestroyPresetUtility
+delete PresetUtility
+[Endtest]
+
+[Test]
+title 1.5b Read unexisting preset channels x
+create PresetUtilityTestModule PresetUtility
+PresetUtility CreatePresetUtility Preset
+allowerrorcodes KErrArgument
+PresetUtility ReadPresetL 101 ChannelName2 ChannelFrequency2 ChannelUrl2
+PresetUtility DestroyPresetUtility
+delete PresetUtility
+[Endtest]
+
+[Test]
+title 1.6 Save, Get and Delete preset channels 2 and 3
+create PresetUtilityTestModule PresetUtility
+PresetUtility CreatePresetUtility Preset
+allownextresult 2
+PresetUtility SavePresetL 2 ChannelName2 ChannelFrequency2 ChannelUrl2
+allownextresult 3
+PresetUtility SavePresetL 3 ChannelName3 ChannelFrequency3 ChannelUrl3
+PresetUtility ReadPresetL 2 ChannelName2 ChannelFrequency2 ChannelUrl2
+PresetUtility ReadPresetL 3 ChannelName3 ChannelFrequency3 ChannelUrl3
+PresetUtility DeletePreset 2
+PresetUtility DeletePreset 3
+PresetUtility ReadPresetL 0 ChannelName0 ChannelFrequency0 ChannelUrl0
+PresetUtility ReadPresetL 1 ChannelName1 ChannelFrequency1 ChannelUrl1
+allowerrorcodes KErrUnexpectedValue KErrNotFound
+PresetUtility ReadPresetL 2 ChannelName2 ChannelFrequency2 ChannelUrl2
+allowerrorcodes KErrUnexpectedValue KErrNotFound
+PresetUtility ReadPresetL 3 ChannelName3 ChannelFrequency3 ChannelUrl3
+PresetUtility DestroyPresetUtility
+delete PresetUtility
+[Endtest]
+
+[Test]
+title 1.7 Save preset channels 3 and 4, delete all 
+create PresetUtilityTestModule PresetUtility
+PresetUtility CreatePresetUtility Preset
+allownextresult 2
+PresetUtility SavePresetL 2 ChannelName2 ChannelFrequency2 ChannelUrl2
+allownextresult 3
+PresetUtility SavePresetL 3 ChannelName3 ChannelFrequency3 ChannelUrl3
+PresetUtility ReadPresetL 2 ChannelName2 ChannelFrequency2 ChannelUrl2
+PresetUtility ReadPresetL 3 ChannelName3 ChannelFrequency3 ChannelUrl3
+PresetUtility DeletePreset -1
+allowerrorcodes KErrUnexpectedValue KErrNotFound
+PresetUtility ReadPresetL 0 ChannelName0 ChannelFrequency0 ChannelUrl0
+allowerrorcodes KErrUnexpectedValue KErrNotFound
+PresetUtility ReadPresetL 1 ChannelName1 ChannelFrequency1 ChannelUrl1
+allowerrorcodes KErrUnexpectedValue KErrNotFound
+PresetUtility ReadPresetL 2 ChannelName2 ChannelFrequency2 ChannelUrl2
+allowerrorcodes KErrUnexpectedValue KErrNotFound
+PresetUtility ReadPresetL 3 ChannelName3 ChannelFrequency3 ChannelUrl3
+PresetUtility DestroyPresetUtility
+delete PresetUtility
+[Endtest]
+
+[Test]
+title 1.7a Try to delete unexisting channel 
+create PresetUtilityTestModule PresetUtility
+PresetUtility CreatePresetUtility Preset
+allowerrorcodes KErrArgument
+PresetUtility DeletePreset 3
+PresetUtility DestroyPresetUtility
+delete PresetUtility
+[Endtest]
+
+[Test]
+title 1.8 Try to read from an unexisting and also from an illegal preset index.
+create PresetUtilityTestModule PresetUtility
+PresetUtility CreatePresetUtility Preset
+allowerrorcodes KErrNotFound
+PresetUtility ReadPresetL 44 ChannelNameNull ChannelFrequencyNull ChannelUrlNull
+allowerrorcodes KErrArgument
+PresetUtility ReadPresetL 100 ChannelNameNull ChannelFrequencyNull ChannelUrlNull
+PresetUtility DestroyPresetUtility
+delete PresetUtility
+[Endtest]
+
+[Test]
+title 1.9 OOM test for SavePresetL.
+create PresetUtilityTestModule PresetUtility
+PresetUtility CreatePresetUtility Preset
+oomignorefailure ON
+loop 7
+oomheapfailnext LOOP_COUNTER
+PresetUtility SavePresetL 3 ChannelName3 ChannelFrequency3 ChannelUrl3
+print LOOP_COUNTER
+endloop
+oomignorefailure OFF
+oomheaptonormal
+PresetUtility DeletePreset 3
+PresetUtility DestroyPresetUtility
+delete PresetUtility
+[Endtest]
+
+[Test]
+title 1.10 OOM test for ReadPresetL.
+create PresetUtilityTestModule PresetUtility
+PresetUtility CreatePresetUtility Preset
+allownextresult 3
+PresetUtility SavePresetL 3 ChannelName3 ChannelFrequency3 ChannelUrl3
+oomignorefailure ON
+loop 6
+oomheapfailnext LOOP_COUNTER
+PresetUtility ReadPresetL 3 ChannelName3 ChannelFrequency3 ChannelUrl3
+print LOOP_COUNTER
+endloop
+oomignorefailure OFF
+oomheaptonormal
+PresetUtility DeletePreset 3
+PresetUtility DestroyPresetUtility
+delete PresetUtility
+[Endtest]
+
+[Test]
+title 1.11 OOM test for DeletePreset.
+create PresetUtilityTestModule PresetUtility
+PresetUtility CreatePresetUtility Preset
+allownextresult 3
+PresetUtility SavePresetL 3 ChannelName3 ChannelFrequency3 ChannelUrl3
+oomignorefailure ON
+loop 2
+oomheapfailnext LOOP_COUNTER
+PresetUtility DeletePreset -1
+print LOOP_COUNTER
+endloop
+oomignorefailure OFF
+oomheaptonormal
+PresetUtility DeletePreset -1
+PresetUtility DestroyPresetUtility
+delete PresetUtility
+[Endtest]
+
+[Test]
+title 1.12 Add maximum number of presets
+create PresetUtilityTestModule PresetUtility
+PresetUtility CreatePresetUtility Preset
+PresetUtility DeletePreset -1
+loop 10
+print LOOP_COUNTER
+allownextresult 1 2 3 4 5 6 7 8 9 0 
+PresetUtility SavePresetL -1 ChannelName1 ChannelFrequency1
+endloop
+loop 10
+print LOOP_COUNTER
+allownextresult 11 12 13 14 15 16 17 18 19 10 
+PresetUtility SavePresetL -1 ChannelName1 ChannelFrequency1
+endloop
+loop 10
+print LOOP_COUNTER
+allownextresult 21 22 23 24 25 26 27 28 29 20 
+PresetUtility SavePresetL -1 ChannelName1 ChannelFrequency1
+endloop
+loop 10
+print LOOP_COUNTER
+allownextresult 31 32 33 34 35 36 37 38 39 30 
+PresetUtility SavePresetL -1 ChannelName1 ChannelFrequency1
+endloop
+loop 10
+print LOOP_COUNTER
+allownextresult 41 42 43 44 45 46 47 48 49 40
+PresetUtility SavePresetL -1 ChannelName1 ChannelFrequency1
+endloop
+loop 10
+print LOOP_COUNTER
+allownextresult 51 52 53 54 55 56 57 58 59 50 
+PresetUtility SavePresetL -1 ChannelName1 ChannelFrequency1
+endloop
+loop 10
+print LOOP_COUNTER
+allownextresult 61 62 63 64 65 66 67 68 69 60 
+PresetUtility SavePresetL -1 ChannelName1 ChannelFrequency1
+endloop
+loop 10
+print LOOP_COUNTER
+allownextresult 71 72 73 74 75 76 77 78 79 70 
+PresetUtility SavePresetL -1 ChannelName1 ChannelFrequency1
+endloop
+loop 10
+print LOOP_COUNTER
+allownextresult 81 82 83 84 85 86 87 88 89 80 
+PresetUtility SavePresetL -1 ChannelName1 ChannelFrequency1
+endloop
+loop 10
+print LOOP_COUNTER
+allownextresult 91 92 93 94 95 96 97 98 99 90
+PresetUtility SavePresetL -1 ChannelName1 ChannelFrequency1
+endloop
+allowerrorcodes KErrArgument KErrDiskFull
+PresetUtility SavePresetL 100 ChannelName2 ChannelFrequency2
+oomignorefailure ON
+loop 3
+oomheapfailnext LOOP_COUNTER
+allowerrorcodes KErrArgument KErrDiskFull
+PresetUtility SavePresetL -1 ChannelName1 ChannelFrequency1
+PresetUtility DeletePreset 50
+print LOOP_COUNTER
+endloop
+oomignorefailure OFF
+oomheaptonormal
+oomignorefailure ON
+loop 3
+oomheapfailnext LOOP_COUNTER
+PresetUtility DeletePreset -1
+print LOOP_COUNTER
+endloop
+oomignorefailure OFF
+oomheaptonormal
+PresetUtility DeletePreset -1
+PresetUtility DestroyPresetUtility
+delete PresetUtility
+[Endtest]
+
+
+// TRadioPreset class tests 2.1 -->
+
+[Test]
+title 2.1 TRadioPreset, Set and Get PI code
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateRadioPresetL
+FmPresetUtility SetPiCode 7
+FmPresetUtility PiCode 7
+FmPresetUtility SetPiCode 0
+FmPresetUtility PiCode 0
+FmPresetUtility DestroyRadioPreset
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 2.2 TRadioPreset, Set and Get PTY
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateRadioPresetL
+FmPresetUtility SetGenre 7
+FmPresetUtility Genre 7
+FmPresetUtility SetGenre 0
+FmPresetUtility Genre 0
+FmPresetUtility DestroyRadioPreset
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 2.3 TRadioPreset, Set and Get favourite status
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateRadioPresetL
+FmPresetUtility SetFavorite 1
+FmPresetUtility Favorite 1
+FmPresetUtility SetFavorite 0
+FmPresetUtility Favorite 0
+FmPresetUtility SetFavorite 1100
+FmPresetUtility Favorite 1
+FmPresetUtility DestroyRadioPreset
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 2.4 TRadioPreset, Set and Get the local station information.
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateRadioPresetL
+FmPresetUtility SetLocalStation 1
+FmPresetUtility LocalStation 1
+FmPresetUtility SetLocalStation 5612
+FmPresetUtility LocalStation 1
+FmPresetUtility SetLocalStation 0
+FmPresetUtility LocalStation 0
+FmPresetUtility DestroyRadioPreset
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 2.5 TRadioPreset, Set and Get the user rename information.
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateRadioPresetL
+FmPresetUtility SetRenamedByUser 1
+FmPresetUtility RenamedByUser 1
+FmPresetUtility SetRenamedByUser 1100
+FmPresetUtility RenamedByUser 1
+FmPresetUtility SetRenamedByUser 0
+FmPresetUtility RenamedByUser 0
+FmPresetUtility DestroyRadioPreset
+delete FmPresetUtility
+[Endtest]
+
+// Deprecating Fm Preset Utility API functions' tests
+
+[Test]
+title 3.1 Create FmPresetUtility
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+FmPresetUtility DeletePresetL -1
+FmPresetUtility GetNumberOfPresets 0
+FmPresetUtility SetPresetL 0 ChannelName0 ChannelFrequency0
+FmPresetUtility SetPresetL 1 ChannelName1 ChannelFrequency1
+FmPresetUtility SetPresetUrlL 0 ChannelUrl0
+FmPresetUtility SetPresetUrlL 1 ChannelUrl1
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.2 Get current and max number of presets
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+FmPresetUtility GetNumberOfPresets 2
+allownextresult 100
+FmPresetUtility GetMaxNumberOfPresets
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.3 Get presets 0 an 1
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+FmPresetUtility GetPresetL 0 ChannelName0 ChannelFrequency0
+FmPresetUtility GetPresetL 1 ChannelName1 ChannelFrequency1
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.4 Get first preset
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+FmPresetUtility GetFirstPresetL 0
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.5 Get next preset
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+FmPresetUtility GetNextPresetL 0 1
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.6 Set and delete preset x
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+allowerrorcodes KErrArgument
+FmPresetUtility SetPresetL -1 ChannelName2 ChannelFrequency2
+allowerrorcodes KErrArgument
+FmPresetUtility DeletePresetL 2
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.7 Read unexisting preset x
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+allowerrorcodes KErrArgument KErrNotFound
+FmPresetUtility GetPresetL 100 ChannelName2 ChannelFrequency2
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.8 Save, Get and Delete presets 2 and 3
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+FmPresetUtility SetPresetL 2 ChannelName2 ChannelFrequency2
+FmPresetUtility SetPresetL 3 ChannelName3 ChannelFrequency3
+FmPresetUtility GetPresetL 2 ChannelName2 ChannelFrequency2
+FmPresetUtility GetPresetL 3 ChannelName3 ChannelFrequency3
+FmPresetUtility DeletePresetL 2
+FmPresetUtility DeletePresetL 3
+FmPresetUtility GetPresetL 0 ChannelName0 ChannelFrequency0
+FmPresetUtility GetPresetL 1 ChannelName1 ChannelFrequency1
+allowerrorcodes KErrUnexpectedValue KErrNotFound
+FmPresetUtility GetPresetL 2 ChannelName2 ChannelFrequency2
+allowerrorcodes KErrUnexpectedValue KErrNotFound
+FmPresetUtility GetPresetL 3 ChannelName3 ChannelFrequency3
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.9 Save presets 2 and 3, delete all 
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+FmPresetUtility SetPresetL 2 ChannelName2 ChannelFrequency2
+FmPresetUtility SetPresetL 3 ChannelName3 ChannelFrequency3
+FmPresetUtility GetPresetL 2 ChannelName2 ChannelFrequency2
+FmPresetUtility GetPresetL 3 ChannelName3 ChannelFrequency3
+FmPresetUtility DeletePresetL -1
+allowerrorcodes KErrUnexpectedValue KErrNotFound
+FmPresetUtility GetPresetL 0 ChannelName0 ChannelFrequency0
+allowerrorcodes KErrUnexpectedValue KErrNotFound
+FmPresetUtility GetPresetL 1 ChannelName1 ChannelFrequency1
+allowerrorcodes KErrUnexpectedValue KErrNotFound
+FmPresetUtility GetPresetL 2 ChannelName2 ChannelFrequency2
+allowerrorcodes KErrUnexpectedValue KErrNotFound
+FmPresetUtility GetPresetL 3 ChannelName3 ChannelFrequency3
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.10 Try to delete unexisting preset
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+allowerrorcodes KErrArgument
+FmPresetUtility DeletePresetL 3
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.11 Set and Get PI code
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+FmPresetUtility SetPresetL 2 ChannelName2 ChannelFrequency2
+FmPresetUtility SetPresetPICodeL 2 7
+FmPresetUtility GetPresetPICodeL 2 7
+FmPresetUtility SetPresetPICodeL 2 0
+FmPresetUtility GetPresetPICodeL 2 0
+FmPresetUtility DeletePresetL 2
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.12 Set and Get favourite status
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+FmPresetUtility SetPresetL 2 ChannelName2 ChannelFrequency2
+FmPresetUtility SetPresetFavouriteInfoL 2 1
+FmPresetUtility GetPresetFavouriteInfoL 2 1
+FmPresetUtility SetPresetFavouriteInfoL 2 0
+FmPresetUtility GetPresetFavouriteInfoL 2 0
+FmPresetUtility DeletePresetL 2
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.12a Set and Get favourite status. Setting with >1 value.
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+FmPresetUtility SetPresetL 2 ChannelName2 ChannelFrequency2
+FmPresetUtility SetPresetFavouriteInfoL 2 2
+FmPresetUtility GetPresetFavouriteInfoL 2 1
+FmPresetUtility SetPresetFavouriteInfoL 2 1100
+FmPresetUtility GetPresetFavouriteInfoL 2 1
+FmPresetUtility SetPresetFavouriteInfoL 2 0
+FmPresetUtility GetPresetFavouriteInfoL 2 0
+FmPresetUtility DeletePresetL 2
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.12b Try to set and get an unexisting preset with specified favourite.
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+allowerrorcodes KErrNotFound
+FmPresetUtility SetPresetFavouriteInfoL 10 1
+allowerrorcodes KErrNotFound
+FmPresetUtility GetPresetFavouriteInfoL 11 0
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.13 Set and Get the preset with specified user rename information.
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+FmPresetUtility SetPresetL 3 ChannelName3 ChannelFrequency3
+FmPresetUtility SetPresetUserRenameInfoL 3 1
+FmPresetUtility GetPresetUserRenameInfoL 3 1
+FmPresetUtility SetPresetUserRenameInfoL 3 0
+FmPresetUtility GetPresetUserRenameInfoL 3 0
+FmPresetUtility DeletePresetL 3
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.13a Set and Get the preset with specified user rename information. Setting with >1 value.
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+FmPresetUtility SetPresetL 3 ChannelName3 ChannelFrequency3
+FmPresetUtility SetPresetUserRenameInfoL 3 2
+FmPresetUtility GetPresetUserRenameInfoL 3 1
+FmPresetUtility SetPresetUserRenameInfoL 3 15
+FmPresetUtility GetPresetUserRenameInfoL 3 1
+FmPresetUtility SetPresetUserRenameInfoL 3 0
+FmPresetUtility GetPresetUserRenameInfoL 3 0
+FmPresetUtility DeletePresetL 3
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.13b Try to set and get an unexisting preset with specified user rename information.
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+allowerrorcodes KErrNotFound
+FmPresetUtility SetPresetUserRenameInfoL 10 1
+allowerrorcodes KErrNotFound
+FmPresetUtility GetPresetUserRenameInfoL 11 0
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.14 Set and Get the preset with specified channel PTY (genre).
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+FmPresetUtility SetPresetL 3 ChannelName3 ChannelFrequency3
+FmPresetUtility SetPresetPtyL 3 8
+FmPresetUtility GetPresetPtyL 3 8
+FmPresetUtility SetPresetPtyL 3 0
+FmPresetUtility GetPresetPtyL 3 0
+FmPresetUtility DeletePresetL 3
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.15 Set and Get preset with specified URL.
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+FmPresetUtility SetPresetL 3 ChannelName3 ChannelFrequency3
+FmPresetUtility SetPresetUrlL 3 ChannelUrl3
+FmPresetUtility GetPresetUrlL 3 ChannelUrl3
+FmPresetUtility SetPresetUrlL 3 ChannelUrl1
+allowerrorcodes KErrUnexpectedValue
+FmPresetUtility GetPresetUrlL 3 ChannelUrl2
+FmPresetUtility GetPresetUrlL 3 ChannelUrl1
+FmPresetUtility DeletePresetL 3
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.16 Set preset x, Set name to empty and frequency to 0, try to get URL, UserRenameInfo and FavouriteInfo.
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+FmPresetUtility SetPresetL 2 ChannelName2 ChannelFrequency2
+FmPresetUtility SetPresetUrlL 2 ChannelUrl2
+FmPresetUtility GetPresetNameL 2 ChannelName2
+FmPresetUtility GetPresetFrequencyL 2 ChannelFrequency2
+FmPresetUtility GetPresetUrlL 2 ChannelUrl2
+FmPresetUtility SetPresetL 1 ChannelName1 ChannelFrequency1
+FmPresetUtility GetPresetUrlL 2 ChannelUrl2
+FmPresetUtility SetPresetL 2 ChannelNameNull ChannelFrequencyNull
+FmPresetUtility GetPresetUrlL 2 ChannelUrlNull
+FmPresetUtility SetPresetUserRenameInfoL 2 0
+FmPresetUtility GetPresetFavouriteInfoL 2 0
+FmPresetUtility GetPresetNameL 2 ChannelNameNull
+FmPresetUtility GetPresetFrequencyL 2 ChannelFrequencyNull
+FmPresetUtility DeletePresetL 2
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.17 Try to get a frequency from an unexisting and also from an illegal preset index.
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+allowerrorcodes KErrNotFound
+FmPresetUtility GetPresetFrequencyL 44 ChannelFrequencyNull
+allowerrorcodes KErrArgument
+FmPresetUtility GetPresetFrequencyL 101 ChannelFrequencyNull
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
+[Test]
+title 3.18 OOM Set and delete preset
+create PresetUtilityTestModule FmPresetUtility
+FmPresetUtility CreateFmPresetUtility Preset
+oomignorefailure ON
+loop 3
+oomheapfailnext LOOP_COUNTER
+FmPresetUtility SetPresetL 2 ChannelName2 ChannelFrequency2
+print LOOP_COUNTER
+endloop
+oomignorefailure OFF
+oomheaptonormal
+FmPresetUtility DeletePresetL 2
+FmPresetUtility DestroyFmPresetUtility
+delete FmPresetUtility
+[Endtest]
+
Binary file mmserv/radioutility/presetutility/tsrc/conf/presetutility.confml has changed
Binary file mmserv/radioutility/presetutility/tsrc/conf/presetutility_10207B87.crml has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/tsrc/group/Bld.inf	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2009 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 <platform_paths.hrh>
+
+
+PRJ_PLATFORMS
+// specify the platforms your component needs to be built for here
+// defaults to WINS MARM so you can ignore this if you just build these
+	
+	DEFAULT
+
+PRJ_TESTEXPORTS
+// NOTE: If using ARS requirements all export operations should be done under this.
+// 'abld test export'
+
+PRJ_EXPORTS
+// Specify the source file followed by its destination here
+// copy will be used to copy the source file to its destination
+// If there's no destination then the source file will be copied
+// to the same name in /epoc32/include
+// Example: 
+/*
+/agnmodel/inc/AGMCOMON.H
+*/
+
+PRJ_TESTMMPFILES
+
+	PresetUtilityTestModule.mmp
+
+PRJ_MMPFILES
+
+	PresetUtilityTestModule_nrm.mmp
+
+// Specify the .mmp files required for building the important component
+// releasables.
+//
+// Specify "tidy" if the component you need to build doesn't need to be
+// released. Specify "ignore" if the MMP file exists but should be
+// ignored.
+// Example:
+/*
+/agnmodel/group/agnmodel.mmp
+#if defined(MARM)
+/agnmodel/group/agsvexe.mmp
+#endif
+*/
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/tsrc/group/PresetUtilityTestModule.mmp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,78 @@
+/*TYPE TESTCLASS*/
+/*
+* Copyright (c) 2009 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: MMP file for STIF Test Framework's TestScripter 
+* testclass test module.
+*
+*/
+
+#include <platform_paths.hrh>
+
+TARGET          PresetUtilityTestModule.dll
+TARGETTYPE      dll
+UID             0x1000008D 0x101FB3E3
+
+CAPABILITY      ALL -TCB
+/* Remove comments and replace 0x00000000 with correct vendor id */
+// VENDORID     0x00000000
+/* Remove comments and replace 0x00000000 with correct secure id */
+// SECUREID     0x00000000
+
+//TARGETPATH      ?target_path
+DEFFILE         PresetUtilityTestModule.def
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../inc
+
+MW_LAYER_SYSTEMINCLUDE
+
+SOURCEPATH      ../src
+
+SOURCE          PresetUtilityTestModule.cpp
+SOURCE          PresetUtilityTestModuleBlocks.cpp
+
+//RESOURCE        resource_file
+//RESOURCE        resource_file2
+
+LIBRARY         euser.lib
+LIBRARY         stiftestinterface.lib
+LIBRARY         stiftestengine.lib
+LIBRARY			presetutility.lib
+LIBRARY			fmpresetutility.lib
+
+LANG            SC
+
+/*
+START WINS      
+?wins_specific_information
+END
+
+START MARM
+?marm_specific_information
+END
+*/
+// Other possible keywords:
+ 
+// DOCUMENT     ?file, that is not compiled, but added to MSVC project workspace (i.e. release notes)
+/*
+START BITMAP ?target
+TARGETPATH   ?emulated_path_on_target_machine
+HEADER
+SOURCE       ?color_depth ?source_bitmap
+END
+*/
+// DEFFILE ?filename
+// AIF ?filename
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/tsrc/group/PresetUtilityTestModule.pkg	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,60 @@
+;
+; Copyright (c) 2009 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:
+;
+; 	Installation file for STIF
+;
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"STIF"},(0x00000000),1,1,0,TYPE=SA
+
+; Series60 product id for S60 3.0
+[0x101F7961], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Logo
+; None
+
+; Package signature - Optional
+; None
+
+; Start of Package body
+
+; Condition blocks
+; None
+
+; Options list
+; None
+
+; Install files
+"\epoc32\release\armv5\udeb\PresetUtilityTestModule.dll"   -   "!:\Sys\Bin\PresetUtilityTestModule.dll"
+  
+; Embedded SIS 
+; None
+
+; End of Package body
+
+; PKG dependencies
+; None
+
+; PKG capabilities
+; None
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/tsrc/group/PresetUtilityTestModule_DoxyFile.txt	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,239 @@
+#
+# Copyright (c) 2009 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:
+#
+#
+
+# Doxyfile 1.4.1
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME           = PresetUtilityTestModule
+PROJECT_NUMBER         = 
+OUTPUT_DIRECTORY       = C:\Symbian\Carbide\workspace\PresetUtilityTestModule\
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+USE_WINDOWS_ENCODING   = YES
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = 
+ALWAYS_DETAILED_SEC    = NO
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = 
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = NO
+JAVADOC_AUTOBRIEF      = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = NO
+INHERIT_DOCS           = YES
+DISTRIBUTE_GROUP_DOC   = NO
+TAB_SIZE               = 8
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = YES
+OPTIMIZE_OUTPUT_JAVA   = NO
+SUBGROUPING            = YES
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = NO
+EXTRACT_STATIC         = NO
+EXTRACT_LOCAL_CLASSES  = NO
+EXTRACT_LOCAL_METHODS  = NO
+HIDE_UNDOC_MEMBERS     = NO
+HIDE_UNDOC_CLASSES     = NO
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = YES
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+SORT_BRIEF_DOCS        = NO
+SORT_BY_SCOPE_NAME     = NO
+GENERATE_TODOLIST      = NO
+GENERATE_TESTLIST      = NO
+GENERATE_BUGLIST       = NO
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = YES
+SHOW_DIRECTORIES       = YES
+FILE_VERSION_FILTER    = 
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = NO
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_NO_PARAMDOC       = NO
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           = 
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT                  = C:\Symbian\Carbide\workspace\PresetUtilityTestModule\
+FILE_PATTERNS          = *.h \
+                         *.rh \
+                         *.hrh
+RECURSIVE              = YES
+EXCLUDE                = 
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = 
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = 
+INPUT_FILTER           = 
+FILTER_PATTERNS        = 
+FILTER_SOURCE_FILES    = NO
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = NO
+INLINE_SOURCES         = NO
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION    = YES
+VERBATIM_HEADERS       = YES
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX     = NO
+COLS_IN_ALPHA_INDEX    = 5
+IGNORE_PREFIX          = 
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML          = NO
+HTML_OUTPUT            = html
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            = 
+HTML_FOOTER            = 
+HTML_STYLESHEET        = 
+HTML_ALIGN_MEMBERS     = YES
+GENERATE_HTMLHELP      = YES
+CHM_FILE               = 
+HHC_LOCATION           = 
+GENERATE_CHI           = NO
+BINARY_TOC             = YES
+TOC_EXPAND             = YES
+DISABLE_INDEX          = YES
+ENUM_VALUES_PER_LINE   = 4
+GENERATE_TREEVIEW      = YES
+TREEVIEW_WIDTH         = 250
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX         = NO
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = a4wide
+EXTRA_PACKAGES         = 
+LATEX_HEADER           = 
+PDF_HYPERLINKS         = NO
+USE_PDFLATEX           = NO
+LATEX_BATCHMODE        = NO
+LATEX_HIDE_INDICES     = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF           = YES
+RTF_OUTPUT             = Doc
+COMPACT_RTF            = YES
+RTF_HYPERLINKS         = YES
+RTF_STYLESHEET_FILE    = 
+RTF_EXTENSIONS_FILE    = 
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN           = NO
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML           = NO
+XML_OUTPUT             = xml
+XML_SCHEMA             = 
+XML_DTD                = 
+XML_PROGRAMLISTING     = YES
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF   = NO
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD       = NO
+PERLMOD_LATEX          = NO
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX = 
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = YES
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = YES
+INCLUDE_PATH           = 
+INCLUDE_FILE_PATTERNS  = 
+PREDEFINED             = NONSHARABLE_CLASS
+EXPAND_AS_DEFINED      = 
+SKIP_FUNCTION_MACROS   = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+TAGFILES               = 
+GENERATE_TAGFILE       = 
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+PERL_PATH              = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = YES
+HIDE_UNDOC_RELATIONS   = YES
+HAVE_DOT               = NO
+CLASS_GRAPH            = YES
+COLLABORATION_GRAPH    = YES
+GROUP_GRAPHS           = YES
+UML_LOOK               = NO
+TEMPLATE_RELATIONS     = YES
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = YES
+CALL_GRAPH             = NO
+GRAPHICAL_HIERARCHY    = YES
+DIRECTORY_GRAPH        = YES
+DOT_IMAGE_FORMAT       = png
+DOT_PATH               = 
+DOTFILE_DIRS           = 
+MAX_DOT_GRAPH_WIDTH    = 1024
+MAX_DOT_GRAPH_HEIGHT   = 1024
+MAX_DOT_GRAPH_DEPTH    = 0
+DOT_TRANSPARENT        = NO
+DOT_MULTI_TARGETS      = NO
+GENERATE_LEGEND        = YES
+DOT_CLEANUP            = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+SEARCHENGINE           = NO
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/tsrc/group/PresetUtilityTestModule_nrm.mmp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,78 @@
+/*TYPE TESTCLASS*/
+/*
+* Copyright (c) 2009 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: MMP file for STIF Test Framework's TestScripter 
+* testclass test module.
+*
+*/
+
+#include <platform_paths.hrh>
+
+TARGET          PresetUtilityTestModule.dll
+TARGETTYPE      dll
+UID             0x1000008D 0x101FB3E3
+
+CAPABILITY      ALL -TCB
+/* Remove comments and replace 0x00000000 with correct vendor id */
+// VENDORID     0x00000000
+/* Remove comments and replace 0x00000000 with correct secure id */
+// SECUREID     0x00000000
+
+//TARGETPATH      ?target_path
+DEFFILE         PresetUtilityTestModule.def
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../inc
+
+MW_LAYER_SYSTEMINCLUDE
+
+SOURCEPATH      ../src
+
+SOURCE          PresetUtilityTestModule.cpp
+SOURCE          PresetUtilityTestModuleBlocks.cpp
+
+//RESOURCE        resource_file
+//RESOURCE        resource_file2
+
+LIBRARY         euser.lib
+LIBRARY         stiftestinterface.lib
+LIBRARY         stiftestengine.lib
+LIBRARY			presetutility.lib
+LIBRARY			fmpresetutility.lib
+
+LANG            SC
+
+/*
+START WINS      
+?wins_specific_information
+END
+
+START MARM
+?marm_specific_information
+END
+*/
+// Other possible keywords:
+ 
+// DOCUMENT     ?file, that is not compiled, but added to MSVC project workspace (i.e. release notes)
+/*
+START BITMAP ?target
+TARGETPATH   ?emulated_path_on_target_machine
+HEADER
+SOURCE       ?color_depth ?source_bitmap
+END
+*/
+// DEFFILE ?filename
+// AIF ?filename
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/tsrc/group/RestoreOrigCenrep.cmd	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,25 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+
+@echo Original environment restoration by presetutilitytestmodule...
+del \epoc32\winscw\c\TestFramework\PresetUtilityTestModule.cfg
+del \epoc32\wins\c\TestFramework\TestFramework.ini
+del \epoc32\winscw\c\TestFramework\TestFramework.ini
+copy ..\cenrep\10207b87.txt  \epoc32\data\z\private\10202be9\10207b87.txt
+copy ..\cenrep\10207b87.txt  \epoc32\RELEASE\winscw\UDEB\Z\private\10202be9\10207b87.txt
+copy ..\cenrep\10207b87.txt  \epoc32\RELEASE\winscw\UREL\Z\private\10202be9\10207b87.txt
+del \epoc32\winscw\c\private\10202BE9\persists\10207b87.cre
+@echo Original environment restoration by presetutilitytestmodule... Finished.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/tsrc/group/TestEnvInit.cmd	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,25 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+
+@echo Initializing test environment for presetutilitytestmodule...
+copy ..\conf\PresetUtilityTestModule.cfg \epoc32\winscw\c\TestFramework\PresetUtilityTestModule.cfg
+copy ..\init\PresetUtilityTestModule.ini \epoc32\wins\c\TestFramework\TestFramework.ini
+copy ..\init\PresetUtilityTestModule.ini \epoc32\winscw\c\TestFramework\TestFramework.ini
+copy ..\conf\10207b87.txt  \epoc32\data\z\private\10202be9\10207b87.txt
+copy ..\conf\10207b87.txt  \epoc32\RELEASE\winscw\UDEB\Z\private\10202be9\10207b87.txt
+copy ..\conf\10207b87.txt  \epoc32\RELEASE\winscw\UREL\Z\private\10202be9\10207b87.txt
+del \epoc32\winscw\c\private\10202BE9\persists\10207b87.cre
+@echo Test environment initialization for presetutilitytestmodule... Finished.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/tsrc/inc/PresetUtilityTestModule.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,284 @@
+/*
+* Copyright (c) 2009 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: STIF testclass declaration
+*
+*/
+
+#ifndef PRESETUTILITYTESTMODULE_H
+#define PRESETUTILITYTESTMODULE_H
+
+//  INCLUDES
+#include <StifLogger.h>
+#include <TestScripterInternal.h>
+#include <StifTestModule.h>
+#include <TestclassAssert.h>
+//INTERNAL INCLUDES
+#include <presetutility.h>
+#include <presetutilityobserver.h>
+#include <RadioFmPresetUtility.h>
+#include <preset.h>
+#include "trace.h"
+
+
+// CONSTANTS
+const TInt KErrBadTestParameter= -1000;         // Error on configuration file
+
+const TInt KErrEventPending =-2000;             // Timeout and not callback 
+const TInt KErrCallbackErrorCode = -2001;       // Callback return error code
+const TInt KErrUnexpectedValue =-2002;          // Unexpected value at setting    
+const TInt KExpectedFrequencyChange = -2003;        // Is not finding more than one station
+const TInt KErrTimeoutController = -2007;       // Unexpected notification
+
+// MACROS
+//#define ?macro ?macro_def
+#define TEST_CLASS_VERSION_MAJOR 1
+#define TEST_CLASS_VERSION_MINOR 1
+#define TEST_CLASS_VERSION_BUILD 1
+
+// Logging path
+_LIT( KPresetUtilityTestModuleLogPath, "\\logs\\testframework\\PresetUtilityTestModule\\" ); 
+// Log file
+_LIT( KPresetUtilityTestModuleLogFile, "PresetUtilityTestModule.txt" ); 
+_LIT( KPresetUtilityTestModuleLogFileWithTitle, "PresetUtilityTestModule_[%S].txt" );
+
+// FUNCTION PROTOTYPES
+//?type ?function_name(?arg_list);
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+//class CPresetUtilityTestModule;
+
+// DATA TYPES
+//enum ?declaration
+//typedef ?declaration
+//extern ?data_type;
+
+// CLASS DECLARATION
+
+/**
+*  CPresetUtilityTestModule test class for STIF Test Framework TestScripter.
+*  ?other_description_lines
+*
+*  @lib ?library
+*  @since ?Series60_version
+*/
+NONSHARABLE_CLASS(CPresetUtilityTestModule) : public CScriptBase, public MRadioPresetObserver, public MPresetUtilityObserver
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CPresetUtilityTestModule* NewL( CTestModuleIf& aTestModuleIf );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CPresetUtilityTestModule();
+
+    public: // New functions
+
+        /**
+        * ?member_description.
+        * @since ?Series60_version
+        * @param ?arg1 ?description
+        * @return ?description
+        */
+        //?type ?member_function( ?type ?arg1 );
+
+    public: // Functions from base classes
+
+        /**
+        * From CScriptBase Runs a script line.
+        * @since ?Series60_version
+        * @param aItem Script line containing method name and parameters
+        * @return Symbian OS error code
+        */
+        virtual TInt RunMethodL( CStifItemParser& aItem );
+
+        /**
+        * From MPresetUtilityObserver
+        * Called when a preset changes.
+        *
+        * NOTE: EPresetDeleted with aIndex == 0, indicates that all presets have been deleted.
+        *
+        * @since S60 3.2
+        * @param aChange Change event type
+        * @param aIndex Index to the preset that has changed. Zero means all presets.
+        */
+        virtual void PresetChanged( MPresetUtilityObserver::TPresetChangeEvent aChange, TInt aIndex );
+
+        /**
+        * From MRadioPresetObserver
+        * Called when a preset changes.
+        *
+        * NOTE: EPresetDeleted with aIndex == 0, indicates that all presets have been deleted.
+        *
+        * @since S60 3.2
+        * @param aChange Change event type
+        * @param aIndex Index to the preset that has changed. Zero means all presets.
+        */
+        virtual void MrpeoPresetChanged( MRadioPresetObserver::TPresetChangeEvent aChange, TInt aIndex );
+
+    protected:  // New functions
+
+        /**
+        * ?member_description.
+        * @since ?Series60_version
+        * @param ?arg1 ?description
+        * @return ?description
+        */
+        //?type ?member_function( ?type ?arg1 );
+        // Test case functions
+        TInt CreateRadioPresetL( CStifItemParser& aItem );
+        TInt CreatePresetUtilityL( CStifItemParser& aItem );
+        TInt CreateFmPresetUtilityL( CStifItemParser& aItem );
+        TInt DestroyRadioPresetL( CStifItemParser& aItem );
+        TInt DestroyPresetUtilityL( CStifItemParser& aItem );
+        TInt DestroyFmPresetUtilityL( CStifItemParser& aItem );
+        
+        TInt SavePresetL( CStifItemParser& aItem );
+        
+        TInt ReadPresetL( CStifItemParser& aItem );
+                
+        TInt MaxNumberOfPresets( CStifItemParser& aItem );
+        
+        TInt PresetCount( CStifItemParser& aItem );
+        
+        TInt FirstPreset( CStifItemParser& aItem );
+        
+        TInt NextPreset( CStifItemParser& aItem );
+        
+        TInt DeletePreset( CStifItemParser& aItem );
+        
+        // Old API
+        TInt SetPresetL( CStifItemParser& aItem );
+        TInt GetPresetL( CStifItemParser& aItem );
+        TInt GetPresetNameL( CStifItemParser& aItem );
+        TInt GetPresetFrequencyL( CStifItemParser& aItem );      
+        TInt GetMaxNumberOfPresets( CStifItemParser& aItem );
+        TInt GetNumberOfPresets( CStifItemParser& aItem );
+        TInt GetFirstPresetL( CStifItemParser& aItem );
+        TInt GetNextPresetL( CStifItemParser& aItem );
+        TInt DeletePresetL( CStifItemParser& aItem );
+
+        TInt SetPresetUrlL( CStifItemParser& aItem );
+        TInt SetPresetPtyL( CStifItemParser& aItem );
+        TInt SetPresetPICodeL( CStifItemParser& aItem );
+        TInt SetPresetFavouriteInfoL( CStifItemParser& aItem );
+        TInt SetPresetUserRenameInfoL( CStifItemParser& aItem );
+        TInt GetPresetUrlL( CStifItemParser& aItem );
+        TInt GetPresetPtyL( CStifItemParser& aItem );
+        TInt GetPresetPICodeL( CStifItemParser& aItem );
+        TInt GetPresetFavouriteInfoL( CStifItemParser& aItem );
+        TInt GetPresetUserRenameInfoL( CStifItemParser& aItem );
+
+        TInt SetFavorite( CStifItemParser& aItem );
+        TInt Favorite( CStifItemParser& aItem );
+        TInt SetLocalStation( CStifItemParser& aItem );
+        TInt LocalStation( CStifItemParser& aItem );
+        TInt SetRenamedByUser( CStifItemParser& aItem );
+        TInt RenamedByUser( CStifItemParser& aItem );
+        TInt SetGenre( CStifItemParser& aItem );
+        TInt Genre( CStifItemParser& aItem );
+        TInt SetPiCode( CStifItemParser& aItem );
+        TInt PiCode( CStifItemParser& aItem );
+
+    protected:  // Functions from base classes
+
+        /**
+        * From ?base_class ?member_description
+        */
+        //?type ?member_function();
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CPresetUtilityTestModule( CTestModuleIf& aTestModuleIf );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+        // Prohibit copy constructor if not deriving from CBase.
+        // ?classname( const ?classname& );
+        // Prohibit assigment operator if not deriving from CBase.
+        // ?classname& operator=( const ?classname& );
+
+        /**
+        * Frees all resources allocated from test methods.
+        * @since ?Series60_version
+        */
+        void Delete();
+
+        /**
+        * Test methods are listed below. 
+        */
+
+        /**
+        * Example test method.
+        * @since ?Series60_version
+        * @param aItem Script line containing parameters.
+        * @return Symbian OS error code.
+        */
+        virtual TInt ExampleL( CStifItemParser& aItem );
+        
+        /**
+         * Method used to log version of test class
+         */
+        void SendTestClassVersion();
+
+        //ADD NEW METHOD DEC HERE
+        //[TestMethods] - Do not remove
+
+    public:     // Data
+        // ?one_line_short_description_of_data
+        //?data_declaration;
+
+    protected:  // Data
+        // ?one_line_short_description_of_data
+        //?data_declaration;
+
+    private:    // Data
+        
+        // ?one_line_short_description_of_data
+        //?data_declaration;
+
+        // Reserved pointer for future extension
+        //TAny* iReserved;
+
+        /** FM Preset Utility */
+        CPresetUtility* iPresetUtility;
+
+        /** Old interface FM Preset Utility */
+        CRadioFmPresetUtility* iRadioFmPresetUtility;
+
+        /** Preset class instance */
+        TPreset* iPreset;
+        
+    public:     // Friend classes
+        //?friend_class_declaration;
+    protected:  // Friend classes
+        //?friend_class_declaration;
+    private:    // Friend classes
+        //?friend_class_declaration;
+
+    };
+
+#endif      // PRESETUTILITYTESTMODULE_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/tsrc/init/PresetUtilityTestModule.ini	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,197 @@
+#
+# Copyright (c) 2009 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.
+#
+#
+# This is STIFTestFramework initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set following test engine settings:
+#	- Set Test Reporting mode. TestReportMode's possible values are:
+#		+ 'Summary': Summary of the tested test cases.
+#		+ 'Environment': Hardware and software info.
+#		+ 'TestCases': Test case report.
+#		+ 'FullReport': Set of all above ones.
+#		+ Example 'TestReportMode= Summary TestCases'
+#
+# 	- CreateTestReport setting controls report creation mode
+#		+ YES, Test report will created.
+#		+ NO, No Test report.
+#
+# 	- File path indicates the base path of the test report.
+# 	- File name indicates the name of the test report.
+#
+# 	- File format indicates the type of the test report.
+#		+ TXT, Test report file will be txt type, for example 'TestReport.txt'.
+#		+ HTML, Test report will be html type, for example 'TestReport.html'.
+#
+# 	- File output indicates output source of the test report.
+#		+ FILE, Test report logging to file.
+#		+ RDEBUG, Test report logging to using rdebug.
+#
+# 	- File Creation Mode indicates test report overwriting if file exist.
+#		+ OVERWRITE, Overwrites if the Test report file exist.
+#		+ APPEND, Continue logging after the old Test report information if 
+#                 report exist.
+# 	- Sets a device reset module's dll name(Reboot).
+#		+ If Nokia specific reset module is not available or it is not correct one
+#		  StifHWResetStub module may use as a template for user specific reset
+#		  module. 
+# 	- Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation
+#		DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02
+#
+
+[Engine_Defaults]
+
+TestReportMode= FullReport		# Possible values are: 'Empty', 'Summary', 'Environment', 'TestCases' or 'FullReport'
+
+CreateTestReport= YES			# Possible values: YES or NO
+
+TestReportFilePath= c:\LOGS\TestFramework\
+TestReportFileName= TestReport
+
+TestReportFormat= TXT			# Possible values: TXT or HTML
+TestReportOutput= FILE			# Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE	# Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+DisableMeasurement= stifmeasurementdisablenone	# Possible values are:
+						# 'stifmeasurementdisablenone', 'stifmeasurementdisableall'
+					  	# 'stifmeasurementplugin01', 'stifmeasurementplugin02',
+					  	# 'stifmeasurementplugin03', 'stifmeasurementplugin04',
+					  	# 'stifmeasurementplugin05' or 'stifbappeaprofiler'
+
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+# Modules are added between module tags
+# tags. Module name is specified after ModuleName= tag, like
+# ModuleName= XXXXXXXXX
+# Modules might have initialisation file, specified as
+# IniFile= c:\testframework\YYYYYY
+# Modules might have several configuration files, like
+# TestCaseFile= c:\testframework\NormalCases.txt
+# TestCaseFile= c:\testframework\SmokeCases.txt
+# TestCaseFile= c:\testframework\ManualCases.txt
+
+# (TestCaseFile is synonym for old term ConfigFile)
+
+# Following case specifies demo module settings. Demo module
+# does not read any settings from file, so tags 
+# IniFile and TestCaseFile are not used.
+# In the simplest case it is enough to specify only the
+# name of the test module when adding new test module
+[New_Module]
+ModuleName= TestScripter
+TestCaseFile= c:\testframework\PresetUtilityTestModule.cfg
+[End_Module]
+
+# Load testmoduleXXX, optionally with initialization file and/or test case files
+#[New_Module]
+#ModuleName= testmodulexxx
+
+#TestModuleXXX used initialization file
+#IniFile= c:\testframework\init.txt
+
+#TestModuleXXX used configuration file(s)
+#TestCaseFile= c:\testframework\testcases1.cfg
+#TestCaseFile= c:\testframework\testcases2.cfg
+#TestCaseFile= c:\testframework\manualtestcases.cfg
+
+#[End_Module]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set STIFTestFramework logging overwrite parameters for Logger.
+# 	Hardware and emulator environment logging path and styles can
+# 	be configured from here to overwrite the Logger's implemented values.
+#	
+#	Settings description:
+#	- Indicates option for creation log directory/directories. If log directory/directories
+#         is/are not created by user they will make by software.
+#		+ YES, Create log directory/directories if not allready exist.
+#		+ NO, Log directory/directories not created. Only created one is used.
+#
+#	- Overwrite emulator path setting.
+#		+ Example: If 'EmulatorBasePath= C:\LOGS\TestFramework\' and in code is defined 
+#		           Logger's path 'D:\LOGS\Module\' with those definition the path
+#		           will be 'C:\LOGS\TestFramework\LOGS\Module\'
+#
+#	- Overwrite emulator's logging format.
+#		+ TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
+#		+ HTML, Log file(s) will be html type(s), for example 'Module.html'.
+#
+#	- Overwrited emulator logging output source.
+#		+ FILE, Logging to file(s).
+#		+ RDEBUG, Logging to using rdebug(s).
+#
+#	- Overwrite hardware path setting (Same description as above in emulator path).
+#	- Overwrite hardware's logging format(Same description as above in emulator format).
+#	- Overwrite hardware's logging output source(Same description as above in emulator output).
+#
+#	- File Creation Mode indicates file overwriting if file exist.
+#		+ OVERWRITE, Overwrites if file(s) exist.
+#		+ APPEND, Continue logging after the old logging information if file(s) exist.
+#
+#	- Will thread id include to the log filename.
+#		+ YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
+#		+ NO, No thread id to log file(s), Example filename 'Module.txt'.
+#
+#	- Will time stamps include the to log file.
+#		+ YES, Time stamp added to each line in log file(s). Time stamp is 
+#                 for example'12.Nov.2003 115958    LOGGING INFO'
+#		+ NO, No time stamp(s).
+#
+#	- Will line breaks include to the log file.
+#		+ YES, Each logging event includes line break and next log event is in own line.
+#		+ NO, No line break(s).
+#
+#	- Will event ranking include to the log file.
+#		+ YES, Event ranking number added to each line in log file(s). Ranking number 
+#                 depends on environment's tics, for example(includes time stamp also)
+#                 '012   12.Nov.2003 115958    LOGGING INFO'
+#		+ NO, No event ranking.
+#
+
+[Logger_Defaults]
+
+#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#' 
+#NOTE: TestEngine and TestServer logging settings cannot change here 
+
+#CreateLogDirectories= YES		# Possible values: YES or NO
+
+#EmulatorBasePath= C:\LOGS\TestFramework\
+#EmulatorFormat= HTML			# Possible values: TXT or HTML
+#EmulatorOutput= FILE			# Possible values: FILE or RDEBUG
+
+#HardwareBasePath= D:\LOGS\TestFramework\
+#HardwareFormat= HTML			# Possible values: TXT or HTML
+#HardwareOutput= FILE			# Possible values: FILE or RDEBUG
+
+#FileCreationMode= OVERWRITE		# Possible values: OVERWRITE or APPEND
+
+#ThreadIdToLogFile= YES			# Possible values: YES or NO
+#WithTimeStamp= YES			# Possible values: YES or NO
+#WithLineBreak= YES			# Possible values: YES or NO
+#WithEventRanking= YES			# Possible values: YES or NO
+
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/tsrc/src/PresetUtilityTestModule.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,207 @@
+/*
+* Copyright (c) 2009 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: This file contains testclass implementation.
+*
+*/
+
+// INCLUDE FILES
+#include <Stiftestinterface.h>
+#include <SettingServerClient.h>
+#include "PresetUtilityTestModule.h"
+#include "trace.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::CPresetUtilityTestModule
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CPresetUtilityTestModule::CPresetUtilityTestModule( 
+    CTestModuleIf& aTestModuleIf ):
+        CScriptBase( aTestModuleIf )
+    {
+    FUNC_LOG;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CPresetUtilityTestModule::ConstructL()
+    {
+    FUNC_LOG;
+    
+    //Read logger settings to check whether test case name is to be
+    //appended to log file name.
+    RSettingServer settingServer;
+    TInt ret = settingServer.Connect();
+    if(ret != KErrNone)
+        {
+        User::Leave(ret);
+        }
+    // Struct to StifLogger settigs.
+    TLoggerSettings loggerSettings; 
+    // Parse StifLogger defaults from STIF initialization file.
+    ret = settingServer.GetLoggerSettings(loggerSettings);
+    if(ret != KErrNone)
+        {
+        User::Leave(ret);
+        } 
+    // Close Setting server session
+    settingServer.Close();
+
+    TFileName logFileName;
+    
+    if(loggerSettings.iAddTestCaseTitle)
+        {
+        TName title;
+        TestModuleIf().GetTestCaseTitleL(title);
+        logFileName.Format(KPresetUtilityTestModuleLogFileWithTitle, &title);
+        }
+    else
+        {
+        logFileName.Copy(KPresetUtilityTestModuleLogFile);
+        }
+
+    iLog = CStifLogger::NewL( KPresetUtilityTestModuleLogPath, 
+                          logFileName,
+                          CStifLogger::ETxt,
+                          CStifLogger::EFile,
+                          EFalse );
+    
+    SendTestClassVersion();
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CPresetUtilityTestModule* CPresetUtilityTestModule::NewL( 
+    CTestModuleIf& aTestModuleIf )
+    {
+    FUNC_LOG;
+    CPresetUtilityTestModule* self = new (ELeave) CPresetUtilityTestModule( aTestModuleIf );
+
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+
+    return self;
+
+    }
+
+// Destructor
+CPresetUtilityTestModule::~CPresetUtilityTestModule()
+    { 
+    FUNC_LOG;
+
+    // Delete resources allocated from test methods
+    Delete();
+
+    // Delete logger
+    delete iLog; 
+
+    }
+
+//-----------------------------------------------------------------------------
+// CPresetUtilityTestModule::SendTestClassVersion
+// Method used to send version of test class
+//-----------------------------------------------------------------------------
+//
+void CPresetUtilityTestModule::SendTestClassVersion()
+	{
+	FUNC_LOG;
+	TVersion moduleVersion;
+	moduleVersion.iMajor = TEST_CLASS_VERSION_MAJOR;
+	moduleVersion.iMinor = TEST_CLASS_VERSION_MINOR;
+	moduleVersion.iBuild = TEST_CLASS_VERSION_BUILD;
+	
+	TFileName moduleName;
+	moduleName = _L("PresetUtilityTestModule.dll");
+
+	TBool newVersionOfMethod = ETrue;
+	TestModuleIf().SendTestModuleVersion(moduleVersion, moduleName, newVersionOfMethod);
+	}
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+// -----------------------------------------------------------------------------
+// LibEntryL is a polymorphic Dll entry point.
+// Returns: CScriptBase: New CScriptBase derived object
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CScriptBase* LibEntryL( 
+    CTestModuleIf& aTestModuleIf ) // Backpointer to STIF Test Framework
+    {
+    FUNC_LOG;
+
+    return ( CScriptBase* ) CPresetUtilityTestModule::NewL( aTestModuleIf );
+
+    }
+
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/tsrc/src/PresetUtilityTestModuleBlocks.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,1479 @@
+/*
+* Copyright (c) 2009 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include "PresetUtilityTestModule.h"
+#include <RadioPresetUtility.h>
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+_LIT( KStifScriptEmptyString, "EMPTYSTRING" );
+_LIT( KEmptyString, "" );
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::Delete
+// Delete here all resources allocated and opened from test methods. 
+// Called from destructor. 
+// -----------------------------------------------------------------------------
+//
+void CPresetUtilityTestModule::Delete() 
+    {
+    FUNC_LOG;
+
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CPresetUtilityTestModule::RunMethodL( 
+    CStifItemParser& aItem ) 
+    {
+    FUNC_LOG;
+
+    static TStifFunctionInfo const KFunctions[] =
+        {  
+        // Copy this line for every implemented function.
+        // First string is the function name used in TestScripter script file.
+        // Second is the actual implementation member function. 
+        ENTRY( "Example", CPresetUtilityTestModule::ExampleL ),
+        // [test cases entries] - Do not remove
+        ENTRY( "CreateRadioPresetL", CPresetUtilityTestModule::CreateRadioPresetL ),
+        ENTRY( "DestroyRadioPreset", CPresetUtilityTestModule::DestroyRadioPresetL ),
+        ENTRY( "CreatePresetUtility", CPresetUtilityTestModule::CreatePresetUtilityL ), 
+        ENTRY( "DestroyPresetUtility", CPresetUtilityTestModule::DestroyPresetUtilityL ),
+        ENTRY( "CreateFmPresetUtility", CPresetUtilityTestModule::CreateFmPresetUtilityL ),
+        ENTRY( "DestroyFmPresetUtility", CPresetUtilityTestModule::DestroyFmPresetUtilityL ),
+        ENTRY( "SavePresetL", CPresetUtilityTestModule::SavePresetL ),
+        ENTRY( "ReadPresetL", CPresetUtilityTestModule::ReadPresetL ),
+        ENTRY( "MaxNumberOfPresets", CPresetUtilityTestModule::MaxNumberOfPresets ),
+        ENTRY( "PresetCount", CPresetUtilityTestModule::PresetCount ),
+        ENTRY( "FirstPreset", CPresetUtilityTestModule::FirstPreset ),
+        ENTRY( "NextPreset", CPresetUtilityTestModule::NextPreset ),
+        ENTRY( "DeletePreset", CPresetUtilityTestModule::DeletePreset ),
+        ENTRY( "SetPresetL", CPresetUtilityTestModule::SetPresetL ),
+        ENTRY( "GetPresetL", CPresetUtilityTestModule::GetPresetL ),
+        ENTRY( "GetPresetNameL", CPresetUtilityTestModule::GetPresetNameL ),
+        ENTRY( "GetPresetFrequencyL", CPresetUtilityTestModule::GetPresetFrequencyL ),      
+        ENTRY( "GetMaxNumberOfPresets", CPresetUtilityTestModule::GetMaxNumberOfPresets ),
+        ENTRY( "GetNumberOfPresets", CPresetUtilityTestModule::GetNumberOfPresets ),
+        ENTRY( "GetFirstPresetL", CPresetUtilityTestModule::GetFirstPresetL ),
+        ENTRY( "GetNextPresetL", CPresetUtilityTestModule::GetNextPresetL ),
+        ENTRY( "DeletePresetL", CPresetUtilityTestModule::DeletePresetL ),
+
+        ENTRY( "SetPresetUrlL", CPresetUtilityTestModule::SetPresetUrlL ),
+        ENTRY( "SetPresetPtyL", CPresetUtilityTestModule::SetPresetPtyL ),
+        ENTRY( "SetPresetPICodeL", CPresetUtilityTestModule::SetPresetPICodeL ),
+        ENTRY( "SetPresetFavouriteInfoL", CPresetUtilityTestModule::SetPresetFavouriteInfoL ),
+        ENTRY( "SetPresetUserRenameInfoL", CPresetUtilityTestModule::SetPresetUserRenameInfoL ),
+        ENTRY( "GetPresetUrlL", CPresetUtilityTestModule::GetPresetUrlL ),
+        ENTRY( "GetPresetPtyL", CPresetUtilityTestModule::GetPresetPtyL ),
+        ENTRY( "GetPresetPICodeL", CPresetUtilityTestModule::GetPresetPICodeL ),
+        ENTRY( "GetPresetFavouriteInfoL", CPresetUtilityTestModule::GetPresetFavouriteInfoL ),
+        ENTRY( "GetPresetUserRenameInfoL", CPresetUtilityTestModule::GetPresetUserRenameInfoL ),
+
+        ENTRY( "SetFavorite", CPresetUtilityTestModule::SetFavorite ),
+        ENTRY( "Favorite", CPresetUtilityTestModule::Favorite ),
+        ENTRY( "SetLocalStation", CPresetUtilityTestModule::SetLocalStation ),
+        ENTRY( "LocalStation", CPresetUtilityTestModule::LocalStation ),
+        ENTRY( "SetRenamedByUser", CPresetUtilityTestModule::SetRenamedByUser ),
+        ENTRY( "RenamedByUser", CPresetUtilityTestModule::RenamedByUser ),
+        ENTRY( "SetGenre", CPresetUtilityTestModule::SetGenre ),
+        ENTRY( "Genre", CPresetUtilityTestModule::Genre ),
+        ENTRY( "SetPiCode", CPresetUtilityTestModule::SetPiCode ),
+        ENTRY( "PiCode", CPresetUtilityTestModule::PiCode )
+        //ADD NEW ENTRY HERE
+
+        };
+
+    const TInt count = sizeof( KFunctions ) / 
+                        sizeof( TStifFunctionInfo );
+
+    return RunInternalL( KFunctions, count, aItem );
+
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::ExampleL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPresetUtilityTestModule::ExampleL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;
+
+    // Print to UI
+    _LIT( KPresetUtilityTestModule, "PresetUtilityTestModule" );
+    _LIT( KExample, "In Example" );
+    TestModuleIf().Printf( 0, KPresetUtilityTestModule, KExample );
+    // Print to log file
+    iLog->Log( KExample );
+
+    TInt i = 0;
+    TPtrC string;
+    _LIT( KParam, "Param[%i]: %S" );
+    while ( aItem.GetNextString ( string ) == KErrNone )
+        {
+        TestModuleIf().Printf( i, KPresetUtilityTestModule, 
+                                KParam, i, &string );
+        i++;
+        }
+
+    return KErrNone;
+
+    }
+
+//-----------------------------------------------------------------------------
+// CPresetUtilityTest::CreateRadioPresetL
+//-----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::CreateRadioPresetL(
+    CStifItemParser& /*aItem*/ )
+    {
+    FUNC_LOG;
+    
+    TInt err = KErrNone;
+    if( !iPreset )
+        {        
+        iPreset = new( ELeave ) TPreset;
+        }
+    else
+        {
+        err = KErrArgument;
+        }
+
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// CPresetUtilityTest::CreatePresetUtilityL
+//-----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::CreatePresetUtilityL(
+    CStifItemParser& /*aItem*/ )
+    {
+    FUNC_LOG;
+    
+    TInt err = KErrNone;
+    if( !iPresetUtility )
+        {        
+        iPresetUtility = CPresetUtility::NewL();
+        }
+    else
+        {
+        err = KErrArgument;
+        }
+
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// CPresetUtilityTest::CreatePresetFmUtilityL
+//-----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::CreateFmPresetUtilityL(
+    CStifItemParser& /*aItem*/ )
+    {
+    FUNC_LOG;
+    
+    TInt err = KErrNone;
+    if( !iRadioFmPresetUtility )
+        {        
+        iRadioFmPresetUtility = CRadioFmPresetUtility::NewL(*this);
+        }
+    else
+        {
+        err = KErrArgument;
+        }
+
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// CPresetUtilityTestModule::DestroyRadioPresetL
+//-----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::DestroyRadioPresetL(
+    CStifItemParser& /*aItem*/ )
+    {
+    FUNC_LOG;
+
+    delete iPreset;    
+    iPreset = NULL;
+    
+    return KErrNone;
+    }
+
+
+
+//-----------------------------------------------------------------------------
+// CPresetUtilityTestModule::DestroyPresetUtilityL
+//-----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::DestroyPresetUtilityL(
+    CStifItemParser& /*aItem*/ )
+    {
+    FUNC_LOG;
+
+    delete iPresetUtility;    
+    iPresetUtility = NULL;
+    
+    return KErrNone;
+    }
+
+//-----------------------------------------------------------------------------
+// CPresetUtilityTestModule::DestroyFmPresetUtilityL
+//-----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::DestroyFmPresetUtilityL(
+    CStifItemParser& /*aItem*/ )
+    {
+    FUNC_LOG;
+
+    delete iRadioFmPresetUtility;    
+    iRadioFmPresetUtility = NULL;
+    
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::SavePresetL()
+// Get program status.
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::SavePresetL( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err=KErrNone;
+    TInt index;
+    TPtrC name;
+    TInt freq;
+    TPtrC url;
+    TInt usedIndex( -1 );
+    
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: Preset index." );
+    }
+    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
+    if ( aItem.GetNextString(name) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: Preset name." );
+    }
+    aItem.SetParsingType( CStifItemParser::ENormalParsing );
+    if ( aItem.GetNextInt(freq) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: Preset frequency." );
+    }
+    
+    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
+    if ( aItem.GetNextString(url) )
+    {
+        INFO( "Missing Parameter: url." );
+    }
+    aItem.SetParsingType( CStifItemParser::ENormalParsing );
+
+    TPreset preset;
+    preset.SetName( name );
+    preset.SetFrequency( freq );
+    preset.SetUrl( url );
+    
+    TRAP(err, usedIndex = iPresetUtility->SavePresetL(preset, index));
+    INFO_4( "SavePreset: Index=%d, Name=%S, Freq=%d, Url=%S", usedIndex, &name, freq, &url  );
+    if ( KErrNone != err )
+        {
+        INFO_1( "SavePresetL Failed error code=%i", err );
+        User::Leave( err );
+        }
+    return usedIndex;
+}
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::ReadPresetL()
+// Read preset channel.
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::ReadPresetL( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err = KErrNone;
+    TInt index;
+    TPtrC expectedName;
+    TInt expectedFreq;
+    TPtrC expectedUrl;
+    
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: Preset index." );
+    }
+    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
+    if ( aItem.GetNextString(expectedName) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: Expected preset name." );
+    }
+    INFO_1( "ExpectedName=%S.", &expectedName  );
+
+    aItem.SetParsingType( CStifItemParser::ENormalParsing );
+    if ( aItem.GetNextInt(expectedFreq) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: Expected preset frequency." );
+    }
+    INFO_1( "ExpectedFreq=%d.", expectedFreq);
+    
+    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
+    if ( aItem.GetNextString(expectedUrl) )
+    {
+        INFO( "Missing Parameter: Expected Url." );
+    }
+    aItem.SetParsingType( CStifItemParser::ENormalParsing );
+
+    TPreset preset;
+    TRAP(err, iPresetUtility->ReadPresetL(index,preset));
+    TPtrC actualName( preset.Name() );
+    TPtrC actualUrl( preset.Url() );
+    INFO_4( "ReadPreset Index=%d, Name=%S, Freq=%d, Url=%S", index, &expectedName, preset.Frequency(), &expectedUrl  );
+    if ( !err )
+    {
+        // Verification
+        if ( preset.Name() != expectedName )
+        {
+            INFO_2( "Failed: name=%S, expectedName=%S.", &actualName, &expectedName  );
+            err = KErrUnexpectedValue;
+        }
+        else if ( preset.Frequency() != expectedFreq )
+        {
+            INFO_2( "Failed: freq=%d, expectedFreq=%d.", preset.Frequency(), expectedFreq);
+            err = KErrUnexpectedValue;
+        }
+        else if ( ( 0 < expectedUrl.Length() ) && ( preset.Url() != expectedUrl ) )
+        {
+            INFO_2( "Failed: Url=%S, expectedUrl=%S.", &actualUrl, &expectedUrl  );
+            err = KErrUnexpectedValue;            
+        }
+    }
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::MaxNumberOfPresets()
+// Get program status.
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::MaxNumberOfPresets( CStifItemParser& /*aItem*/ )
+{
+    FUNC_LOG;
+    TInt maxPreset;
+    
+    maxPreset = iPresetUtility->MaxNumberOfPresets();
+    INFO_1( "MaxNumberOfPresets: maxPreset=%d", maxPreset);
+    return maxPreset;
+}
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::PresetCount()
+// Get program status.
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::PresetCount( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err=KErrNone;
+    TInt numPresets;
+    TInt expectedNumPresets;
+    
+    // read parameters
+    if ( aItem.GetNextInt(expectedNumPresets) )
+    {
+        INFO( "Missing Parameter: Expected number of presets.");
+        err = KErrBadTestParameter;
+    }
+
+    numPresets =iPresetUtility->PresetCount();
+    INFO_1( "PresetCount: numPresets=%d", numPresets);
+   // Verification
+    if ( numPresets != expectedNumPresets )
+    {
+        INFO_2( "Failed: numPresets=%d, expectedNumPresets=%d.", numPresets, expectedNumPresets);
+        err = KErrUnexpectedValue;
+    }
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::FirstPreset()
+// Get program status.
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::FirstPreset( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err = KErrNone;
+    TInt index;
+    TInt expectedIndex;
+    
+    // read parameters
+    if ( aItem.GetNextInt(expectedIndex) )
+    {
+        INFO( "Missing Parameter: Expected preset index.");
+        err = KErrBadTestParameter;
+    }
+
+    index = iPresetUtility->FirstPreset();
+    INFO_1( "FirstPreset: index=%d", index);
+    // Verification
+    if ( index != expectedIndex )
+    {
+        INFO_2( "Failed: index=%d, expectedIndex=%d.", index, expectedIndex);
+        err = KErrUnexpectedValue;
+    }
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::NextPreset()
+// Get program status.
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::NextPreset( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err=KErrNone;
+    TInt index;
+    TInt nextIndex;
+    TInt expectedNextIndex;
+    
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+    {
+        INFO( "Missing Parameter: Current preset index.");
+        err = KErrBadTestParameter;
+    }
+    if ( aItem.GetNextInt(expectedNextIndex) )
+    {
+        INFO( "Missing Parameter: Expected next preset index.");
+        err = KErrBadTestParameter;
+    }
+
+    nextIndex = iPresetUtility->NextPreset(index);
+    INFO_1( "NextPreset: nextIndex=%d", nextIndex);
+    // Verification
+    if ( nextIndex != expectedNextIndex )
+    {
+        INFO_2( "Failed: nextIndex=%d, expectedNextIndex=%d.", nextIndex, expectedNextIndex);
+        err = KErrUnexpectedValue;
+    }
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::DeletePreset()
+// Get program status.
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::DeletePreset( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err=KErrNone;
+    TInt index;
+    
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+    {
+        INFO( "Missing Parameter: Preset index to delete.");
+        err = KErrBadTestParameter;
+    }
+
+    err = iPresetUtility->DeletePreset(index);
+    INFO_1( "DeletePreset: index=%d", index);
+    return err;
+}
+
+// Old preset utility API functions
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::SetPresetL()
+// Get program status.
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::SetPresetL( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err=KErrNone;
+    TInt index;
+    TPtrC name;
+    TInt freq;
+    
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: Preset index." );
+    }
+    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
+    if ( aItem.GetNextString(name) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: Preset name." );
+    }
+    TPtrC stifScriptEmptyString( KStifScriptEmptyString );
+    if ( !stifScriptEmptyString.Compare( name ) )
+        {
+        TPtrC emptyString( KEmptyString );
+        name.Set(emptyString);
+        }
+    aItem.SetParsingType( CStifItemParser::ENormalParsing );
+    if ( aItem.GetNextInt(freq) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: Preset frequency." );
+    }
+    
+    TPresetName presetName( name );   
+    TRAP(err, iRadioFmPresetUtility->SetPresetL(index, presetName, freq));
+    INFO_3("SetPresetL: Index=%d, Name=%S, Freq=%d", index, &name, freq );
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::GetPresetL()
+// Read preset channel.
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::GetPresetL( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err = KErrNone;
+    TInt index;
+    TPtrC expectedName;
+    TInt expectedFreq;
+    TPtrC expectedUrl;
+    
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: Preset index." );
+    }
+    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
+    if ( aItem.GetNextString(expectedName) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: Expected preset name." );
+    }
+    TPtrC stifScriptEmptyString( KStifScriptEmptyString );
+    if ( !stifScriptEmptyString.Compare( expectedName ) )
+        {
+        TPtrC emptyString( KEmptyString );
+        expectedName.Set(emptyString);
+        }
+    INFO_1( "ExpectedName=%S.", &expectedName  );
+
+    aItem.SetParsingType( CStifItemParser::ENormalParsing );
+    if ( aItem.GetNextInt(expectedFreq) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: Expected preset frequency." );
+    }
+    INFO_1( "ExpectedFreq=%d.", expectedFreq);
+    
+    aItem.SetParsingType( CStifItemParser::ENormalParsing );
+
+    TPresetName presetName;
+    TInt actualFreq( 0 );
+    TRAP(err, iRadioFmPresetUtility->GetPresetL(index, presetName, actualFreq));
+    INFO_3( "GetPresetL Index=%d, Name=%S, Freq=%d", index, &presetName, actualFreq  );
+    if ( !err )
+    {
+        // Verification
+        if ( presetName != expectedName )
+        {
+            INFO_2( "Failed: name=%S, expectedName=%S.", &presetName, &expectedName  );
+            err = KErrUnexpectedValue;
+        }
+        else if ( actualFreq != expectedFreq )
+        {
+            INFO_2( "Failed: freq=%d, expectedFreq=%d.", actualFreq, expectedFreq);
+            err = KErrUnexpectedValue;
+        }
+    }
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::GetMaxNumberOfPresets()
+// Get program status.
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::GetMaxNumberOfPresets( CStifItemParser& /*aItem*/ )
+{
+    FUNC_LOG;
+    TInt maxPreset;
+    
+    iRadioFmPresetUtility->GetMaxNumberOfPresets( maxPreset );
+    INFO_1( "GetMaxNumberOfPresets: maxPreset=%d", maxPreset);
+    return maxPreset;
+}
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::GetNumberOfPresets()
+// Get program status.
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::GetNumberOfPresets( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err=KErrNone;
+    TInt numPresets;
+    TInt expectedNumPresets;
+    
+    // read parameters
+    if ( aItem.GetNextInt(expectedNumPresets) )
+    {
+        INFO( "Missing Parameter: Expected number of presets.");
+        err = KErrBadTestParameter;
+    }
+
+    err = iRadioFmPresetUtility->GetNumberOfPresets( numPresets );
+    INFO_1( "GetNumberOfPresets: numPresets=%d", numPresets);
+   // Verification
+    if ( numPresets != expectedNumPresets )
+    {
+        INFO_2( "Failed: numPresets=%d, expectedNumPresets=%d.", numPresets, expectedNumPresets);
+        err = KErrUnexpectedValue;
+    }
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::GetFirstPresetL()
+// Get program status.
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::GetFirstPresetL( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err = KErrNone;
+    TInt index;
+    TInt expectedIndex;
+    
+    // read parameters
+    if ( aItem.GetNextInt(expectedIndex) )
+    {
+        INFO( "Missing Parameter: Expected preset index.");
+        err = KErrBadTestParameter;
+    }
+
+    iRadioFmPresetUtility->GetFirstPresetL( index );
+    INFO_1( "GetFirstPresetL: index=%d", index);
+    // Verification
+    if ( index != expectedIndex )
+    {
+        INFO_2( "Failed: index=%d, expectedIndex=%d.", index, expectedIndex);
+        err = KErrUnexpectedValue;
+    }
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::GetNextPresetL()
+// Get program status.
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::GetNextPresetL( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err=KErrNone;
+    TInt index;
+    TInt nextIndex;
+    TInt expectedNextIndex;
+    
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+    {
+        INFO( "Missing Parameter: Current preset index.");
+        err = KErrBadTestParameter;
+    }
+    if ( aItem.GetNextInt(expectedNextIndex) )
+    {
+        INFO( "Missing Parameter: Expected next preset index.");
+        err = KErrBadTestParameter;
+    }
+
+    iRadioFmPresetUtility->GetNextPresetL( index, nextIndex );
+    INFO_1( "GetNextPresetL: nextIndex=%d", nextIndex);
+    // Verification
+    if ( nextIndex != expectedNextIndex )
+    {
+        INFO_2( "Failed: nextIndex=%d, expectedNextIndex=%d.", nextIndex, expectedNextIndex);
+        err = KErrUnexpectedValue;
+    }
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::DeletePresetL()
+// Get program status.
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::DeletePresetL( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err=KErrNone;
+    TInt index;
+    
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+    {
+        INFO( "Missing Parameter: Preset index to delete.");
+        err = KErrBadTestParameter;
+    }
+
+    TRAP( err, iRadioFmPresetUtility->DeletePresetL(index) );
+    INFO_1( "DeletePresetL: index=%d", index);
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::GetPresetNameL()
+// Read preset channel.
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::GetPresetNameL( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err = KErrNone;
+    TInt index;
+    TPtrC expectedName;
+    
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: Preset index." );
+    }
+    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
+    if ( aItem.GetNextString(expectedName) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: Expected preset name." );
+    }
+    TPtrC stifScriptEmptyString( KStifScriptEmptyString );
+    if ( !stifScriptEmptyString.Compare( expectedName ) )
+        {
+        TPtrC emptyString( KEmptyString );
+        expectedName.Set(emptyString);
+        }
+    INFO_1( "ExpectedName=%S.", &expectedName  );
+
+
+    TFmPresetName presetName;
+    TRAP(err, iRadioFmPresetUtility->GetPresetNameL(index,presetName));
+    INFO_2( "GetPresetNameL Index=%d, Name=%S", index, &presetName  );
+    if ( !err )
+    {
+        // Verification
+        if ( presetName != expectedName )
+        {
+            INFO_2( "Failed: name=%S, expectedName=%S.", &presetName, &expectedName  );
+            err = KErrUnexpectedValue;
+        }
+    }
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::GetPresetFrequencyL()
+// Read preset channel's frequency value.
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::GetPresetFrequencyL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;
+    TInt index;
+    TInt expectedFreq( 0 );
+    TInt freq( 0 );
+    TInt err( KErrNone );
+
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: Preset index." );
+    }
+    if ( aItem.GetNextInt(expectedFreq) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: Expected preset frequency." );
+    }
+    iRadioFmPresetUtility->GetPresetFrequencyL( index, freq );  
+    INFO_1( "GetPresetrequency=%d.", freq );
+    if ( freq != expectedFreq )
+    {
+        INFO_2( "Failed: freq=%d, expectedFreq=%d.", freq, expectedFreq);
+        err = KErrUnexpectedValue;
+    }    
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::PresetChanged()
+// Returns: None
+// -----------------------------------------------------------------------------
+void CPresetUtilityTestModule::PresetChanged
+    ( MPresetUtilityObserver::TPresetChangeEvent /*aChange*/, TInt /*aIndex*/ )
+    {
+    FUNC_LOG;   
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::MrpeoPresetChanged()
+// Returns: None
+// -----------------------------------------------------------------------------
+void CPresetUtilityTestModule::MrpeoPresetChanged
+    ( MRadioPresetObserver::TPresetChangeEvent /*aChange*/, TInt /*aIndex*/ )
+    {
+    FUNC_LOG;   
+    }
+
+// -----------------------------------------------------------------------------
+// CFmPresetUtilityTestModule::SetPresetUrlL()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::SetPresetUrlL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;   
+    TInt ret( KErrNone );
+    TInt index;
+    TPtrC urlName;
+    
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+    {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: Preset index." );
+    }
+    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
+    if ( aItem.GetNextString(urlName) )
+    {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: URL name." );
+    }
+    aItem.SetParsingType( CStifItemParser::ENormalParsing );
+    
+    TFmPresetUrl presetName( urlName );   
+    TRAP(ret, iRadioFmPresetUtility->SetPresetUrlL(index, urlName ));
+    INFO_2("SetPresetUrlL: Index=%d, urlName=%S", index, &urlName  );
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::SetPresetPtyL()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::SetPresetPtyL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;   
+    TInt ret( KErrNone );
+    TInt index( 0 );
+    TInt PTYCode( 0 );
+    
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: Preset index." );
+        }
+    if  ( !ret && aItem.GetNextInt(PTYCode) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: PTYCode." );
+        }
+    iRadioFmPresetUtility->SetPresetPtyL( index, PTYCode );  
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::SetPresetPICodeL()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::SetPresetPICodeL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;   
+    TInt ret( KErrNone );
+    TInt index( 0 );
+    TInt PICode( 0 );
+    
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: Preset index." );
+        }
+    if  ( !ret && aItem.GetNextInt(PICode) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: PICode." );
+        }
+    iRadioFmPresetUtility->SetPresetPICodeL( index, PICode );  
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::SetPresetFavouriteInfoL()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::SetPresetFavouriteInfoL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;   
+    TInt ret( KErrNone );
+    TInt index( 0 );
+    TInt favouriteInt( 0 );
+    TBool favouriteStatus( EFalse );
+    
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: Preset index." );
+        }
+    if  ( !ret && aItem.GetNextInt(favouriteInt) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: favouriteInt." );
+        }
+    if ( favouriteInt )
+        {
+        favouriteStatus = ETrue;
+        }
+    iRadioFmPresetUtility->SetPresetFavouriteInfoL( index, favouriteStatus );  
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::SetPresetUserRenameInfoL()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::SetPresetUserRenameInfoL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;   
+    TInt ret( KErrNone );
+    TInt index( 0 );
+    TInt renameInt( 0 );
+    TBool renameStatus( EFalse );
+    
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: Preset index." );
+        }
+    if  ( !ret && aItem.GetNextInt(renameInt) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: renameInt." );
+        }
+    if ( renameInt )
+        {
+        renameStatus = ETrue;
+        }
+    iRadioFmPresetUtility->SetPresetUserRenameInfoL ( index, renameStatus );  
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::GetPresetUrlL()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::GetPresetUrlL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;   
+    TInt ret( KErrNone );
+    TInt index;
+    TPtrC expectedUrlName;
+    
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+    {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: Preset index." );
+    }
+    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
+    if ( aItem.GetNextString(expectedUrlName) )
+    {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: Expected preset name." );
+    }
+    TPtrC stifScriptEmptyString( KStifScriptEmptyString );
+    if ( !stifScriptEmptyString.Compare( expectedUrlName ) )
+        {
+        TPtrC emptyString( KEmptyString );
+        expectedUrlName.Set(emptyString);
+        }
+    INFO_1( "ExpectedUrlName=%S.", &expectedUrlName  );
+
+    TFmPresetUrl urlName;
+    TRAP(ret, iRadioFmPresetUtility->GetPresetUrlL(index,urlName));
+    INFO_2( "GetPresetUrlL Index=%d, urlName=%S", index, &urlName  );
+    if ( !ret )
+    {
+        // Verification
+        if ( urlName != expectedUrlName )
+        {
+            INFO_2( "Failed: urlName=%S, expectedUrlName=%S.", &urlName, &expectedUrlName  );
+            ret = KErrUnexpectedValue;
+        }
+    }
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::GetPresetPtyL()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::GetPresetPtyL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;   
+    TInt ret( KErrNone );
+    TInt index( 0 );
+    TUint expectedPTYCode( 0 );
+    TUint PTYCode( 0 );
+    
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: Preset index." );
+        }
+    if  ( !ret && aItem.GetNextInt(expectedPTYCode) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: expectedPTYCode." );
+        }
+    if ( !ret )
+        {
+        INFO_1( "GetPresetPTYCodeL=%d.", expectedPTYCode );
+        TRAP( ret, iRadioFmPresetUtility->GetPresetPtyL( index, PTYCode ) );
+        if ( PTYCode != expectedPTYCode )
+            {
+            INFO_2( "Failed: PTYCode=%d, expectedPTYCode=%d.", PTYCode, expectedPTYCode );
+            ret = KErrUnexpectedValue;
+            }
+        }
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::GetPresetPICodeL()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::GetPresetPICodeL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;   
+    TInt ret( KErrNone );
+    TInt index( 0 );
+    TUint expectedPICode( 0 );
+    TUint PICode( 0 );
+    
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: Preset index." );
+        }
+    if  ( !ret && aItem.GetNextInt(expectedPICode) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: expectedPICode." );
+        }
+    if ( !ret )
+        {
+        INFO_1( "GetPresetPICodeL=%d.", expectedPICode );
+        TRAP( ret, iRadioFmPresetUtility->GetPresetPICodeL( index, PICode ) );
+        if ( PICode != expectedPICode )
+            {
+            INFO_2( "Failed: PICode=%d, expectedPICode=%d.", PICode, expectedPICode );
+            ret = KErrUnexpectedValue;
+            }
+        }
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::GetPresetFavouriteInfoL()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::GetPresetFavouriteInfoL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;
+    TInt ret( KErrNone );
+    TInt index( 0 );
+    TInt expectedFavourite( 0 );
+    TBool favouriteStatus( EFalse );
+    
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: Preset index." );
+        }
+    if  ( !ret && aItem.GetNextInt(expectedFavourite) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: expectedFavourite." );
+        }
+    if ( !ret )
+        {
+        INFO_1( "GetPresetFavouriteInfoL=%d.", expectedFavourite );
+        TRAP( ret, iRadioFmPresetUtility->GetPresetFavouriteInfoL( index, favouriteStatus ) );
+        if ( !( ( favouriteStatus && expectedFavourite ) || 
+                ( !favouriteStatus && !expectedFavourite ) ) )
+            {
+            INFO_2( "Failed: favouriteStatus=%d, expectedFavourite=%d.", favouriteStatus, expectedFavourite );
+            ret = KErrUnexpectedValue;
+            }
+        }
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::GetPresetUserRenameInfoL()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::GetPresetUserRenameInfoL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;   
+    TInt ret( KErrNone );
+    TInt index( 0 );
+    TInt expectedRename( 0 );
+    TBool renameStatus( EFalse );
+    
+    // read parameters
+    if ( aItem.GetNextInt(index) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: Preset index." );
+        }
+    if  ( !ret && aItem.GetNextInt(expectedRename) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: expectedRename." );
+        }
+    if ( !ret )
+        {
+        INFO_1( "GetPresetUserRenameInfoL=%d.", expectedRename );
+        TRAP( ret, iRadioFmPresetUtility->GetPresetUserRenameInfoL( index, renameStatus ) );
+        if ( !( ( renameStatus && expectedRename ) || 
+                ( !renameStatus && !expectedRename ) ) )
+            {
+            INFO_2( "Failed: renameStatus=%d, expectedRename=%d.", renameStatus, expectedRename );
+            ret = KErrUnexpectedValue;
+            }
+       }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::SetFavorite()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::SetFavorite( CStifItemParser& aItem )
+    {
+    FUNC_LOG;   
+    TInt ret( KErrNone );
+    TBool favoriteStatus( EFalse );
+    if  ( !ret && aItem.GetNextInt(favoriteStatus) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: favoriteStatus." );
+        }
+    iPreset->SetFavorite( favoriteStatus );
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::Favorite()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::Favorite( CStifItemParser& aItem )
+    {
+    FUNC_LOG;   
+    TInt ret( KErrNone );
+    TInt expectedFavorite( 0 );
+    TBool favoriteStatus( EFalse );
+    if  ( !ret && aItem.GetNextInt(expectedFavorite) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: expectedFavorite." );
+        }
+    favoriteStatus = iPreset->Favorite();
+    if ( !( ( favoriteStatus && expectedFavorite ) || 
+            ( !favoriteStatus && !expectedFavorite ) ) )
+        {
+        INFO_2( "Failed: favoriteStatus=%d, expectedFavorite=%d.", favoriteStatus, expectedFavorite );
+        ret = KErrUnexpectedValue;
+        }
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::SetLocalStation()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::SetLocalStation( CStifItemParser& aItem )
+    {
+    FUNC_LOG;   
+    TInt ret( KErrNone );
+    TBool localStationStatus( EFalse );
+    if  ( !ret && aItem.GetNextInt(localStationStatus) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: localStationStatus." );
+        }
+    iPreset->SetLocalStation( localStationStatus );
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::LocalStation()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::LocalStation( CStifItemParser& aItem )
+    {
+    FUNC_LOG;   
+    TInt ret( KErrNone );
+    TInt expectedLocalStationStatus( 0 );
+    TBool localStationStatus( EFalse );
+    if  ( !ret && aItem.GetNextInt(expectedLocalStationStatus) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: expectedLocalStationStatus." );
+        }
+    localStationStatus = iPreset->LocalStation();
+    if ( !( ( localStationStatus && expectedLocalStationStatus ) || 
+            ( !localStationStatus && !expectedLocalStationStatus ) ) )
+        {
+        INFO_2( "Failed: localStationStatus=%d, expectedLocalStationStatus=%d.", localStationStatus, expectedLocalStationStatus );
+        ret = KErrUnexpectedValue;
+        }
+    return ret;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::SetRenamedByUser()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::SetRenamedByUser( CStifItemParser& aItem )
+    {
+    FUNC_LOG;   
+    TInt ret( KErrNone );
+    TBool renameStatus( EFalse );
+    if  ( !ret && aItem.GetNextInt(renameStatus) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: renameStatus." );
+        }
+    iPreset->SetRenamedByUser( renameStatus );
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::RenamedByUser()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::RenamedByUser( CStifItemParser& aItem )
+    {
+    FUNC_LOG;   
+    TInt ret( KErrNone );
+    TInt expectedRename( 0 );
+    TBool renameStatus( EFalse );
+    if  ( !ret && aItem.GetNextInt(expectedRename) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: expectedRename." );
+        }
+    renameStatus = iPreset->RenamedByUser();
+    if ( !( ( renameStatus && expectedRename ) || 
+            ( !renameStatus && !expectedRename ) ) )
+        {
+        INFO_2( "Failed: renameStatus=%d, expectedRename=%d.", renameStatus, expectedRename );
+        ret = KErrUnexpectedValue;
+        }
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::SetGenre()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::SetGenre( CStifItemParser& aItem )
+    {
+    FUNC_LOG;   
+    TInt ret( KErrNone );
+    TInt genre( 0 );
+    if  ( !ret && aItem.GetNextInt(genre) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: genre." );
+        }
+    iPreset->SetGenre( genre );
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::Genre()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::Genre( CStifItemParser& aItem )
+    {
+    FUNC_LOG;   
+    TInt ret( KErrNone );
+    TInt expectedGenre( 0 );
+    TInt genre( 0 );
+    if  ( !ret && aItem.GetNextInt(expectedGenre) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: expectedGenre." );
+        }
+    genre = iPreset->Genre();
+    if ( genre != expectedGenre )
+        {
+        INFO_2( "Failed: genre=%d, expectedGenre=%d.", genre, expectedGenre );
+        ret = KErrUnexpectedValue;
+        }
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::SetPiCode()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::SetPiCode( CStifItemParser& aItem )
+    {
+    FUNC_LOG;   
+    TInt ret( KErrNone );
+    TInt piCode( 0 );
+    if  ( !ret && aItem.GetNextInt(piCode) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: piCode." );
+        }
+    iPreset->SetPiCode( piCode );
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::PiCode()
+// Returns: None
+// -----------------------------------------------------------------------------
+TInt CPresetUtilityTestModule::PiCode( CStifItemParser& aItem )
+    {
+    FUNC_LOG;   
+    TInt ret( KErrNone );
+    TInt expectedPiCode( 0 );
+    TInt piCode( 0 );
+    if  ( !ret && aItem.GetNextInt(expectedPiCode) )
+        {
+        ret = KErrBadTestParameter;
+        ERROR( ret, "Missing Parameter: expectedPiCode." );
+        }
+    piCode = iPreset->PiCode();
+    if ( piCode != expectedPiCode )
+        {
+        INFO_2( "Failed: piCode=%d, expectedPiCode=%d.", piCode, expectedPiCode );
+        ret = KErrUnexpectedValue;
+        }
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModuleModule::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+/*
+TInt CPresetUtilityTestModule::?member_function(
+   CItemParser& aItem )
+   {
+   FUNC_LOG;
+
+   ?code
+
+   }
+*/
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// None
+
+//  [End of File] - Do not remove
--- a/mmserv/radioutility/radioserver/Server/Src/RadioServer.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/radioutility/radioserver/Server/Src/RadioServer.cpp	Mon May 03 12:59:52 2010 +0300
@@ -695,6 +695,15 @@
     TRadioServerError aError )
     {
     RADIO_RDEBUG_INT2(_L("[RADIO-SVR] SetFrequencyComplete(%d) State[%d]"), aError, iState);
+    
+    // Disable squelching, if on
+    if ( iSquelch )
+        {
+        // Restore the last volume
+        iDevSound->SetVolume(iSettings->Volume());
+        iSquelch = EFalse;
+        }
+    
     if ( iAsyncRequest && iAsyncRequest->iType == ERadioServSetFrequency )
         {
         if ( aError == KErrNone )
@@ -1798,6 +1807,12 @@
                 }
             else
                 {
+                if ( iSettings->IsSquelchEnabled() && !iSettings->IsMute() )
+                    {
+                    // Simulate squelching
+                    iDevSound->SetVolume(0);
+                    iSquelch = ETrue;
+                    }
                 iTunerControl->SetFrequency(aFrequency);
                 }
             break;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/bwins/systemtoneservice.def	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,7 @@
+EXPORTS
+	?Delete@CSystemToneService@@SAXPAV1@@Z @ 1 NONAME ; void CSystemToneService::Delete(class CSystemToneService *)
+	?StopTone@CSystemToneService@@QAEXI@Z @ 2 NONAME ; void CSystemToneService::StopTone(unsigned int)
+	?PlayTone@CSystemToneService@@QAEXW4TToneType@1@AAI@Z @ 3 NONAME ; void CSystemToneService::PlayTone(enum CSystemToneService::TToneType, unsigned int &)
+	?Create@CSystemToneService@@SAPAV1@XZ @ 4 NONAME ; class CSystemToneService * CSystemToneService::Create(void)
+	?PlayTone@CSystemToneService@@QAEXW4TToneType@1@@Z @ 5 NONAME ; void CSystemToneService::PlayTone(enum CSystemToneService::TToneType)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/data/create_sts_stub_sis.bat	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,21 @@
+cls
+@echo off
+echo.
+
+rem
+rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: PKG for System Tone Service (STS)
+rem
+
+makesis -s sts_stub.pkg sts_stub.sis
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/data/sts_stub.pkg	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,29 @@
+;
+; 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: System Tone Service Stub SIS (STS)
+;
+;File: sts_stub.pkg
+
+;Languages
+&EN
+
+;Header
+#{"System Tone Service"},(0x10207C90),1,0,0, TYPE=SA
+
+;Localised Vendor name
+%{"Nokia"}
+
+;Unique Vendor name
+:"Nokia"
+
Binary file mmserv/sts/data/sts_stub.sis has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/eabi/systemtoneservice.def	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,7 @@
+EXPORTS
+	_ZN18CSystemToneService6CreateEv @ 1 NONAME
+	_ZN18CSystemToneService6DeleteEPS_ @ 2 NONAME
+	_ZN18CSystemToneService8PlayToneENS_9TToneTypeE @ 3 NONAME
+	_ZN18CSystemToneService8PlayToneENS_9TToneTypeERj @ 4 NONAME
+	_ZN18CSystemToneService8StopToneEj @ 5 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/group/bld.inf	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,31 @@
+/*
+ * 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:
+ * This file provides the information required for building the
+ * whole of System Tone Service.
+ */
+
+#include "../stsimplementation/group/bld.inf"
+#include "../stsplayer/group/bld.inf"
+#include "../stsserver/group/bld.inf"
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+../data/sts_stub.sis /epoc32/data/z/system/install/sts_stub.sis
+../rom/systemtoneservice.iby       CORE_MW_LAYER_IBY_EXPORT_PATH(systemtoneservice.iby)
+
+PRJ_MMPFILES
+systemtoneservice.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/group/systemtoneservice.mmp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,37 @@
+/*
+ * 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:
+ * This is the project specification file for building the
+ * systemtoneservice dynamic library.
+ */
+
+#include <platform_paths.hrh>
+
+TARGET        systemtoneservice.dll
+TARGETTYPE    dll
+UID           0x1000008d 0x10207C8F
+CAPABILITY    ALL -TCB
+
+MW_LAYER_SYSTEMINCLUDE
+USERINCLUDE   ../inc
+
+SOURCEPATH    ../src
+
+SOURCE        systemtoneservice.cpp
+
+DEFFILE       systemtoneservice.def
+NOSTRICTDEF
+
+LIBRARY       euser.lib
+STATICLIBRARY stsimplementation.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/inc/sts.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,56 @@
+/*
+ * 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:
+ * This file defines an interface to an System Tone Service used by the
+ * STS Server for playing and stopping tones.  Only one instance of this
+ * class is created by the server, and it exists for the lifetime of the
+ * server.  This class manages all of the active players, and guarantees
+ * that the context values are unique.
+ */
+
+#ifndef STS_H_
+#define STS_H_
+
+#include <systemtoneservice.h>
+#include <map>
+
+#include "stsplayer.h"
+
+class CSts : private MStsPlayerObserver
+    {
+public:
+    static CSts* Create();
+    static void Delete(CSts* aSts);
+    void PlayTone(CSystemToneService::TToneType aToneType,
+            unsigned int& aPlayToneContext);
+    void StopTone(unsigned int aPlayToneContext);
+
+protected:
+    CSts();
+    virtual ~CSts();
+    bool Init();
+
+private:
+    void CleanUpPlayers();
+
+    // inherited from MPlayerObserver
+    virtual void PlayToneComplete(unsigned int aPlayToneContext);
+
+private:
+    unsigned int iNextContext;
+    typedef std::map<unsigned int, CStsPlayer*> TPlayerMap;
+    TPlayerMap iMap;
+    };
+
+#endif //STS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/inc/stsclientservercommon.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,45 @@
+/*
+ * 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:
+ * This file defines common types and constants used by the STS server
+ * and sessions.
+ */
+
+#ifndef STSCLIENTSERVERCOMMON_H_
+#define STSCLIENTSERVERCOMMON_H_
+
+// SYMBIAN INCLUDES
+#include <e32std.h>
+#include <systemtoneservice.h>
+
+// CONSTANTS
+_LIT( KStsServerFile, "StsServer" );
+_LIT( KStsServerName, "!StsServer" );
+
+const TInt KStsServerMajorVersion = 0;
+const TInt KStsServerMinorVersion = 1;
+const TInt KStsServerBuild = 0;
+
+// This type enumerates the client/server messages for the STS server.
+enum TStsServerCommandType
+    {
+    StsMsg_PlayTone,
+    StsMsg_StopTone,
+    StsMsg_ENDMARKER
+    };
+
+const TStsServerCommandType KStsCmdLast =
+        (TStsServerCommandType) ((int) StsMsg_ENDMARKER - 1);
+
+#endif // STSCLIENTSERVERCOMMON_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/inc/stsimplementation.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,43 @@
+/*
+ * 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:
+ * This file defines the interface to the class that provides the
+ * implementation logic of the STS API.
+ */
+
+#ifndef STSIMPLEMENTATION_H_
+#define STSIMPLEMENTATION_H_
+
+#include <systemtoneservice.h>
+
+class RStsSession;
+
+NONSHARABLE_CLASS(CStsImplementation) : public CBase
+    {
+public:
+    static CStsImplementation* Create();
+    virtual ~CStsImplementation();
+public:
+    void PlayTone(CSystemToneService::TToneType aTone);
+    void
+    PlayTone(CSystemToneService::TToneType aTone, unsigned int& aPlayToneContext);
+    void StopTone(unsigned int aPlayToneContext);
+private:
+    CStsImplementation();
+    bool Init();
+
+    RStsSession* iSession;
+    };
+
+#endif /* STSIMPLEMENTATION_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/inc/stsplayer.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,56 @@
+/*
+ * 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:
+ * This file defines the interface for creating, playing,
+ * stopping, and deleting an MMF player for a tone type.
+ */
+#ifndef STSPLAYER_H_
+#define STSPLAYER_H_
+
+#include <MdaAudioSamplePlayer.h>
+#include <systemtoneservice.h>
+
+class MStsPlayerObserver
+    {
+public:
+    virtual void PlayToneComplete(unsigned int aPlayToneContext) = 0;
+    };
+
+class CStsPlayer : private MMdaAudioPlayerCallback
+    {
+public:
+    static CStsPlayer* Create(MStsPlayerObserver& aObserver,
+            CSystemToneService::TToneType aToneType, unsigned int aPlayToneContext);
+    virtual ~CStsPlayer();
+    void Play();
+    void Stop();
+
+protected:
+    CStsPlayer(MStsPlayerObserver& aObserver, const TDesC& aFileName,
+            int aRepeatNumberOfTimes, unsigned int aPlayToneContext);
+    bool Init();
+
+private:
+    void MapcInitComplete(TInt aError,
+            const TTimeIntervalMicroSeconds& aDuration);
+    void MapcPlayComplete(TInt aError);
+
+    MStsPlayerObserver& iObserver;
+    CMdaAudioPlayerUtility* iPlayer;
+    TPtrC iFileName;
+    int iRepeatNumberOfTimes;
+    unsigned int iPlayToneContext;
+    };
+
+#endif // STSPLAYER_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/rom/systemtoneservice.iby	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,35 @@
+/*
+* 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: STS IBY file
+*
+*/
+/*
+ * sts.iby
+ *
+ */
+
+#ifndef SYSTEMTONESERVICE_IBY
+#define SYSTEMTONESERVICE_IBY
+
+#include <bldvariant.hrh>
+
+file=ABI_DIR/BUILD_DIR/systemtoneservice.dll         SHARED_LIB_DIR/systemtoneservice.dll
+file=ABI_DIR/BUILD_DIR/stsserver.exe                 SHARED_LIB_DIR/stsserver.exe
+
+//STS_Stub
+data=ZSYSTEM/install/sts_stub.sis                    System/Install/sts_stub.sis
+
+#endif //SYSTEMTONESERVICE_IBY
+
+//End of File
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/sis/create_all_sis.bat	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,22 @@
+cls
+@echo off
+echo.
+
+rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+echo Description:  System Tone Service package creation utility
+rem
+
+call create_sis.bat
+echo.
+call create_udeb_sis.bat
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/sis/create_sis.bat	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,21 @@
+@echo off
+echo.
+
+rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+echo Description:  System Tone Service package creation utility - UREL
+rem
+
+del systemtoneservice.sis*
+makesis systemtoneservice.pkg systemtoneservice.sis
+signsis systemtoneservice.sis systemtoneservice.sisx rd.crt rd.key
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/sis/create_udeb_sis.bat	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,21 @@
+@echo off
+echo.
+
+rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+echo Description:  System Tone Service package creation utility - UDEB
+rem
+
+del systemtoneservice_udeb.sis*
+makesis systemtoneservice_udeb.pkg systemtoneservice_udeb.sis
+signsis systemtoneservice_udeb.sis systemtoneservice_udeb.sisx rd.crt rd.key
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/sis/systemtoneservice.pkg	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,35 @@
+;
+; 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: System Tone Service - UREL build
+;
+;File: systemtoneservice.pkg
+
+;Languages
+&EN
+
+;Header
+#{"System Tone Service"},(0x10207C90),1,0,0, TYPE=SA, RU
+
+;Series 60 v5.0
+[0x1028315F], 0,0,0, {"Series60ProductID"}
+
+;Localised Vendor name
+%{"Nokia"}
+
+;Unique Vendor name
+:"Nokia"
+
+;Files To Copy...<src> <destination>
+"/epoc32/release/armv5/urel/systemtoneservice.dll" -"!:/sys/bin/systemtoneservice.dll"
+"/epoc32/release/armv5/urel/stsserver.exe"         -"!:/sys/bin/stsserver.exe"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/sis/systemtoneservice_udeb.pkg	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,35 @@
+;
+; 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: System Tone Service - UDEB build
+;
+;File: systemtoneservice.pkg
+
+;Languages
+&EN
+
+;Header
+#{"System Tone Service"},(0x10207C90),1,0,0, TYPE=SA, RU
+
+;Series 60 v5.0
+[0x1028315F], 0,0,0, {"Series60ProductID"}
+
+;Localised Vendor name
+%{"Nokia"}
+
+;Unique Vendor name
+:"Nokia"
+
+;Files To Copy...<src> <destination>
+"/epoc32/release/armv5/udeb/systemtoneservice.dll" -"!:/sys/bin/systemtoneservice.dll"
+"/epoc32/release/armv5/udeb/stsserver.exe"         -"!:/sys/bin/stsserver.exe"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/src/systemtoneservice.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,70 @@
+/*
+ * 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:
+ * This file is the direct implementation of the System Tone Service
+ * API.  This acts as a facade to the actual implementation logic
+ * which is in the CStsImplementation class.
+ */
+
+//  Include Files  
+#include <systemtoneservice.h>	// CSystemToneService
+#include "stsimplementation.h"
+
+//  Member Functions
+EXPORT_C /*static*/CSystemToneService* CSystemToneService::Create()
+    {
+    CSystemToneService* self = 0;
+    CStsImplementation* implementation = CStsImplementation::Create();
+    if (implementation != 0)
+        {
+        self = new CSystemToneService(*implementation);
+        if (self == 0)
+            {
+            delete implementation;
+            }
+        }
+    return self;
+    }
+
+EXPORT_C /*static*/void CSystemToneService::Delete(
+        CSystemToneService* aSystemToneService)
+    {
+    delete &(aSystemToneService->iImplementation);
+    delete aSystemToneService;
+    }
+
+CSystemToneService::CSystemToneService(CStsImplementation& aImplementation) :
+    iImplementation(aImplementation)
+    {
+    }
+
+CSystemToneService::~CSystemToneService()
+    {
+    }
+
+EXPORT_C void CSystemToneService::PlayTone(TToneType aTone)
+    {
+    iImplementation.PlayTone(aTone);
+    }
+
+EXPORT_C void CSystemToneService::PlayTone(TToneType aTone,
+        unsigned int& aPlayToneContext)
+    {
+    iImplementation.PlayTone(aTone, aPlayToneContext);
+    }
+
+EXPORT_C void CSystemToneService::StopTone(unsigned int aPlayToneContext)
+    {
+    iImplementation.StopTone(aPlayToneContext);
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/stsimplementation/group/bld.inf	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,20 @@
+/*
+ * 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:
+ * This file provides the information required for building the
+ * system tone service implementation.
+ */
+
+PRJ_MMPFILES
+stsimplementation.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/stsimplementation/group/stsimplementation.mmp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,29 @@
+/*
+ * 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:
+ * This is the project specification file for building the
+ * stsimplementation static library.
+ */
+
+#include <platform_paths.hrh>
+
+TARGET          stsimplementation.lib
+TARGETTYPE      lib
+
+MW_LAYER_SYSTEMINCLUDE
+USERINCLUDE     ../../inc
+
+SOURCEPATH      ../src
+
+SOURCE          stsimplementation.cpp rstssession.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/stsimplementation/src/rstssession.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,110 @@
+/*
+ * 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:
+ * The file provides the implementation of the client side session
+ * to the STS Server.
+ */
+
+#include "rstssession.h"
+#include "stsclientservercommon.h"
+
+const TUint KNumSlots = 30;
+
+TInt RStsSession::StartServer()
+    {
+    TInt err = KErrNone;
+
+    // Launch the server executable (i.e. in it its own process).
+
+    // Create a new server process. Simultaneous launching of two such processes 
+    // should be detected when the second one attempts to create the server 
+    // object, failing with KErrAlreadyExists.
+    RProcess server;
+    err = server.Create(KStsServerFile, KNullDesC);
+
+    if (err == KErrNone)
+        {
+        TRequestStatus rendezvousStatus;
+        server.Rendezvous(rendezvousStatus);
+
+        if (rendezvousStatus != KRequestPending)
+            {
+            server.Kill(0); // abort startup
+            }
+        else
+            {
+            server.Resume(); // logon OK - start the server thread
+            } // end if
+
+        User::WaitForRequest(rendezvousStatus); // wait for start or death
+
+        // we can't use the 'exit reason' if the server panicked as this
+        // is the panic 'reason' and may be '0' which cannot be distinguished
+        // from KErrNone  
+        err = (server.ExitType() == EExitPanic)
+                                                ? KErrGeneral
+                                                   : rendezvousStatus.Int();
+        server.Close();
+        }
+
+    return err;
+    }
+
+TInt RStsSession::Connect()
+    {
+    TInt result = CreateSession(KStsServerName, TVersion(
+            KStsServerMajorVersion, KStsServerMinorVersion, KStsServerBuild),
+            KNumSlots, EIpcSession_Sharable);
+
+    if (result == KErrNotFound)
+        {
+        result = StartServer();
+        if (result == KErrNone || result == KErrAlreadyExists)
+            {
+            result = CreateSession(KStsServerName, TVersion(
+                    KStsServerMajorVersion, KStsServerMinorVersion,
+                    KStsServerBuild), KNumSlots);
+            }
+        }
+
+    if (result == KErrNone)
+        {
+        result = ShareAuto();
+
+        if (result != KErrNone)
+            {
+            Close();
+            }
+        }
+
+    return result;
+    }
+
+void RStsSession::Close()
+    {
+    RSessionBase::Close();
+    }
+
+TInt RStsSession::SendPlayTone(CSystemToneService::TToneType aToneType,
+        unsigned int& aPlayToneContext)
+    {
+    TPckg<unsigned int> playToneContextPckg(aPlayToneContext);
+    return SendReceive(StsMsg_PlayTone, TIpcArgs((TInt) aToneType,
+            &playToneContextPckg));
+    }
+
+TInt RStsSession::SendStopTone(unsigned int aPlayToneContext)
+    {
+    return SendReceive(StsMsg_StopTone, TIpcArgs(aPlayToneContext));
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/stsimplementation/src/rstssession.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,44 @@
+/*
+ * 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:
+ * This file defines the interface to the client side session of the
+ * STS Server.
+ */
+
+#ifndef RSTSSESSION_H_
+#define RSTSSESSION_H_
+
+#include <e32std.h>
+#include <systemtoneservice.h>
+
+class RStsSession : public RSessionBase
+    {
+public:
+
+    TInt Connect();
+
+    void Close();
+
+    TInt SendPlayTone(CSystemToneService::TToneType aToneType,
+            unsigned int& aPlayToneContext);
+
+    TInt SendStopTone(unsigned int aPlayToneContext);
+
+private:
+
+    TInt StartServer();
+
+    };
+
+#endif // RSTSSESSION_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/stsimplementation/src/stsimplementation.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,81 @@
+/*
+ * 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:
+ * The file provides the actual implementation of the STS API.
+ * All of the STS API methods are implemented by passing the
+ * calls to the STS Server through the client side STS
+ * Session.
+ */
+
+//  Include Files  
+#include "stsimplementation.h"
+#include "rstssession.h"
+
+//  Member Functions
+/*static*/CStsImplementation* CStsImplementation::Create()
+    {
+    CStsImplementation* self = new CStsImplementation();
+    if (self != 0)
+        {
+        bool successful = self->Init();
+        if (!successful)
+            {
+            delete self;
+            self = 0;
+            }
+        }
+    return self;
+    }
+
+CStsImplementation::CStsImplementation() :
+    iSession(NULL)
+    {
+    }
+
+CStsImplementation::~CStsImplementation()
+    {
+    iSession->Close();
+    delete iSession;
+    }
+
+bool CStsImplementation::Init()
+    {
+    bool result = false;
+    iSession = new RStsSession();
+    if (iSession)
+        {
+        TInt err = iSession->Connect();
+        result = err == KErrNone;
+        }
+    return result;
+    }
+
+void CStsImplementation::PlayTone(CSystemToneService::TToneType aTone)
+    {
+    unsigned int playToneContext;
+    PlayTone(aTone, playToneContext);
+    }
+
+void CStsImplementation::PlayTone(CSystemToneService::TToneType aTone,
+        unsigned int& aPlayToneContext)
+    {
+    //TODO: Add logging and error checking
+    iSession->SendPlayTone(aTone, aPlayToneContext);
+    }
+
+void CStsImplementation::StopTone(unsigned int aPlayToneContext)
+    {
+    //TODO: Add logging and error checking
+    iSession->SendStopTone(aPlayToneContext);
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/stsplayer/group/bld.inf	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,20 @@
+/*
+ * 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:
+ * This file provides the information required for building the
+ * system tone service player.
+ */
+
+PRJ_MMPFILES
+stsplayer.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/stsplayer/group/stsplayer.mmp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,32 @@
+/*
+ * 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:
+ * This is the project specification file for building the
+ * stsimplementation static library.
+ */
+
+#include <platform_paths.hrh>
+
+TARGET          stsplayer.lib
+TARGETTYPE      lib
+
+MW_LAYER_SYSTEMINCLUDE
+OS_LAYER_LIBC_SYSTEMINCLUDE
+OS_LAYER_STDCPP_SYSTEMINCLUDE
+USERINCLUDE     ../../inc
+
+SOURCEPATH      ../src
+
+SOURCE          sts.cpp
+SOURCE          stsplayer.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/stsplayer/src/sts.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,99 @@
+/*
+ * 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:
+ * This file provides the implementation of System Tone Service used
+ * by the STS Server.
+ */
+
+#include "sts.h"
+
+/*static*/CSts* CSts::Create()
+    {
+    CSts* self = new CSts();
+    if (self != 0)
+        {
+        bool successful = self->Init();
+        if (!successful)
+            {
+            delete self;
+            self = 0;
+            }
+        }
+    return self;
+    }
+
+/*static*/void CSts::Delete(CSts* aSts)
+    {
+    delete aSts;
+    }
+
+CSts::CSts() :
+    iNextContext(1)
+    {
+    }
+
+bool CSts::Init()
+    {
+    return true;
+    }
+
+CSts::~CSts()
+    {
+    CleanUpPlayers();
+    }
+
+void CSts::PlayTone(CSystemToneService::TToneType aToneType,
+        unsigned int& aPlayToneContext)
+    {
+    CStsPlayer* player = CStsPlayer::Create(*this, aToneType, iNextContext);
+    if (player != 0)
+        {
+        iMap[iNextContext] = player;
+        aPlayToneContext = iNextContext;
+        iNextContext++;
+        player->Play();
+        }
+    else
+        {
+        aPlayToneContext = 0;
+        }
+    }
+
+void CSts::StopTone(unsigned int aPlayToneContext)
+    {
+    CStsPlayer* player = iMap[aPlayToneContext];
+    if (player)
+        {
+        player->Stop();
+        PlayToneComplete(aPlayToneContext);
+        }
+    }
+
+void CSts::CleanUpPlayers()
+    {
+    for (TPlayerMap::iterator i = iMap.begin(); i != iMap.end(); i++)
+        {
+        StopTone(i->first);
+        }
+    }
+
+void CSts::PlayToneComplete(unsigned int aPlayToneContext)
+    {
+    CStsPlayer* player = iMap[aPlayToneContext];
+    iMap[aPlayToneContext] = 0;
+    if (player)
+        {
+        delete player;
+        }
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/stsplayer/src/stsplayer.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,96 @@
+/*
+ * 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:
+ * This file provides the implementation for creating and deleting a
+ * an MMF based player for playing and stopping a tone playback.
+ */
+#include "stsplayer.h"
+_LIT(KDefaultFile,"z:\\data\\sounds\\digital\\clock.aac");
+
+/*static*/CStsPlayer* CStsPlayer::Create(MStsPlayerObserver& aObserver,
+        CSystemToneService::TToneType aToneType, unsigned int aPlayToneContext)
+    {
+    CStsPlayer* self = 0;
+    switch (aToneType)
+        {
+        case CSystemToneService::EClockAlarm:
+            self = new CStsPlayer(aObserver, KDefaultFile, 10, aPlayToneContext);
+            break;
+        default:
+            self = new CStsPlayer(aObserver, KDefaultFile, 0, aPlayToneContext);
+            break;
+        }
+    if (self != 0)
+        {
+        bool successful = self->Init();
+        if (!successful)
+            {
+            delete self;
+            self = 0;
+            }
+        }
+    return self;
+    }
+
+CStsPlayer::CStsPlayer(MStsPlayerObserver& aObserver, const TDesC& aFileName,
+        int aRepeatNumberOfTimes, unsigned int aPlayToneContext) :
+    iObserver(aObserver), iPlayer(0), iFileName(aFileName),
+            iRepeatNumberOfTimes(aRepeatNumberOfTimes), iPlayToneContext(
+                    aPlayToneContext)
+    {
+    }
+
+bool CStsPlayer::Init()
+    {
+    TRAPD(result, iPlayer = CMdaAudioPlayerUtility::NewL(*this));
+    return result == KErrNone;
+    }
+
+CStsPlayer::~CStsPlayer()
+    {
+    delete iPlayer;
+    }
+
+void CStsPlayer::Play()
+    {
+    TRAP_IGNORE(iPlayer->OpenFileL(iFileName));
+    }
+
+void CStsPlayer::Stop()
+    {
+    iPlayer->Stop();
+    }
+
+void CStsPlayer::MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& /*aDuration*/)
+    {
+    if (aError == KErrNone)
+        {
+        TTimeIntervalMicroSeconds delay = 0;
+        iPlayer->SetRepeats(iRepeatNumberOfTimes, delay);
+        iPlayer->Play();
+        }
+    else
+        {
+        //TODO: add trace
+        }
+    }
+
+void CStsPlayer::MapcPlayComplete(TInt aError)
+    {
+    if (aError != KErrNone)
+        {
+        //TODO: add trace
+        }
+    iObserver.PlayToneComplete(iPlayToneContext);
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/stsserver/group/bld.inf	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,20 @@
+/*
+ * 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:
+ * This is the top level build file for the STS Server.
+ */
+
+PRJ_MMPFILES
+
+stsserver.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/stsserver/group/stsserver.mmp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,49 @@
+/*
+ * 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:
+ * This is the build file for the STS Server.
+ */
+
+#include <platform_paths.hrh>
+#include <data_caging_paths.hrh>
+
+TARGET         stsserver.exe
+TARGETTYPE 		 exe
+UID            0 0x10207C90
+CAPABILITY     MultiMediaDD ReadDeviceData WriteDeviceData ReadUserData WriteUserData ProtServ
+VENDORID	     VID_DEFAULT
+
+EPOCPROCESSPRIORITY high
+EPOCSTACKSIZE  0x5000           
+EPOCHEAPSIZE   0x400 0x1000000
+
+MW_LAYER_SYSTEMINCLUDE
+OS_LAYER_LIBC_SYSTEMINCLUDE
+OS_LAYER_STDCPP_SYSTEMINCLUDE
+
+USERINCLUDE    ../../inc
+SOURCEPATH     ../src
+
+SOURCE         stsserverexe.cpp
+SOURCE         stsserver.cpp
+SOURCE         stsserversession.cpp
+
+STATICLIBRARY  stsplayer.lib
+
+LIBRARY        ecom.lib
+LIBRARY        euser.lib
+LIBRARY        efsrv.lib
+LIBRARY        libc.lib
+LIBRARY        libstdcpp.lib
+LIBRARY        mediaclientaudio.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/stsserver/src/stsserver.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,163 @@
+/*
+ * 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:
+ * This file is the implementation of the Symbian STS Server.  This
+ * file handles the Symbian specific server creation/deletation
+ * activities, and adding/removing sessions.  The actual STS
+ * functionality is handled in the STS class.
+ */
+
+#include "stsserver.h"
+
+#include <ecom/ecom.h>
+#include "stsserversession.h"
+#include "sts.h"
+
+// TODO: IMPLEMENT PLATFORM SECURITY CHECKS ON THIS API.
+
+// Total number of ranges
+const TUint KStsRangeCount = 2;
+
+// Definition of the ranges of IPC numbers
+const TInt KStsRanges[KStsRangeCount] =
+    {
+    0, KStsCmdLast + 1
+    };
+
+// Policy to implement for each of the above ranges        
+const TUint8 KStsElementsIndex[KStsRangeCount] =
+    {
+    CPolicyServer::EAlwaysPass, CPolicyServer::ENotSupported
+    };
+
+// Package all the above together into a policy
+const CPolicyServer::TPolicy KStsPolicy =
+    {
+    CPolicyServer::EAlwaysPass, // specifies all connect attempts should pass
+            KStsRangeCount, // number of ranges                                   
+            KStsRanges, // ranges array
+            KStsElementsIndex, // elements<->ranges index
+            NULL
+    };
+
+// CStsServer IMPLEMENTATION
+
+CStsServer* CStsServer::NewLC()
+    {
+    CStsServer* self = new (ELeave) CStsServer();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    return self;
+    }
+
+CStsServer::CStsServer() :
+    CPolicyServer(0, KStsPolicy, ESharableSessions), iSts(0)
+    {
+    }
+
+void CStsServer::ConstructL()
+    {
+    StartL(KStsServerName);
+    iSts = CSts::Create();
+    if (iSts == 0)
+        {
+        User::Leave(KErrNoMemory);
+        }
+    }
+
+CStsServer::~CStsServer()
+    {
+    iSessions.ResetAndDestroy();
+    CSts::Delete(iSts);
+    REComSession::FinalClose();
+    }
+
+CSession2* CStsServer::NewSessionL(const TVersion& aVersion, const RMessage2& /*aMessage*/) const
+    {
+    if (aVersion.iMajor != KStsServerMajorVersion || aVersion.iMinor
+            != KStsServerMinorVersion || aVersion.iBuild != KStsServerBuild)
+        {
+        User::Leave(KErrNotSupported);
+        } // end if
+
+    CStsServer& nonConstThis = *const_cast<CStsServer*> (this);
+
+    // Construct a new session, passing it a pointer to the server object.  This function
+    // is const, so the const-ness must be cast away from the this pointer.
+    CSession2* returnValue = new (ELeave) CStsServerSession(nonConstThis, *iSts);
+
+    return returnValue;
+    }
+
+void CStsServer::AddSession(CStsServerSession* aSession)
+    {
+    iSessions.Append(aSession);
+    }
+
+void CStsServer::DropSession(CStsServerSession* aSession)
+    {
+    // Find the current session in the list of sessions.
+    TInt index = iSessions.Find(aSession);
+
+    if (index != KErrNotFound)
+        {
+        // Remove the session from the list of sessions.
+        iSessions.Remove(index);
+        } // end if
+
+    if (iSessions.Count() == 0)
+        {
+        // No more clients. Shutdown the server.
+        CActiveScheduler::Stop();
+        }
+    }
+
+// SERVER LAUNCHING FUNCTIONALITY
+
+EXPORT_C void CStsServer::RunServerL(bool aPerformProcessRendezvous,
+        bool aPerformThreadRendezvous)
+    {
+    // naming the server thread after the server helps to debug panics
+    User::LeaveIfError(User::RenameThread(KStsServerName));
+
+    // create and install the active scheduler
+    CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
+    CleanupStack::PushL(scheduler);
+    CActiveScheduler::Install(scheduler);
+
+    // create the server (leave it on the cleanup stack)
+    CStsServer* server = CStsServer::NewLC();
+
+    // Initialisation complete, now signal the client, if requested.
+
+    if (aPerformProcessRendezvous)
+        {
+        RProcess::Rendezvous(KErrNone);
+        }
+
+    if (aPerformThreadRendezvous)
+        {
+        RThread::Rendezvous(KErrNone);
+        }
+
+    // Ready to run
+    // Start wait loop, will return when server is shutdown
+    CActiveScheduler::Start();
+
+    // Cleanup the server
+    CleanupStack::PopAndDestroy(server);
+
+    // Cleanup scheduler after shutdown
+    CleanupStack::PopAndDestroy(scheduler);
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/stsserver/src/stsserver.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,55 @@
+/*
+ * 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:
+ * This file defines the interface into the STS server.
+ */
+
+#ifndef STSSERVER_H_
+#define STSSERVER_H_
+
+#include <e32base.h>
+
+class CSts;
+class CStsServerSession;
+
+class CStsServer : private CPolicyServer
+    {
+public:
+
+    // Runs the server on the current thread, and blocks until the server exits.
+    IMPORT_C static void RunServerL(bool aPerformProcessRendezvous = EFalse,
+            bool aPerformThreadRendezvous = EFalse);
+
+    void AddSession(CStsServerSession* aSession);
+
+    void DropSession(CStsServerSession* aSession);
+
+private:
+
+    static CStsServer* NewLC();
+
+    CStsServer();
+    void ConstructL();
+    virtual ~CStsServer();
+
+    // inherited from CPolicyServer    
+    CSession2* NewSessionL(const TVersion& aVersion,
+            const RMessage2& aMessage) const;
+
+    RPointerArray<CStsServerSession> iSessions;
+    CSts* iSts;
+
+    };
+
+#endif //STSSERVER_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/stsserver/src/stsserverexe.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,41 @@
+/*
+ * 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:
+ * The file containt the main method of the STS Server.
+ */
+
+#include "stsserver.h"
+#include "stsclientservercommon.h"
+
+TInt E32Main()
+    {
+    TInt returnValue = KErrNoMemory;
+
+    RThread myThread;
+    myThread.SetPriority(EPriorityAbsoluteRealTime1);
+
+    __UHEAP_MARK;
+
+    CTrapCleanup* cleanup = CTrapCleanup::New();
+
+    if (cleanup)
+        {
+        // Run the server and request a process rendezvous.
+        TRAP( returnValue, CStsServer::RunServerL( ETrue ) );
+        delete cleanup;
+        }
+    __UHEAP_MARKEND;
+
+    return returnValue;
+    } // end E32Main
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/stsserver/src/stsserversession.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,76 @@
+/*
+ * 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:
+ * This method provides the generic Symbian specific message handling
+ * for the server session.  The actual STS specific processing occurs
+ * in the STS class.
+ */
+
+#include "stsserversession.h"
+#include "stsserver.h"
+#include "sts.h"
+
+// CStsServerSession IMPLEMENTATION
+CStsServerSession::CStsServerSession(CStsServer& aServer, CSts& aSts) :
+    iServer(aServer), iSts(aSts)
+    {
+    }
+
+CStsServerSession::~CStsServerSession()
+    {
+    iServer.DropSession(this);
+    }
+
+void CStsServerSession::CreateL()
+    {
+    iServer.AddSession(this);
+    }
+
+void CStsServerSession::ServiceL(const RMessage2& aMessage)
+    {
+    switch (aMessage.Function())
+        {
+        case StsMsg_PlayTone:
+            DoPlayToneL(aMessage);
+            break;
+        case StsMsg_StopTone:
+            DoStopToneL(aMessage);
+            break;
+        default:
+            break;
+        }
+    }
+
+void CStsServerSession::ServiceError(const RMessage2& aMessage, TInt aError)
+    {
+    CSession2::ServiceError(aMessage, aError);
+    }
+
+void CStsServerSession::DoPlayToneL(const RMessage2& aMessage)
+    {
+    CSystemToneService::TToneType toneType =
+            (CSystemToneService::TToneType) aMessage.Int0();
+    unsigned int context = 0;
+    iSts.PlayTone(toneType, context);
+    TPckg<unsigned int> contextPckg(context);
+    TRAPD(err,aMessage.WriteL(1,contextPckg));
+    aMessage.Complete(err);
+    }
+
+void CStsServerSession::DoStopToneL(const RMessage2& aMessage)
+    {
+    unsigned int context = aMessage.Int0();
+    aMessage.Complete(KErrNone);
+    iSts.StopTone(context);
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/stsserver/src/stsserversession.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,52 @@
+/*
+ * 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:
+ * This file defines the interface for the STS server side session.
+ */
+
+#ifndef STSSERVERSESSION_H_
+#define STSSERVERSESSION_H_
+
+#include <e32base.h>
+#include <e32msgqueue.h>
+
+#include "stsclientservercommon.h"
+
+class CSts;
+class CStsServer;
+
+class CStsServerSession : public CSession2
+    {
+public:
+
+    CStsServerSession(CStsServer& aServer, CSts& aSts);
+
+    virtual ~CStsServerSession();
+
+    // inherited from CSession2
+    void CreateL();
+    void ServiceL(const RMessage2& aMessage);
+    void ServiceError(const RMessage2& aMessage, TInt aError);
+
+private:
+
+    void DoPlayToneL(const RMessage2& aMessage);
+    void DoStopToneL(const RMessage2& aMessage);
+
+    CStsServer& iServer;
+    CSts& iSts;
+
+    };
+
+#endif // STSSERVERSESSION_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/tsrc/ststester/data/ststester_reg.rss	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,26 @@
+/*
+ * 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 <appinfo.rh>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x10207C88
+
+RESOURCE APP_REGISTRATION_INFO
+{
+    app_file="STSTester";  
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/tsrc/ststester/group/bld.inf	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,23 @@
+/*
+ * 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:
+ * This file provides the information required for building the
+ * whole of System Tone Service Tester.
+ */
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_MMPFILES
+ststester.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/tsrc/ststester/group/ststester.mmp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,53 @@
+/*
+ * 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:
+ * This is the project specification file for building the
+ * ststester application.
+ */
+
+#include <platform_paths.hrh>
+
+TARGET          ststester.exe
+TARGETTYPE      exe
+UID             0 0x10207C88
+CAPABILITY      SwEvent
+
+VENDORID        VID_DEFAULT
+
+EPOCSTACKSIZE 0x5000           //20KB
+EPOCHEAPSIZE  0x400 0x1000000  //1KB-16MB
+
+START RESOURCE  ../data/ststester_reg.rss
+TARGETPATH 	    /private/10003a3f/apps
+END 
+
+MW_LAYER_SYSTEMINCLUDE
+USERINCLUDE     ../inc
+
+SOURCEPATH      ../src
+
+SOURCE          ststestermain.cpp
+SOURCE          ststester.cpp
+SOURCE          testappbase.cpp
+
+LIBRARY         euser.lib
+LIBRARY         efsrv.lib
+LIBRARY         fbscli.lib
+LIBRARY         fntstr.lib
+LIBRARY         gce.lib
+LIBRARY         gdi.lib
+LIBRARY         ws32.lib
+LIBRARY         systemtoneservice.lib
+LIBRARY         remconcoreapi.lib
+LIBRARY         remconinterfacebase.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/tsrc/ststester/inc/ststestermain.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,27 @@
+/*
+ * 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:
+ * This file defines API into the System Tone Service Tester.
+ */
+
+#ifndef STSTESTERMAIN_H_
+#define STSTESTERMAIN_H_
+
+//  Include Files
+#include <e32base.h>
+
+//  Function Prototypes
+GLDEF_C TInt E32Main();
+
+#endif  // STSTESTERMAIN_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/tsrc/ststester/sis/create_sis.bat	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,22 @@
+cls
+@echo off
+echo.
+
+rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+echo Description:  STS Tester package creation utility
+rem
+
+del ststester.sis*
+\epoc32\tools\makesis ststester.pkg ststester.sis
+\epoc32\tools\signsis ststester.sis ststester.sisx rd.crt rd.key
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/tsrc/ststester/sis/ststester.pkg	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,38 @@
+;
+; 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: System Tone Service Tester - UDEB build
+;
+;File: ststester.pkg
+
+;Languages
+&EN
+
+;Header
+#{"ststester EXE"},(0x10207C88),1,0,0, TYPE=SA, RU
+
+;Series 60 v5.0
+[0x1028315F], 0,0,0, {"Series60ProductID"}
+
+;Localised Vendor name
+%{"Nokia"}
+
+;Unique Vendor name
+:"Nokia"
+
+;Add System Tone Service package
+@"../../../sis/systemtoneservice.sisx",(0x10207C90)
+
+;Files To Copy...<src> <destination>
+"/epoc32/release/armv5/udeb/ststester.exe"		         -"!:/sys/bin/ststester.exe"
+"/epoc32/data/z/private/10003a3f/apps/ststester_reg.rsc" -"!:/private/10003a3f/import/apps/ststester_reg.rsc"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/tsrc/ststester/src/profileutilmacro.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,112 @@
+/*
+ * 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:
+ * This file defines macros for different types of performance
+ * measurement traces.
+ */
+
+#ifndef PROFILEUTILMACRO_H_
+#define PROFILEUTILMACRO_H_
+
+/*
+ MACROS to be defined to use profiling
+ PROFILE_TIME
+ PROFILE_RAM_USAGE
+ PROFILE_HEAP_USAGE
+ PRINT_TO_CONSOLE_HEAP_DIFF
+ PRINT_TO_CONSOLE_RAM_DIFF
+ PRINT_TO_CONSOLE_HEAP_DIFF
+ */
+#if defined(PROFILE_TIME) || defined(PROFILE_RAM_USAGE) || defined(PROFILE_HEAP_USAGE)
+#include <e32debug.h>
+#include <hal.h>
+#endif
+
+#ifdef PROFILE_TIME
+#define TAG_TIME_PROFILING_BEGIN \
+    TTime beginProfilingTime; \
+    beginProfilingTime.HomeTime()
+
+#define TAG_TIME_PROFILING_END \
+    TTime endProfilingTime; \
+    endProfilingTime.HomeTime(); \
+    TTimeIntervalMicroSeconds diffInMicroSecs = endProfilingTime.MicroSecondsFrom(beginProfilingTime)
+
+#define PRINT_TO_CONSOLE_TIME_DIFF \
+    RDebug::Printf("VPROFILEDAT: %s : Time taken[%u]microseconds ", __PRETTY_FUNCTION__, diffInMicroSecs.Int64())
+#else /* Empty macros */
+#define TAG_TIME_PROFILING_BEGIN
+#define TAG_TIME_PROFILING_END
+#define PRINT_TO_CONSOLE_TIME_DIFF
+#endif /*PROFILE_TIME*/
+
+#ifdef PROFILE_RAM_USAGE
+#define TAG_RAM_PROFILING_BEGIN \
+    TInt beginProfilingRAM; \
+    TInt err1 = HAL::Get(HALData::EMemoryRAMFree, beginProfilingRAM)
+
+#define TAG_RAM_PROFILING_END \
+    TInt endProfilingRAM; \
+    TInt err2 = HAL::Get(HALData::EMemoryRAMFree, endProfilingRAM)
+
+#define PRINT_TO_CONSOLE_RAM_DIFF \
+    if ((err1 == KErrNone) && (err2 == KErrNone)) \
+        { \
+        TInt diffRAM = (beginProfilingRAM - endProfilingRAM); \
+        if ( diffRAM > 0 ) \
+            { \
+            RDebug::Printf("VPROFILEDAT: %s : RAM used[%u]bytes ", __PRETTY_FUNCTION__, diffRAM); \
+            } \
+        else \
+            { \
+            RDebug::Printf("VPROFILEDAT: %s : RAM freed[%u]bytes ", __PRETTY_FUNCTION__, (-diffRAM)); \
+            } \
+        } \
+    else \
+        { \
+        RDebug::Printf("VPROFILEDAT: %s : Error1[%d] Error2[%d] ", __PRETTY_FUNCTION__, err1, err2); \
+        }
+
+#else /* Empty macros */
+#define TAG_RAM_PROFILING_BEGIN
+#define TAG_RAM_PROFILING_END
+#define PRINT_TO_CONSOLE_RAM_DIFF
+#endif /*PROFILE_RAM_USAGE*/
+
+#ifdef PROFILE_HEAP_USAGE
+#define TAG_DEFAULT_HEAP_PROFILING_BEGIN \
+    TInt beginProfilingHEAPBiggestBlock; \
+    TInt beginProfilingHEAP = User::Available(beginProfilingHEAPBiggestBlock) \
+
+#define TAG_DEFAULT_HEAP_PROFILING_END \
+    TInt endProfilingHEAPBiggestBlock; \
+    TInt endProfilingHEAP = User::Available(endProfilingHEAPBiggestBlock) \
+
+#define PRINT_TO_CONSOLE_HEAP_DIFF \
+    TInt diffHEAP = beginProfilingHEAP - endProfilingHEAP; \
+    if ( diffHEAP > 0 ) \
+        { \
+        RDebug::Printf("VPROFILEDAT: %s : HEAP used[%u]bytes ", __PRETTY_FUNCTION__, diffHEAP); \
+        } \
+    else \
+        { \
+        RDebug::Printf("VPROFILEDAT: %s : HEAP freed[%u]bytes ", __PRETTY_FUNCTION__, (-diffHEAP)); \
+        }
+#else /* Empty macros */
+#define TAG_DEFAULT_HEAP_PROFILING_BEGIN
+#define TAG_DEFAULT_HEAP_PROFILING_END
+#define PRINT_TO_CONSOLE_HEAP_DIFF
+#endif /*PROFILE_HEAP_USAGE*/
+
+#endif /*PROFILEUTILMACRO_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/tsrc/ststester/src/ststester.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,169 @@
+/*
+ * 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:
+ * The file contains the implementation of the STS Tester.
+ */
+
+#include "ststester.h"
+
+#include <systemtoneservice.h>
+#define PROFILE_TIME 1
+#include "profileutilmacro.h"
+
+const TInt KKeyMapPageCount = 1;
+
+const TInt KFontSize = 15;
+
+const TOperationsPage KKeyMap[KKeyMapPageCount] =
+    {
+        {STR("Standard controls"), 5, // default softkey index
+           {
+               // Enter
+               {STR(""),                   KOperation_ExecuteOption},
+               // Up / Down / Left / Right
+               {STR(""),                   KOperation_PreviousOption},
+               {STR(""),                   KOperation_NextOption},
+               {STR(""),                   KOperation_PreviousOptionPage},
+               {STR(""),                   KOperation_NextOptionPage},
+               // 0 - 9
+               {STR("Play Default Beep"),  EOperation_PlayDefaultBeep},
+               {STR("Play Clock Alarm"),   EOperation_PlayClockAlarm},
+               {STR("Stop Clock Alarm"),   EOperation_StopClockAlarm},
+               {STR(""),                   KOperation_None},
+               {STR(""),                   KOperation_None},
+               {STR(""),                   KOperation_None},
+               {STR(""),                   KOperation_None},
+               {STR(""),                   KOperation_None},
+               {STR(""),                   KOperation_None},
+               {STR("Exit"),               KOperation_Exit}
+           }
+        }
+    };
+
+void CStsTester::ExecuteL()
+    {
+    CStsTester* self = new (ELeave) CStsTester;
+    CleanupStack::PushL(self);
+    self->InitL();
+    self->Main();
+    CleanupStack::PopAndDestroy(self);
+    }
+
+CStsTester::CStsTester() :
+    CTestAppBase(KFontSize), iPlayState(EStopped)
+    {
+    }
+
+CStsTester::~CStsTester()
+    {
+    CSystemToneService::Delete( iSts);
+    }
+
+void CStsTester::InitL()
+    {
+    BaseConstructL(KKeyMap, KKeyMapPageCount);
+    iSts = CSystemToneService::Create();
+    }
+
+void CStsTester::Main()
+    {
+    TRAP_IGNORE( MainL() );
+    }
+
+void CStsTester::MainL()
+    {
+    _LIT( KPlayDefault, "Play Default Beep" );
+    _LIT( KPlayClockAlarm, "Play Clock Alarm" );
+    _LIT( KStopClockAlarm, "Stop Clock Alarm" );
+    _LIT( KExit, "Exit");
+
+    bool done = false;
+
+    while (!done)
+        {
+        RPointerArray<TDesC> operations;
+        operations.Append(&KPlayDefault);
+        operations.Append(&KPlayClockAlarm);
+        operations.Append(&KStopClockAlarm);
+        operations.Append(&KExit);
+
+        TInt index = SelectFromListL(TPoint(0, 0), iDisplaySize,
+                _L("Select STS operation to perform:"), operations);
+
+        operations.Reset();
+
+        TPtrC operationName(STR("Play Default Beep"));
+
+        switch (index)
+            {
+            case -1:
+                done = true;
+                break;
+            case 0:
+                ExecuteOperation(EOperation_PlayDefaultBeep, operationName);
+                break;
+            case 1:
+                ExecuteOperation(EOperation_PlayClockAlarm, operationName);
+                break;
+            case 2:
+                ExecuteOperation(EOperation_StopClockAlarm, operationName);
+                break;
+            case 3:
+                done = true;
+                break;
+            }
+        }
+    }
+
+void CStsTester::ExecuteOperation(TInt aOperation, const TDesC& /*aOperationText*/)
+    {
+    switch (aOperation)
+        {
+        case EOperation_PlayDefaultBeep:
+            {
+            TAG_TIME_PROFILING_BEGIN;
+            iSts->PlayTone(CSystemToneService::EDefaultBeep);
+            TAG_TIME_PROFILING_END;
+            PRINT_TO_CONSOLE_TIME_DIFF;
+            break;
+            }
+        case EOperation_PlayClockAlarm:
+            {
+            // Only play if not already playing
+            if (iPlayState != EPlaying)
+                {
+                TAG_TIME_PROFILING_BEGIN;
+                iSts->PlayTone(CSystemToneService::EClockAlarm,
+                        iCurrentContext);
+                TAG_TIME_PROFILING_END;
+                PRINT_TO_CONSOLE_TIME_DIFF;
+                iPlayState = EPlaying;
+                }
+            break;
+            }
+        case EOperation_StopClockAlarm:
+            {
+            TAG_TIME_PROFILING_BEGIN;
+            iSts->StopTone(iCurrentContext);
+            TAG_TIME_PROFILING_END;
+            PRINT_TO_CONSOLE_TIME_DIFF;
+            iPlayState = EStopped;
+            break;
+            }
+        default:
+            {
+            break;
+            }
+        }
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/tsrc/ststester/src/ststester.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,71 @@
+/*
+ * 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:
+ * The file defines the interface for the STS Tester.
+ */
+
+#ifndef STSTESTER_H_
+#define STSTESTER_H_
+
+#include "testappbase.h"
+
+class CSystemToneService;
+
+enum TOperations
+    {
+    EOperation_PlayDefaultBeep = KOperation_FirstCustomIndex,
+    EOperation_PlayClockAlarm,
+    EOperation_StopClockAlarm
+    };
+
+class CStsTester : public CTestAppBase
+    {
+public:
+    // Methods
+
+    static void ExecuteL();
+
+private:
+    // Methods
+
+    CStsTester();
+
+    ~CStsTester();
+
+    void InitL();
+
+    void Main();
+
+    void MainL();
+
+    // inherited from CTestAppBase
+    virtual void ExecuteOperation(TInt aOperation,
+            const TDesC& aOperationText);
+
+private:
+    // Attributes
+
+    enum TPlayState
+        {
+        EStopped, EPlaying
+        };
+
+    // STS attributes
+    CSystemToneService* iSts;
+    unsigned int iCurrentContext;
+    TPlayState iPlayState;
+
+    };
+
+#endif // STSTESTER_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/tsrc/ststester/src/ststestermain.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,37 @@
+/*
+ * 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:
+ * This is the main driver of System Tone Service Tester.
+ */
+
+//  Include Files  
+#include "ststestermain.h"
+#include "ststester.h"
+
+//  Global Functions
+GLDEF_C TInt E32Main()
+    {
+    __UHEAP_MARK;
+    CActiveScheduler* scheduler = new CActiveScheduler;
+    CTrapCleanup* cleanup = CTrapCleanup::New();
+    if( scheduler != NULL && cleanup != NULL )
+    {
+        CActiveScheduler::Install( scheduler );
+        TRAP_IGNORE( CStsTester::ExecuteL() );
+    }
+    delete cleanup;
+    delete scheduler;
+    __UHEAP_MARKEND;
+    return KErrNone;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/tsrc/ststester/src/testappbase.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,1236 @@
+/*
+ * 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:
+ * Source file containing common test app functionality.
+ */
+
+#include <f32file.h>
+#include <remconcoreapitarget.h>
+#include <remconinterfaceselector.h>
+
+#include "testappbase.h"
+
+const TInt KLeftSoftKeyScanCode = EStdKeyDevice0;
+const TInt KRightSoftKeyScanCode = EStdKeyDevice1;
+
+const TInt KHelpWindowBorderPixels = 20;
+const TInt KHelpWindowSpaceBetweenColumns = 25;
+const TInt KHelpWindowSpaceBetweenRows = 2;
+
+// TODO: WOULD BE BETTER TO DYNAMICALLY DETECT THE AVAILABLE DRIVES
+_LIT( KDriveC, "C:" );
+_LIT( KDriveE, "E:" );
+_LIT( KDriveF, "F:" );
+_LIT( KDriveZ, "Z:" );
+
+struct TKeyListEntry
+    {
+    TInt scanCode;
+    TInt scanCode2;
+    const TText* keyName;
+    };
+
+// Some emulators return '1' when key 1 is pressed and others returned EStdKeyNkp1.
+// Convert both case into '1'.
+const TKeyListEntry KSupportedKeys[KSupportedKeysCount] =
+    {
+        {EStdKeyEnter,      EStdKeyNull, STR("Enter")},
+        {EStdKeyUpArrow,    EStdKeyNull, STR("Up")},
+        {EStdKeyDownArrow,  EStdKeyNull, STR("Down")},
+        {EStdKeyLeftArrow,  EStdKeyNull, STR("Left")},
+        {EStdKeyRightArrow, EStdKeyNull, STR("Right")},
+        {'0',               EStdKeyNkp0, STR("0")},
+        {'1',               EStdKeyNkp1, STR("1")},
+        {'2',               EStdKeyNkp2, STR("2")},
+        {'3',               EStdKeyNkp3, STR("3")},
+        {'4',               EStdKeyNkp4, STR("4")},
+        {'5',               EStdKeyNkp5, STR("5")},
+        {'6',               EStdKeyNkp6, STR("6")},
+        {'7',               EStdKeyNkp7, STR("7")},
+        {'8',               EStdKeyNkp8, STR("8")},
+        {'9',               EStdKeyNkp9, STR("9")}
+    };
+
+static TPtrC KeyName(TInt aIndex)
+    {
+    //TODO: Check aIndex range
+    return TPtrC(KSupportedKeys[aIndex].keyName);
+    }
+
+// Portable app implementation
+
+CTestAppBase::CTestAppBase(TInt aFontSize) :
+    CActive(EPriorityStandard), iFontSize(aFontSize),
+            iHelpSemitransparentBackgroundActive(true)
+    {
+    CActiveScheduler::Add(this);
+    }
+
+CTestAppBase::~CTestAppBase()
+    {
+    delete iInterfaceSelector;
+    delete iHelpWindow;
+    delete iSelectionWindow;
+    delete iGc;
+    delete iWindowGroup;
+    delete iScreenDevice;
+    delete iTypefaceStore;
+    iWs.Close();
+    iFs.Close();
+    iFileHistory.ResetAndDestroy();
+    }
+
+void CTestAppBase::BaseConstructL(const TOperationsPage* aKeyMap,
+        TInt aPageCount)
+    {
+    iKeyMap = aKeyMap;
+    iPageCount = aPageCount;
+
+    User::LeaveIfError(iFs.Connect());
+
+    User::LeaveIfError(iWs.Connect());
+
+    iScreenDevice = new (ELeave) CWsScreenDevice(iWs);
+    User::LeaveIfError(iScreenDevice->Construct());
+    iDisplaySize = iScreenDevice->SizeInPixels();
+
+    User::LeaveIfError(iScreenDevice->CreateContext(iGc));
+
+    iWindowGroup = new (ELeave) RWindowGroup(iWs);
+    User::LeaveIfError(iWindowGroup->Construct(KNullWsHandle));
+
+    iSelectionWindow = new (ELeave) RWindow(iWs);
+    User::LeaveIfError(iSelectionWindow->Construct(*iWindowGroup,
+            KNullWsHandle));
+    iSelectionWindow->SetVisible(false);
+    iSelectionWindow->Activate();
+
+    // Load the font to be used for all text operations.
+    TFontSpec fontSpec;
+    fontSpec.iHeight = iFontSize;
+    iTypefaceStore = CFbsTypefaceStore::NewL(NULL);
+
+    User::LeaveIfError(iTypefaceStore->GetNearestFontToDesignHeightInPixels(
+            iFont, fontSpec));
+
+    CalculateHelpWindowSize();
+
+    iHelpWindowTopRight = TPoint(iDisplaySize.iWidth / 2
+            - iHelpWindowSize.iWidth / 2, iDisplaySize.iHeight / 2
+            - iHelpWindowSize.iHeight / 2);
+
+    iHelpWindow = new (ELeave) RWindow(iWs);
+    User::LeaveIfError(iHelpWindow->Construct(*iWindowGroup, KNullWsHandle));
+    iHelpWindow->SetExtent(iHelpWindowTopRight, iHelpWindowSize);
+    iHelpWindow->SetTransparencyAlphaChannel();
+    iHelpWindow->SetBackgroundColor(KRgbTransparent);
+    iHelpWindow->SetVisible(false);
+    iHelpWindow->Activate();
+
+    iSoftkeyIndex = iKeyMap[iCurrentPage].defaultSoftkeyIndex;
+
+    // Only need to draw the help text when the options page is changed.  Window is displayed later by
+    // toggling the visibility of the window.
+    DrawHelpText();
+
+    // THE FOLLOWING CODE IS COMMENTED OUT BECAUSE IT CAUSES A CRASH IN NCP BUILDS.
+    // THIS CAN BE ENABLED IN DFS BUILDS, TO ALLOW FOR TWO BUTTON OPERATION USING THE VOLUME KEYS.
+    //
+    // Since some phone have no keyboard or soft keys, treat the volume keys like the soft keys.
+    // SetupVolumeKeysL();    
+    }
+
+void CTestAppBase::SetupVolumeKeysL()
+    {
+    iInterfaceSelector = CRemConInterfaceSelector::NewL();
+    iCoreTarget = CRemConCoreApiTarget::NewL(*iInterfaceSelector, *this);
+    iInterfaceSelector->OpenTargetL();
+    }
+
+void CTestAppBase::StartMonitoringWindowEvents()
+    {
+    // Request notification for windows server events, to detect key presses.    
+    SetActive();
+    iWs.EventReady(&iStatus);
+    }
+
+TInt CTestAppBase::CurrentPageNumber()
+    {
+    return iCurrentPage + 1;
+    }
+
+TPtrC CTestAppBase::CurrentPageName()
+    {
+    return TPtrC(iKeyMap[iCurrentPage].pageName);
+    }
+
+TPtrC CTestAppBase::CurrentSoftkeyName()
+    {
+    return TPtrC(iKeyMap[iCurrentPage].mapping[iSoftkeyIndex].text);
+    }
+
+TPtrC CTestAppBase::KeyMapText(TInt aIndex, TInt aPage)
+    {
+    return TPtrC(iKeyMap[aPage].mapping[aIndex].text);
+    }
+
+TInt CTestAppBase::KeyMapOperation(TInt aIndex, TInt aPage)
+    {
+    return iKeyMap[aPage].mapping[aIndex].operation;
+    }
+
+void CTestAppBase::IncrementKeymapIndex(TInt& aIndex, TInt aPage)
+    {
+    aIndex = (aIndex + 1) % KSupportedKeysCount;
+    while (iKeyMap[aPage].mapping[aIndex].operation == KOperation_None)
+        {
+        aIndex = (aIndex + 1) % KSupportedKeysCount;
+        }
+    }
+
+void CTestAppBase::DecrementKeymapIndex(TInt& aIndex, TInt aPage)
+    {
+    aIndex = (aIndex + KSupportedKeysCount - 1) % KSupportedKeysCount;
+    while (iKeyMap[aPage].mapping[aIndex].operation == KOperation_None)
+        {
+        aIndex = (aIndex + KSupportedKeysCount - 1) % KSupportedKeysCount;
+        }
+    }
+
+void CTestAppBase::CalculateHelpWindowSize()
+    {
+    iHelpWindowColumn1Width = 0;
+    iHelpWindowColumn2Width = 0;
+
+    // Find the widest strings for each column to determine the width of the window.
+    for (TInt index = 0; index < KSupportedKeysCount; index++)
+        {
+        TInt width = iFont->TextWidthInPixels(KeyName(index));
+        if (width > iHelpWindowColumn1Width)
+            {
+            iHelpWindowColumn1Width = width;
+            }
+
+        for (TInt index2 = 0; index2 < iPageCount; index2++)
+            {
+            width = iFont->TextWidthInPixels(KeyMapText(index, index2));
+            if (width > iHelpWindowColumn2Width)
+                {
+                iHelpWindowColumn2Width = width;
+                }
+            }
+        }
+
+    iHelpWindowSize.iWidth = 2 * KHelpWindowBorderPixels
+            + iHelpWindowColumn1Width + KHelpWindowSpaceBetweenColumns
+            + iHelpWindowColumn2Width;
+
+    iHelpWindowSize.iHeight = 2 * KHelpWindowBorderPixels + iFontSize
+            * KSupportedKeysCount + KHelpWindowSpaceBetweenRows
+            * (KSupportedKeysCount - 1);
+    }
+
+CTestAppBase::TTestAppPointerEvent CTestAppBase::CharacterizePointerEvent(
+        TAdvancedPointerEvent& event)
+    {
+    TTestAppPointerEvent returnValue = EPointerEvent_None;
+
+    RDebug::Printf("POINTER EVENT:");
+    RDebug::Printf("iType=%i", event.iType);
+    RDebug::Printf("iModifiers=%x", event.iModifiers);
+    RDebug::Printf("iPosition=%i,%i", event.iPosition.iX, event.iPosition.iY);
+    RDebug::Printf("iParentPosition=%i,%i", event.iParentPosition.iX,
+            event.iParentPosition.iY);
+    RDebug::Printf("PointerNumber=%i", event.PointerNumber());
+    RDebug::Printf("Proximity=%i", event.Proximity());
+    RDebug::Printf("Pressure=%i", event.Pressure());
+    RDebug::Printf("ProximityAndPressure=%i", event.ProximityAndPressure());
+    RDebug::Printf("Position3D=%i,%i,%i", event.Position3D().iX,
+            event.Position3D().iY, event.Position3D().iZ);
+    RDebug::Printf("Pressure3D=%i,%i,%i", event.Pressure3D().iX,
+            event.Pressure3D().iY, event.Pressure3D().iZ);
+    RDebug::Printf("PositionAndPressure3D=%i,%i,%i",
+            event.PositionAndPressure3D().iX,
+            event.PositionAndPressure3D().iY,
+            event.PositionAndPressure3D().iZ);
+
+    switch (event.iType)
+        {
+        case TPointerEvent::EButton1Down:
+            {
+            iPointerDownPosition = event.iPosition;
+            break;
+            }
+        case TPointerEvent::EButton1Up:
+            {
+            TInt xDelta = event.iPosition.iX - iPointerDownPosition.iX;
+            TInt yDelta = event.iPosition.iY - iPointerDownPosition.iY;
+
+            TInt xMagnitude = xDelta;
+            if (xMagnitude < 0)
+                {
+                xMagnitude = -xMagnitude;
+                }
+
+            TInt yMagnitude = yDelta;
+            if (yMagnitude < 0)
+                {
+                yMagnitude = -yMagnitude;
+                }
+
+            const TInt KTapThreshold = 30;
+
+            if (yMagnitude > xMagnitude)
+                {
+                if (yMagnitude < KTapThreshold)
+                    {
+                    RDebug::Printf("POINTER EVENT ENTER x=%i y=%i", xDelta,
+                            yDelta);
+                    returnValue = EPointerEvent_Select;
+                    }
+                else if (yDelta < 0)
+                    {
+                    RDebug::Printf("POINTER EVENT UP x=%i y=%i", xDelta,
+                            yDelta);
+                    returnValue = EPointerEvent_Up;
+                    }
+                else
+                    {
+                    RDebug::Printf("POINTER EVENT DOWN x=%i y=%i", xDelta,
+                            yDelta);
+                    returnValue = EPointerEvent_Down;
+                    }
+                }
+            else
+                {
+                if (xMagnitude < KTapThreshold)
+                    {
+                    RDebug::Printf("POINTER EVENT ENTER x=%i y=%i", xDelta,
+                            yDelta);
+                    returnValue = EPointerEvent_Select;
+                    }
+                else if (xDelta < 0)
+                    {
+                    RDebug::Printf("POINTER EVENT LEFT x=%i y=%i", xDelta,
+                            yDelta);
+                    returnValue = EPointerEvent_Left;
+                    }
+                else
+                    {
+                    RDebug::Printf("POINTER EVENT RIGHT x=%i y=%i", xDelta,
+                            yDelta);
+                    returnValue = EPointerEvent_Right;
+                    }
+                }
+            break;
+            }
+        }
+
+    return returnValue;
+    }
+
+void CTestAppBase::RunL()
+    {
+    if (iWait.IsStarted())
+        {
+        // This is an event during synchronous list selection.  Stop the nested scheduler.
+        iWait.AsyncStop();
+        return;
+        }
+
+    TWsEvent event;
+    iWs.GetEvent(event);
+
+    TInt operationIndex = -1;
+
+    TInt scanCode = 0;
+    bool processScanCode = false;
+
+    TInt operation = KOperation_None;
+
+    // Other potentially useful events are EEventKeyUp and EEventKeyDown.
+
+    if (event.Type() == EEventKey)
+        {
+        scanCode = event.Key()->iScanCode;
+
+        RDebug::Printf("key event %x %c", scanCode, scanCode);
+
+        // Allow subclasses a chance to consume the key event directly.  If that happens, then
+        // do not handle the key as normal.
+        if (!ConsumeKeyEvent(scanCode))
+            {
+            processScanCode = true;
+            }
+        }
+    else if (event.Type() == EEventPointer)
+        {
+        TAdvancedPointerEvent* p = event.Pointer();
+
+        TTestAppPointerEvent pointerEvent = CharacterizePointerEvent(*p);
+
+        switch (pointerEvent)
+            {
+            case EPointerEvent_None:
+                // Do nothing.
+                break;
+            case EPointerEvent_Up:
+                operation = KOperation_PreviousOption;
+                break;
+            case EPointerEvent_Down:
+                operation = KOperation_NextOption;
+                break;
+            case EPointerEvent_Left:
+                operation = KOperation_PreviousOptionPage;
+                break;
+            case EPointerEvent_Right:
+                operation = KOperation_NextOptionPage;
+                break;
+            case EPointerEvent_Select:
+                operation = KOperation_ExecuteOption;
+                break;
+            }
+        }
+
+    if (processScanCode)
+        {
+        // If one of the softkeys were pressed then take the appropriate action.
+        // This is to support a two button touch device with no numeric keypad.
+        // Support 'A' and 'B' also, for the NCP emulator where a keyboard  is
+        // not displayed.
+        switch (scanCode)
+            {
+            case KLeftSoftKeyScanCode:
+            case 'a':
+            case 'A':
+                {
+                operation = KOperation_NextOption;
+                break;
+                }
+            case KRightSoftKeyScanCode:
+            case 'b':
+            case 'B':
+                {
+                // Execute softkey function.
+                operation = KOperation_ExecuteOption;
+                break;
+                }
+            default:
+                {
+                // Search for scancode in keymap.  If not found then the key was not a valid
+                // key, so ignore.                
+                TInt index = 0;
+                while ((index < KSupportedKeysCount)
+                        && (operationIndex == -1))
+                    {
+                    if (KSupportedKeys[index].scanCode == scanCode
+                            || KSupportedKeys[index].scanCode2 == scanCode)
+                        {
+                        // Found!
+                        operationIndex = index;
+                        }
+                    else
+                        {
+                        index++;
+                        }
+                    }
+                break;
+                }
+            }
+        }
+
+    if (operation == KOperation_ExecuteOption)
+        {
+        operationIndex = iSoftkeyIndex;
+        }
+
+    if (operationIndex >= 0)
+        {
+        operation = KeyMapOperation(operationIndex, iCurrentPage);
+        }
+
+    if (operation != KOperation_None)
+        {
+        // Valid operation.
+
+        switch (operation)
+            {
+            case KOperation_Exit:
+                {
+                CActiveScheduler::Stop();
+                break;
+                }
+            case KOperation_PreviousOption:
+                {
+                // Change softkey function.
+                DecrementKeymapIndex(iSoftkeyIndex, iCurrentPage);
+
+                // Redraw help text, since a new function should now be underlined.
+                DrawHelpText();
+
+                // Notify subclass that softkey function has been updated.
+                SoftkeyFunctionUpdated();
+                break;
+                }
+            case KOperation_NextOption:
+                {
+                // Change softkey function.
+                IncrementKeymapIndex(iSoftkeyIndex, iCurrentPage);
+
+                // Redraw help text, since a new function should now be underlined.
+                DrawHelpText();
+
+                // Notify subclass that softkey function has been updated.
+                SoftkeyFunctionUpdated();
+                break;
+                }
+            case KOperation_PreviousOptionPage:
+                {
+                iCurrentPage = (iCurrentPage + iPageCount - 1) % iPageCount;
+                iSoftkeyIndex = iKeyMap[iCurrentPage].defaultSoftkeyIndex;
+                DrawHelpText();
+                SoftkeyFunctionUpdated();
+                break;
+                }
+            case KOperation_NextOptionPage:
+                {
+                iCurrentPage = (iCurrentPage + 1) % iPageCount;
+                iSoftkeyIndex = iKeyMap[iCurrentPage].defaultSoftkeyIndex;
+                DrawHelpText();
+                SoftkeyFunctionUpdated();
+                break;
+                }
+            case KOperation_ToggleHelpVisibility:
+                {
+                // Toggle help text on/off.
+                iHelpActive = !iHelpActive;
+                iHelpWindow->SetVisible(iHelpActive);
+                break;
+                }
+            case KOperation_ToggleHelpTransparency:
+                {
+                iHelpSemitransparentBackgroundActive
+                        = !iHelpSemitransparentBackgroundActive;
+                if (iHelpSemitransparentBackgroundActive)
+                    {
+                    // Turn on help if it is currently off.
+                    iHelpActive = true;
+                    iHelpWindow->SetVisible(true);
+                    }
+                DrawHelpText();
+                break;
+                }
+            default:
+                {
+                // Pass operation to subclass.
+                TPtrC operatioName(KeyMapText(operationIndex, iCurrentPage));
+                ExecuteOperation(operation, operatioName);
+                break;
+                }
+            }
+        }
+
+    SetActive();
+    iWs.EventReady(&iStatus);
+    }
+
+void CTestAppBase::DoCancel()
+    {
+    iWs.EventReadyCancel();
+    }
+
+// TODO: ALLOW SUBCLASS TO SPECIFY COLOR SELECTIONS
+
+TInt CTestAppBase::SelectFromListL(TPoint aTopLeft, TSize aSize,
+        const TDesC& aHeaderText, RPointerArray<TDesC>& aSelectionList,
+        TInt aInitialSelectionIndex)
+    {
+    iSelectionWindow->SetExtent(aTopLeft, aSize);
+    iSelectionWindow->SetVisible(true);
+
+    const TInt KRowIncrement = iFontSize + 2;
+
+    TInt entriesPerPage = aSize.iHeight / KRowIncrement - 4;
+
+    TInt returnValue = -2;
+    TInt startIndex = 0;
+    TInt selected = aInitialSelectionIndex;
+
+    while (returnValue == -2)
+        {
+        iGc->Activate(*iSelectionWindow);
+
+        iSelectionWindow->Invalidate();
+        iSelectionWindow->BeginRedraw();
+
+        iGc->Reset();
+
+        iGc->UseFont(iFont);
+        iGc->SetBrushColor(KRgbDarkBlue);
+
+        iGc->Clear();
+
+        // KRgbWhite seems to be having problems (0xffffff) in some emulators,
+        // but 0xfefefe is working, so use that instead of white.        
+        iGc->SetPenColor(0xfefefe);
+
+        const TInt KHeaderColumn = 5;
+        const TInt KEntryColumn = 15;
+
+        TInt row = KRowIncrement;
+
+        iGc->SetUnderlineStyle(EUnderlineOff);
+
+        iGc->DrawText(aHeaderText, TPoint(KHeaderColumn, row));
+        row += (KRowIncrement + 5);
+
+        TBool again = true;
+        TInt backIndex = -1;
+        TInt forwardIndex = -1;
+        TInt offset = 0;
+
+        while (again)
+            {
+            if (selected == offset)
+                {
+                iGc->SetUnderlineStyle(EUnderlineOn);
+                }
+            else
+                {
+                iGc->SetUnderlineStyle(EUnderlineOff);
+                }
+
+            if ((offset < entriesPerPage) && (startIndex + offset
+                    < aSelectionList.Count()))
+                {
+                iGc->DrawText(*aSelectionList[startIndex + offset], TPoint(
+                        KEntryColumn, row));
+                row += KRowIncrement;
+
+                offset++;
+                }
+            else
+                {
+                again = false;
+                if (startIndex + offset < aSelectionList.Count())
+                    {
+                    iGc->DrawText(_L("<page down>"),
+                            TPoint(KEntryColumn, row));
+                    row += KRowIncrement;
+
+                    forwardIndex = offset;
+                    offset++;
+                    }
+                if (startIndex > 0)
+                    {
+                    iGc->DrawText(_L("<page up>"), TPoint(KEntryColumn, row));
+                    row += KRowIncrement;
+
+                    backIndex = offset;
+                    offset++;
+                    }
+                }
+            }
+
+        iSelectionWindow->EndRedraw();
+
+        iGc->Deactivate();
+
+        TInt scanCode = WaitForAnyKey();
+
+        switch (scanCode)
+            {
+            case EStdKeyUpArrow:
+                if (selected == 0)
+                    {
+                    selected = offset - 1;
+                    }
+                else
+                    {
+                    selected -= 1;
+                    }
+                break;
+
+            case EStdKeyDownArrow:
+            case KLeftSoftKeyScanCode:
+            case 'a':
+            case 'A':
+                selected += 1;
+                if (selected == offset)
+                    {
+                    selected = 0;
+                    }
+                break;
+
+            case EStdKeyLeftArrow:
+                if (backIndex >= 0)
+                    {
+                    startIndex -= entriesPerPage;
+                    selected = 0;
+                    }
+                else
+                    {
+                    returnValue = -1;
+                    again = false;
+                    }
+                break;
+
+            case EStdKeyRightArrow:
+                if (forwardIndex >= 0)
+                    {
+                    startIndex += entriesPerPage;
+                    selected = 0;
+                    }
+                break;
+
+            case EStdKeyEnter:
+            case KRightSoftKeyScanCode:
+            case 'b':
+            case 'B':
+                if (selected == forwardIndex)
+                    {
+                    startIndex += entriesPerPage;
+                    selected = 0;
+                    }
+                else if (selected == backIndex)
+                    {
+                    startIndex -= entriesPerPage;
+                    selected = 0;
+                    }
+                else
+                    {
+                    returnValue = startIndex + selected;
+                    }
+                break;
+            }
+        }
+
+    iSelectionWindow->SetVisible(false);
+
+    return returnValue;
+    }
+
+bool CTestAppBase::SelectDriveL(TPoint aTopLeft, TSize aWindowSize,
+        const TDesC& aHeaderText, TDes& aDrive)
+    {
+    RPointerArray<TDesC> drives;
+
+    // Select drive letter.
+    drives.Append(&KDriveC);
+    drives.Append(&KDriveE);
+    drives.Append(&KDriveF);
+    drives.Append(&KDriveZ);
+
+    TInt index = SelectFromListL(aTopLeft, aWindowSize, aHeaderText, drives);
+
+    bool returnValue = false;
+
+    if (index >= 0)
+        {
+        returnValue = true;
+        aDrive.Copy(*(drives[index]));
+        aDrive.Append(_L("\\"));
+        }
+
+    drives.Reset();
+
+    return returnValue;
+    }
+
+bool CTestAppBase::SelectFileL(TPoint aTopLeft, TSize aWindowSize,
+        const TDesC& aHeaderText, const TDesC& aDrive, TDes& aFullFilename)
+    {
+    TFileName directory;
+
+    DoSelectFileL(aTopLeft, aWindowSize, aHeaderText, aDrive, 0, directory,
+            aFullFilename);
+
+    aFullFilename.Insert(0, directory);
+
+    return aFullFilename.Length() > 0;
+    }
+
+bool CTestAppBase::SelectFileWithHistoryL(TPoint aTopLeft, TSize aSize,
+        TDes& aFullFilename, const TDesC& aHistoryFilename,
+        TInt aMaxHistoryEntries)
+    {
+    RPointerArray<TDesC> selections;
+
+    selections.Append(&KDriveC);
+    selections.Append(&KDriveE);
+    selections.Append(&KDriveF);
+    selections.Append(&KDriveZ);
+
+    // Add file history to the end of the drive list.  Newest files are last, so add in reverse order.
+    ReadFileHistory(aHistoryFilename);
+    for (TInt index = iFileHistory.Count() - 1; index >= 0; index--)
+        {
+        selections.Append(iFileHistory[index]);
+        }
+
+    bool done = false;
+    bool selected = true;
+
+    while (!done)
+        {
+        TInt index = SelectFromListL(aTopLeft, aSize,
+                _L("Select drive or recent file:"), selections);
+
+        if (index < 0)
+            {
+            selected = false;
+            done = true;
+            }
+        else if (index < 4)
+            {
+            TBuf<10> drive;
+            drive.Copy(*(selections[index]));
+            drive.Append(_L("\\"));
+
+            done = SelectFileL(aTopLeft, aSize, _L("Select file:"), drive,
+                    aFullFilename);
+            }
+        else
+            {
+            // Remove the selected file from the history, so that it will pop up to the top of the list
+            // as the most recently selected file.
+            TInt historyIndex = iFileHistory.Count() - index + 3;
+            iFileHistory.Remove(historyIndex);
+            aFullFilename.Copy(*(selections[index]));
+
+            done = true;
+            }
+        }
+
+    if (selected)
+        {
+        AddToFileHistory(aFullFilename, aHistoryFilename, aMaxHistoryEntries);
+        }
+
+    selections.Reset();
+
+    return selected;
+    }
+
+bool CTestAppBase::SelectIntegerL(TPoint aTopLeft, TSize aSize,
+        const TDesC& aHeaderText, TInt aMin, TInt aMax, TInt& aSelection)
+    {
+    // currently no way to exit out of this selection
+
+    iSelectionWindow->SetExtent(aTopLeft, aSize);
+    iSelectionWindow->SetVisible(true);
+
+    bool done = false;
+
+    while (!done)
+        {
+        iGc->Activate(*iSelectionWindow);
+
+        iSelectionWindow->Invalidate();
+        iSelectionWindow->BeginRedraw();
+
+        iGc->Reset();
+
+        iGc->UseFont(iFont);
+        iGc->SetBrushColor(KRgbDarkBlue);
+
+        iGc->Clear();
+
+        // KRgbWhite seems to be having problems (0xffffff) in some emulators,
+        // but 0xfefefe is working, so use that instead of white.        
+        iGc->SetPenColor(0xfefefe);
+
+        TBuf<120> buffer;
+        buffer.Copy(aHeaderText);
+        buffer.AppendFormat(_L(" %i"), aSelection);
+
+        iGc->DrawText(buffer, TPoint(5, iFontSize + 2));
+
+        iSelectionWindow->EndRedraw();
+
+        iGc->Deactivate();
+
+        TInt scanCode = WaitForAnyKey();
+
+        switch (scanCode)
+            {
+            case EStdKeyUpArrow:
+                aSelection -= 10;
+                break;
+
+            case EStdKeyDownArrow:
+            case KLeftSoftKeyScanCode:
+            case 'a':
+            case 'A':
+                aSelection += 10;
+                break;
+
+            case EStdKeyLeftArrow:
+                aSelection--;
+                break;
+
+            case EStdKeyRightArrow:
+                aSelection++;
+                break;
+
+            case EStdKeyEnter:
+            case KRightSoftKeyScanCode:
+            case 'b':
+            case 'B':
+                done = true;
+                break;
+            }
+
+        if (aSelection > aMax)
+            {
+            aSelection = aMin;
+            }
+        else if (aSelection < aMin)
+            {
+            aSelection = aMax;
+            }
+        }
+
+    iSelectionWindow->SetVisible(false);
+
+    return true;
+    }
+
+TInt CTestAppBase::WaitForAnyKey()
+    {
+    TInt returnValue = 0;
+
+    bool done = false;
+
+    while (!done)
+        {
+        // Have to use this tricky nested active scheduler technique to allow the active object
+        // used to remap volume keys to run.
+        SetActive();
+        iWs.EventReady(&iStatus);
+        iWait.Start();
+
+        TWsEvent event;
+        iWs.GetEvent(event);
+
+        // Other potentially useful events are EEventKeyUp and EEventKeyDown.
+
+        if (event.Type() == EEventKey)
+            {
+            done = true;
+            returnValue = event.Key()->iScanCode;
+            }
+        else if (event.Type() == EEventPointer)
+            {
+            TAdvancedPointerEvent* p = event.Pointer();
+
+            TTestAppPointerEvent pointerEvent = CharacterizePointerEvent(*p);
+
+            switch (pointerEvent)
+                {
+                case EPointerEvent_None:
+                    // Do nothing.
+                    break;
+                case EPointerEvent_Up:
+                    returnValue = EStdKeyUpArrow;
+                    done = true;
+                    break;
+                case EPointerEvent_Down:
+                    returnValue = EStdKeyDownArrow;
+                    done = true;
+                    break;
+                case EPointerEvent_Left:
+                    returnValue = EStdKeyLeftArrow;
+                    done = true;
+                    break;
+                case EPointerEvent_Right:
+                    returnValue = EStdKeyRightArrow;
+                    done = true;
+                    break;
+                case EPointerEvent_Select:
+                    returnValue = EStdKeyEnter;
+                    done = true;
+                    break;
+                }
+            }
+        }
+
+    return returnValue;
+    }
+
+void CTestAppBase::ReadFileHistory(const TDesC& aHistoryFilename)
+    {
+    iFileHistory.Reset();
+
+    RFile historyFile;
+    TInt err = historyFile.Open(iFs, aHistoryFilename, EFileShareReadersOnly
+            | EFileStream | EFileRead);
+
+    if (err == KErrNone)
+        {
+        TInt historyFileSize;
+        historyFile.Size(historyFileSize);
+
+        RBuf8 contents;
+        contents.Create(historyFileSize);
+
+        historyFile.Read(contents, historyFileSize);
+
+        historyFile.Close();
+
+        TPtrC8 remaining(contents);
+
+        while (remaining.Length() > 0)
+            {
+            TInt separatorIndex = remaining.Locate('\n');
+
+            if (separatorIndex < 0)
+                {
+                separatorIndex = remaining.Length();
+                }
+
+            HBufC* filename = HBufC::NewL(separatorIndex);
+            TPtrC8 filename8 = remaining.Left(separatorIndex);
+            filename->Des().Copy(filename8);
+
+            iFileHistory.Append(filename);
+
+            TInt remainingLength = remaining.Length() - separatorIndex - 1;
+
+            if (remainingLength > 0)
+                {
+                remaining.Set(remaining.Right(remaining.Length()
+                        - separatorIndex - 1));
+                }
+            else
+                {
+                break;
+                }
+            }
+
+        contents.Close();
+        }
+    }
+
+void CTestAppBase::AddToFileHistory(const TDesC& aFilename,
+        const TDesC& aHistoryFilename, TInt aMaxHistoryEntries)
+    {
+    HBufC* filename = HBufC::NewL(aFilename.Length());
+    filename->Des().Copy(aFilename);
+    iFileHistory.Append(filename);
+
+    while (iFileHistory.Count() > aMaxHistoryEntries)
+        {
+        delete iFileHistory[0];
+        iFileHistory.Remove(0);
+        }
+
+    RFile historyFile;
+    TInt err = historyFile.Create(iFs, aHistoryFilename, EFileStream
+            | EFileWrite);
+    if (err == KErrAlreadyExists)
+        {
+        err = historyFile.Open(iFs, aHistoryFilename, EFileStream
+                | EFileWrite);
+        historyFile.SetSize(0);
+        }
+
+    if (err == KErrNone)
+        {
+        for (TInt index = 0; index < iFileHistory.Count(); index++)
+            {
+            TBuf8<KMaxFileName> filename8;
+            filename8.Copy(iFileHistory[index]->Des());
+            historyFile.Write(filename8);
+            historyFile.Write(_L8("\n"));
+            }
+        }
+
+    historyFile.Close();
+    }
+
+void CTestAppBase::DoSelectFileL(TPoint aTopRight, TSize aWindowSize,
+        const TDesC& aHeaderText, const TFileName& aDirectory,
+        TInt aDirectoryLevel, TDes& aSelectedDirectory,
+        TDes& aSelectedFilename)
+    {
+    RPointerArray<TDesC> fileNames;
+
+    ReadDirectoryEntriesL(aDirectory, fileNames);
+
+    TInt initialSelectionIndex = 0;
+    _LIT( KUp, ".." );
+    if (aDirectoryLevel > 0)
+        {
+        TFileName* newEntry = new (ELeave) TFileName;
+        newEntry->Copy(KUp);
+        fileNames.Insert(newEntry, 0);
+        initialSelectionIndex++;
+        }
+
+    bool done = false;
+
+    while (!done && (aSelectedFilename.Length() == 0))
+        {
+        TInt index = SelectFromListL(aTopRight, aWindowSize, aHeaderText,
+                fileNames, initialSelectionIndex);
+
+        if (index == -1)
+            {
+            done = true;
+            }
+        else if (fileNames[index]->Compare(KUp) == 0)
+            {
+            // Go up one directory.  Return to caller without setting aFilename
+            break;
+            }
+        else if ((*fileNames[index])[fileNames[index]->Length() - 1] == '\\')
+            {
+            // Directory selected.
+            TFileName directory;
+            directory.Copy(aDirectory);
+            directory.Append(*fileNames[index]);
+            DoSelectFileL(aTopRight, aWindowSize, aHeaderText, directory,
+                    aDirectoryLevel + 1, aSelectedDirectory,
+                    aSelectedFilename);
+            }
+        else
+            {
+            // File selected.                            
+            aSelectedDirectory.Copy(aDirectory);
+            aSelectedFilename.Copy(*fileNames[index]);
+            done = true;
+            }
+
+        }
+
+    fileNames.ResetAndDestroy();
+    }
+
+void CTestAppBase::ReadDirectoryEntriesL(const TFileName& aDirectoryName,
+        RPointerArray<TDesC>& aFileNames)
+    {
+    aFileNames.ResetAndDestroy();
+
+    RDir dir;
+    User::LeaveIfError(dir.Open(iFs, aDirectoryName, KEntryAttNormal
+            | KEntryAttDir));
+
+    TEntryArray entries;
+    TInt err = KErrNone;
+    while (err == KErrNone)
+        {
+        err = dir.Read(entries);
+
+        for (TInt index = 0; index < entries.Count(); index++)
+            {
+            TFileName* newTail = new (ELeave) TFileName;
+            newTail->Copy(entries[index].iName);
+            if (entries[index].IsDir())
+                {
+                newTail->Append(_L("\\"));
+                }
+            aFileNames.Append(newTail);
+            }
+        }
+
+    dir.Close();
+    }
+
+void CTestAppBase::DrawHelpText()
+    {
+    iGc->Activate(*iHelpWindow);
+
+    iHelpWindow->Invalidate();
+    iHelpWindow->BeginRedraw();
+
+    iGc->Reset();
+
+    iGc->UseFont(iFont);
+    iGc->SetBrushColor(KRgbTransparent);
+
+    iGc->Clear();
+
+    if (iHelpSemitransparentBackgroundActive)
+        {
+        iGc->SetPenColor(KRgbTransparent);
+        iGc->SetBrushStyle(CWindowGc::ESolidBrush);
+        iGc->SetBrushColor(TRgb(0x7f7f7faf));
+        iGc->DrawRect(TRect(iHelpWindowSize));
+        }
+
+    // KRgbWhite seems to be having problems (0xffffff) in some emulators,
+    // but 0xfefefe is working, so use that instead of white.        
+    iGc->SetPenColor(0xfefefe);
+
+    const TInt KColumn1 = KHelpWindowBorderPixels;
+    const TInt KColumn2 = KColumn1 + iHelpWindowColumn1Width
+            + KHelpWindowSpaceBetweenColumns;
+    const TInt KRowIncrement = iFontSize + KHelpWindowSpaceBetweenRows;
+
+    TInt row = iFontSize + KHelpWindowBorderPixels;
+
+    for (TInt index = 0; index < KSupportedKeysCount; index++)
+        {
+        iGc->SetUnderlineStyle(EUnderlineOff);
+
+        TPtrC text = KeyMapText(index, iCurrentPage);
+
+        iGc->DrawText(KeyName(index), TPoint(KColumn1, row));
+
+        if (index == iSoftkeyIndex)
+            {
+            iGc->SetUnderlineStyle(EUnderlineOn);
+            }
+        else
+            {
+            iGc->SetUnderlineStyle(EUnderlineOff);
+            }
+
+        iGc->DrawText(text, TPoint(KColumn2, row));
+
+        row += KRowIncrement;
+        }
+
+    iHelpWindow->EndRedraw();
+
+    iGc->Deactivate();
+    }
+
+void CTestAppBase::MrccatoCommand(TRemConCoreApiOperationId aOperationId,
+        TRemConCoreApiButtonAction /*aButtonAct*/)
+    {
+    // Treat volume up like the right soft key, and volume down like the left soft key.
+    TKeyEvent keyEvent;
+    keyEvent.iCode = 0;
+    keyEvent.iScanCode = 0;
+    keyEvent.iModifiers = 0;
+    keyEvent.iRepeats = 0;
+
+    switch (aOperationId)
+        {
+        case ERemConCoreApiVolumeUp:
+            keyEvent.iScanCode = KRightSoftKeyScanCode;
+            iWs.SimulateKeyEvent(keyEvent);
+            iWs.Flush();
+            break;
+        case ERemConCoreApiVolumeDown:
+            keyEvent.iScanCode = KLeftSoftKeyScanCode;
+            iWs.SimulateKeyEvent(keyEvent);
+            iWs.Flush();
+            break;
+        default:
+            break;
+        }
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/sts/tsrc/ststester/src/testappbase.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,212 @@
+/*
+ * 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:
+ * Header specifying the common test functionality.
+ */
+
+#ifndef TESTAPPBASE_H_
+#define TESTAPPBASE_H_
+
+#include <e32base.h>
+#include <w32std.h>
+#include <remconcoreapitargetobserver.h>  // for volume key handling
+class CRemConCoreApiTarget;
+class CRemConInterfaceSelector;
+
+#define STR(a) (TText*)L##a
+
+// 15 keys are supported.  The keys are in this order:
+//    Enter, Up, Down, Left, Right, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
+const TInt KSupportedKeysCount = 15;
+
+struct TOperationEntry
+    {
+    const TText* text;
+    TInt operation;
+    };
+
+struct TOperationsPage
+    {
+    const TText* pageName;
+    TInt defaultSoftkeyIndex;
+    TOperationEntry mapping[KSupportedKeysCount];
+    };
+
+// Predefined standard operations
+const TInt KOperation_None = 0;
+const TInt KOperation_Exit = 1;
+const TInt KOperation_PreviousOptionPage = 2;
+const TInt KOperation_NextOptionPage = 3;
+const TInt KOperation_NextOption = 4;
+const TInt KOperation_PreviousOption = 5;
+const TInt KOperation_ExecuteOption = 6;
+const TInt KOperation_ToggleHelpVisibility = 7;
+const TInt KOperation_ToggleHelpTransparency = 8;
+const TInt KOperation_FirstCustomIndex = 10; // app-specific operations can start here
+
+const TUint32 KNullWsHandle = 0xFFFFFFFF;
+
+class CTestAppBase : public CActive, private MRemConCoreApiTargetObserver
+    {
+public:
+
+    CTestAppBase(TInt aFontSize);
+
+    ~CTestAppBase();
+
+    // inherited from CActive
+    void RunL();
+    void DoCancel();
+
+protected:
+
+    virtual void ExecuteOperation(TInt aOperation,
+            const TDesC& aOperationText) = 0;
+
+    // Subclasses can override this function to take action when the current softkey function has been changed.
+    virtual void SoftkeyFunctionUpdated()
+        {
+        }
+    ;
+
+    // Subclasses can override this function to override the default key event handling.
+    virtual bool ConsumeKeyEvent(TInt /*aScanCode*/)
+        {
+        return false;
+        }
+    ;
+
+    void BaseConstructL(const TOperationsPage* aKeyMap, TInt aPageCount);
+
+    void SetupVolumeKeysL();
+
+    void StartMonitoringWindowEvents();
+
+    TInt CurrentPageNumber();
+
+    TPtrC CurrentPageName();
+
+    TPtrC CurrentSoftkeyName();
+
+    // Presents a selection list to the user and returns the index of the selected entry.
+    // Synchronous call.
+    // returns -1 if the selection was backed out without making a selection
+    TInt SelectFromListL(TPoint aTopLeft, TSize aSize,
+            const TDesC& aHeaderText, RPointerArray<TDesC>& aSelectionList,
+            TInt aInitialSelectionIndex = 0);
+
+    // Synchronous call.
+    // returns false if the selection was backed out without making a selection
+    bool SelectDriveL(TPoint aTopLeft, TSize aSize, const TDesC& aHeaderText,
+            TDes& aDrive);
+
+    // Synchronous call.
+    // returns false if the selection was backed out without making a selection
+    bool SelectFileL(TPoint aTopLeft, TSize aSize, const TDesC& aHeaderText,
+            const TDesC& aDrive, TDes& aFullFilename);
+
+    // Synchronous call.
+    // returns false if the selection was backed out without making a selection
+    bool SelectFileWithHistoryL(TPoint aTopLeft, TSize aSize,
+            TDes& aFullFilename, const TDesC& aHistoryFilename,
+            TInt aMaxHistoryEntries);
+
+    // Synchronous call.
+    // returns false if the selection was backed out without making a selection
+    bool SelectIntegerL(TPoint aTopLeft, TSize aSize,
+            const TDesC& aHeaderText, TInt aMin, TInt aMax, TInt& aSelection); // set aSelection to default value
+
+    // Synchronous call.  Returns the scan code of the pressed key.
+    TInt WaitForAnyKey();
+
+    const TInt iFontSize;
+
+    RFs iFs;
+    RWsSession iWs;
+    CWsScreenDevice* iScreenDevice;
+    RWindowGroup* iWindowGroup;
+    CWindowGc* iGc;
+    CFont* iFont;
+    CFbsTypefaceStore* iTypefaceStore;
+    TSize iDisplaySize;
+    RWindow* iSelectionWindow;
+    RWindow* iHelpWindow;
+
+private:
+
+    enum TTestAppPointerEvent
+        {
+        EPointerEvent_None,
+        EPointerEvent_Up,
+        EPointerEvent_Down,
+        EPointerEvent_Left,
+        EPointerEvent_Right,
+        EPointerEvent_Select
+        };
+
+    // inherited from MRemConCoreApiTargetObserver
+    void MrccatoCommand(TRemConCoreApiOperationId aOperationId,
+            TRemConCoreApiButtonAction aButtonAct);
+
+    TInt KeyMapOperation(TInt aIndex, TInt aPage);
+
+    TPtrC KeyMapText(TInt aIndex, TInt aPage);
+
+    void IncrementKeymapIndex(TInt& aIndex, TInt aPage);
+
+    void DecrementKeymapIndex(TInt& aIndex, TInt aPage);
+
+    void CalculateHelpWindowSize();
+
+    void DrawHelpText();
+
+    void DoSelectFileL(TPoint aTopRight, TSize aWindowSize,
+            const TDesC& aHeaderText, const TFileName& aDirectory,
+            TInt aDirectoryLevel, TDes& aSelectedDirectory,
+            TDes& aSelectedFilename);
+
+    void ReadDirectoryEntriesL(const TFileName& aDirectoryName,
+            RPointerArray<TDesC>& aFileNames);
+
+    void ReadFileHistory(const TDesC& aHistoryFilename);
+
+    void AddToFileHistory(const TDesC& aFilename,
+            const TDesC& aHistoryFilename, TInt aMaxHistoryEntries);
+
+    TTestAppPointerEvent CharacterizePointerEvent(
+            TAdvancedPointerEvent& event);
+
+    const TOperationsPage* iKeyMap;
+    TInt iPageCount;
+    TInt iCurrentPage;
+    TInt iSoftkeyIndex;
+    RPointerArray<HBufC> iFileHistory;
+
+    CActiveSchedulerWait iWait;
+
+    TPoint iHelpWindowTopRight;
+    TSize iHelpWindowSize;
+    TInt iHelpWindowColumn1Width;
+    TInt iHelpWindowColumn2Width;
+    bool iHelpActive;
+    bool iHelpSemitransparentBackgroundActive;
+
+    TPoint iPointerDownPosition;
+
+    // For volume key support
+    CRemConCoreApiTarget* iCoreTarget;
+    CRemConInterfaceSelector* iInterfaceSelector;
+    };
+
+#endif // TESTAPPBASE_H_
--- a/mmserv/tms/inc/tmsclientserver.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/inc/tmsclientserver.h	Mon May 03 12:59:52 2010 +0300
@@ -128,6 +128,7 @@
     gint iStatus;
     gboolean iBool;
     gint iInt;
+    gint iInt2;
     gint64 iInt64;
     guint iUint;
     guint32 iUint32;
--- a/mmserv/tms/inc/tmsproxy.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/inc/tmsproxy.h	Mon May 03 12:59:52 2010 +0300
@@ -116,7 +116,7 @@
             gpointer obsrvr);
 
     // From MQueueHandlerObserver
-    virtual void QueueEvent(gint aEventType, gint aError, void* user_data);
+    virtual void QueueEvent(gint aEventType, gint aError, void* event_data);
 
 private:
     void PopulateArrayL(TMSClientServerRequest aRequest,
--- a/mmserv/tms/inc/tmsqueuehandler.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/inc/tmsqueuehandler.h	Mon May 03 12:59:52 2010 +0300
@@ -37,7 +37,8 @@
 class MQueueHandlerObserver
     {
 public:
-    virtual void QueueEvent(gint aEventType, gint aError, void* user_data) = 0;
+    virtual void QueueEvent(gint aEventType, gint aError,
+	        void* event_data) = 0;
     };
 
 /**
--- a/mmserv/tms/tmsapi/src/tmsinbandtone.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsapi/src/tmsinbandtone.cpp	Mon May 03 12:59:52 2010 +0300
@@ -21,7 +21,6 @@
 
 using namespace TMS;
 
-
 EXPORT_C TMSInbandTone::TMSInbandTone(void) :
     iBody(NULL)
     {
@@ -32,7 +31,8 @@
     delete iBody;
     }
 
-EXPORT_C gint TMSInbandTone::AddObserver(TMSInbandToneObserver& obsrvr, gpointer user_data)
+EXPORT_C gint TMSInbandTone::AddObserver(TMSInbandToneObserver& obsrvr,
+        gpointer user_data)
     {
     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
     if (iBody)
--- a/mmserv/tms/tmscallserver/group/tmscallserver.mmp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmscallserver/group/tmscallserver.mmp	Mon May 03 12:59:52 2010 +0300
@@ -35,28 +35,28 @@
 
 SOURCE          tmscallserver.cpp
 SOURCE          tmscallsrvrstart.cpp
-SOURCE          delaytimer.cpp
+SOURCE          tmsdelaytimer.cpp
 SOURCE          tmscallsession.cpp
-SOURCE          calladpt.cpp
-SOURCE          callcsadpt.cpp
-SOURCE          callipadpt.cpp
-SOURCE          ipcallstreambase.cpp
+SOURCE          tmscalladpt.cpp
+SOURCE          tmscallcsadpt.cpp
+SOURCE          tmscallipadpt.cpp
+SOURCE          tmsipcallstreambase.cpp
 #ifdef __USE_GSTREAMER__
-SOURCE          ipcalldownlink.cpp
-SOURCE          ipcalluplink.cpp
+SOURCE          tmsipcalldownlink.cpp
+SOURCE          tmsipcalluplink.cpp
 #else //__USE_GSTREAMER__
-SOURCE          ipcalldownlinkds.cpp
-SOURCE          ipcalluplinkds.cpp
+SOURCE          tmsipcalldownlinkds.cpp
+SOURCE          tmsipcalluplinkds.cpp
 #endif //__USE_GSTREAMER__
-SOURCE          cspdevsound.cpp
-SOURCE          csdownlink.cpp
-SOURCE          csuplink.cpp
-SOURCE          tarsettings.cpp
-SOURCE          cpeaudiodtmftoneplayer.cpp
-SOURCE          cspdtmfprovider.cpp
-SOURCE          cspeteldtmfmonitor.cpp
-SOURCE          cspeteldtmfstopmonitor.cpp
-SOURCE          dtmfnotifier.cpp
+SOURCE          tmscsdevsound.cpp
+SOURCE          tmscsdownlink.cpp
+SOURCE          tmscsuplink.cpp
+SOURCE          tmstarsettings.cpp
+SOURCE          tmsdtmftoneplayer.cpp
+SOURCE          tmsdtmfprovider.cpp
+SOURCE          tmseteldtmfmonitor.cpp
+SOURCE          tmseteldtmfstopmonitor.cpp
+SOURCE          tmsdtmfnotifier.cpp
 
 USERINCLUDE     ../inc
 USERINCLUDE     ../../inc
--- a/mmserv/tms/tmscallserver/inc/calladpt.h	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#ifndef CALLADPT_H
-#define CALLADPT_H
-
-#include <e32base.h>
-#include <tms.h>
-
-namespace TMS {
-
-// TMSCallAdpt class
-class TMSCallAdpt
-    {
-public:
-    static gint CreateCallL(gint callType, TMSCallAdpt*& callAdpt);
-    virtual ~TMSCallAdpt();
-    virtual gint CreateStream(TMSCallType callType,
-            TMSStreamType strmType, gint& outStrmId) = 0;
-    virtual gint InitStreamL(TMSCallType callType,
-            TMSStreamType strmType, gint strmId, TMSFormatType frmtType,
-            const RMessage2& aMessage) = 0;
-    virtual gint StartStream(TMSCallType callType,
-            TMSStreamType strmType, gint strmId) = 0;
-    virtual gint PauseStream(TMSCallType callType,
-            TMSStreamType strmType, gint strmId) = 0;
-    virtual gint StopStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId) = 0;
-    virtual gint DeinitStream(TMSCallType callType,
-            TMSStreamType strmType, gint strmId) = 0;
-    virtual gint DeleteStream(TMSCallType callType,
-            TMSStreamType strmType, gint strmId) = 0;
-    virtual gint DataXferBufferEmptied(TMSCallType callType,
-            TMSStreamType strmType, gint strmId) = 0;
-    virtual gint DataXferBufferFilled(TMSCallType callType,
-            TMSStreamType strmType, gint strmId, guint datasize) = 0;
-    virtual gint GetDataXferBufferHndl(const TMSCallType callType,
-            const TMSStreamType strmType, const gint strmId,
-            const guint32 key, RChunk& chunk) = 0;
-
-    virtual gint GetMaxVolume(guint& volume) = 0;
-    virtual gint SetVolume(const guint volume) = 0;
-    virtual gint GetVolume(guint& volume) = 0;
-    virtual gint GetMaxGain(guint& gain) = 0;
-    virtual gint SetGain(const guint gain) = 0;
-    virtual gint GetGain(guint& gain) = 0;
-    virtual gint GetGlobalMaxVolume(guint& volume) = 0;
-    virtual gint SetGlobalVolume(const guint volume) = 0;
-    virtual gint GetGlobalVolume(guint& volume) = 0;
-    virtual gint GetGlobalMaxGain(guint& gain) = 0;
-    virtual gint SetGlobalGain(const guint gain) = 0;
-    virtual gint GetGlobalGain(guint& gain) = 0;
-
-    virtual gint GetCodecMode(const TMSFormatType fmttype,
-            const TMSStreamType strmtype, gint& mode) = 0;
-    virtual gint SetCodecMode(const TMSFormatType fmttype,
-            const TMSStreamType strmtype, const gint mode) = 0;
-    virtual gint GetSupportedBitRatesCount(guint& count) = 0;
-    virtual gint GetSupportedBitRates(CBufFlat*& brbuffer) = 0;
-    virtual gint GetBitRate(guint& bitrate) = 0;
-    virtual gint SetBitRate(const guint bitrate) = 0;
-    virtual gint GetVAD(const TMSFormatType fmttype, gboolean& vad) = 0;
-    virtual gint SetVAD(const TMSFormatType fmttype, const gboolean vad) = 0;
-    virtual gint GetCNG(const TMSFormatType fmttype, gboolean& cng) = 0;
-    virtual gint SetCNG(const TMSFormatType fmttype, const gboolean cng) = 0;
-    virtual gint GetPlc(const TMSFormatType fmttype, gboolean& plc) = 0;
-    virtual gint SetPlc(const TMSFormatType fmttype, const gboolean plc) = 0;
-    virtual gint SetOutput(TMSAudioOutput output) = 0;
-    virtual gint GetOutput(TMSAudioOutput& output) = 0;
-    virtual gint GetPreviousOutput(TMSAudioOutput& output) = 0;
-    virtual gint GetAvailableOutputsL(gint& count,
-            CBufFlat*& outputsbuffer) = 0;
-    virtual gint StartDTMF(TMSStreamType streamtype, TDes& dtmfstring) = 0;
-    virtual gint StopDTMF(TMSStreamType streamtype) = 0;
-    virtual gint ContinueDTMF(TBool continuesending) = 0;
-
-protected:
-    TMSCallAdpt();
-    virtual gint PostConstruct();
-
-protected:
-    gint iGlobalVol;
-    gint iGlobalGain;
-    };
-
-} //namespace TMS
-
-#endif // CALLADPT_H
-
-// End of file
--- a/mmserv/tms/tmscallserver/inc/callcsadpt.h	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#ifndef CALLCSADPT_H
-#define CALLCSADPT_H
-
-#include <TelephonyAudioRouting.h>
-#include <MTelephonyAudioRoutingObserver.h>
-#include <e32msgqueue.h>
-#include <etelmm.h>
-#include <rmmcustomapi.h>
-#include "tmsclientserver.h"
-#include "dtmftoneplayerobserver.h"
-#include "calladpt.h"
-#include "mcspdevsoundobserver.h"
-#include "mccpdtmfobserver.h"
-
-namespace TMS {
-
-// FORWARD DECLARATIONS
-class TMSCSUplink;
-class TMSCSDownlink;
-class TMSTarSettings;
-class TMSAudioDtmfTonePlayer;
-class TMSDTMFProvider;
-class TMSDtmfNotifier;
-
-/*
- * CallCSAdapt class
- */
-class TMSCallCSAdpt : public TMSCallAdpt,
-                      public TMSCSPDevSoundObserver,
-                      public MTelephonyAudioRoutingObserver,
-                      public TMSDTMFTonePlayerObserver,
-                      public TMSCCPDTMFObserver
-    {
-public:
-    TMSCallCSAdpt();
-    virtual ~TMSCallCSAdpt();
-    virtual gint PostConstruct();
-
-    virtual gint CreateStream(TMSCallType callType, TMSStreamType strmType,
-            gint& outStrmId);
-    virtual gint InitStreamL(TMSCallType callType, TMSStreamType strmType,
-            gint strmId, TMSFormatType frmtType, const RMessage2& aMessage);
-    virtual gint StartStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint PauseStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint StopStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint DeinitStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint DeleteStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint DataXferBufferEmptied(TMSCallType callType,
-            TMSStreamType strmType, gint strmId);
-    virtual gint DataXferBufferFilled(TMSCallType callType,
-            TMSStreamType strmType, gint strmId, guint datasize);
-    virtual gint GetDataXferBufferHndl(const TMSCallType callType,
-            const TMSStreamType strmType, const gint strmId,
-            const guint32 key, RChunk& chunk);
-    virtual gint GetMaxVolume(guint& volume);
-    virtual gint SetVolume(const guint volume);
-    virtual gint GetVolume(guint& volume);
-    virtual gint GetMaxGain(guint& gain);
-    virtual gint SetGain(const guint gain);
-    virtual gint GetGain(guint& gain);
-    virtual gint GetGlobalMaxVolume(guint& volume);
-    virtual gint SetGlobalVolume(const guint volume);
-    virtual gint GetGlobalVolume(guint& volume);
-    virtual gint GetGlobalMaxGain(guint& gain);
-    virtual gint SetGlobalGain(const guint gain);
-    virtual gint GetGlobalGain(guint& gain);
-
-    virtual gint GetCodecMode(const TMSFormatType fmttype,
-            const TMSStreamType strmtype, gint& mode);
-    virtual gint SetCodecMode(const TMSFormatType fmttype,
-            const TMSStreamType strmtype, const gint mode);
-    virtual gint GetSupportedBitRatesCount(guint& count);
-    virtual gint GetSupportedBitRates(CBufFlat*& brbuffer);
-    virtual gint GetBitRate(guint& bitrate);
-    virtual gint SetBitRate(const guint bitrate);
-    virtual gint GetVAD(const TMSFormatType fmttype, gboolean& vad);
-    virtual gint SetVAD(const TMSFormatType fmttype, const gboolean vad);
-    virtual gint GetCNG(const TMSFormatType fmttype, gboolean& cng);
-    virtual gint SetCNG(const TMSFormatType fmttype, const gboolean cng);
-    virtual gint GetPlc(const TMSFormatType fmttype, gboolean& plc);
-    virtual gint SetPlc(const TMSFormatType fmttype, const gboolean plc);
-
-    virtual gint SetOutput(TMSAudioOutput output);
-    virtual gint GetOutput(TMSAudioOutput& output);
-    virtual gint GetPreviousOutput(TMSAudioOutput& output);
-    virtual gint GetAvailableOutputsL(gint& count, CBufFlat*& outputsbuffer);
-    virtual gint StartDTMF(TMSStreamType streamtype, TDes& dtmfstring);
-    virtual gint StopDTMF(TMSStreamType streamtype);
-    virtual gint ContinueDTMF(TBool continuesending);
-
-    void NotifyClient(const gint strmId, const gint aCommand,
-            const gint aStatus = KErrNone, const gint64 aInt64 = TInt64(0));
-
-    //From TMSCSPDevSoundObserver
-    void DownlinkInitCompleted(TInt status);
-    void UplinkInitCompleted(TInt status);
-    void UplinkActivatedSuccessfully();
-    void DownlinkActivatedSuccessfully();
-    void UplinkActivationFailed();
-    void DownlinkActivationFailed();
-
-    //From DTMFTonePlayerObserver
-    void DTMFInitCompleted(TInt error);
-    void DTMFToneFinished(TInt error);
-
-    //From TMSCCPDTMFObserver
-     void HandleDTMFEvent(const TMSCCPDTMFObserver::TCCPDtmfEvent aEvent,
-             const TInt aError, const TChar aTone);
-
-protected:
-    void AvailableOutputsChanged(
-            CTelephonyAudioRouting& aTelephonyAudioRouting);
-    void OutputChanged(CTelephonyAudioRouting& aTelephonyAudioRouting);
-    void SetOutputComplete(CTelephonyAudioRouting& aTelephonyAudioRouting,
-            gint aError);
-    void GetSupportedBitRatesL(CBufFlat*& brbuffer);
-
-private:
-    gint iNextStreamId;
-
-    TMSCSUplink* iCSUplink;
-    TMSCSDownlink* iCSDownlink;
-    CTelephonyAudioRouting* iRouting;
-    TMSTarSettings* iTarSettings;
-    TMSAudioDtmfTonePlayer* iDTMFDnlinkPlayer;
-    TMSDtmfNotifier* iDTMFNotifier;
-    TMSDTMFProvider* iDTMFUplinkPlayer;
-    TMSStreamType iStrmtype;
-
-    RMsgQueue<TmsMsgBuf> iMsgQueueUp;
-    RMsgQueue<TmsMsgBuf> iMsgQueueDn;
-    TmsMsgBuf iMsgBuffer;
-
-    gboolean iUplinkInitialized;
-    gint iUplinkStreamId;
-    gboolean iDnlinkInitialized;
-    gint iDnlinkStreamId;
-    };
-
-} //namespace TMS
-
-#endif // CALLCSADPT_H
-
-// End of file
--- a/mmserv/tms/tmscallserver/inc/callipadpt.h	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,171 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#ifndef __CALLIPADAPT_H
-#define __CALLIPADAPT_H
-
-// INCLUDES
-#include <e32msgqueue.h>
-#include <mmcccodecinformation.h>
-#include "tmsclientserver.h"
-#include "tmsshared.h"
-#include "calladpt.h"
-#include "cpeaudiodtmftoneplayer.h"
-#include "dtmfnotifier.h"
-
-namespace TMS {
-
-// FORWARD DECLARATIONS
-class TMSIPDownlink;
-class TMSIPUplink;
-
-// TMSCallIPAdpt class
-class TMSCallIPAdpt : public TMSCallAdpt,
-                      public TMSDTMFTonePlayerObserver
-    {
-public:
-    // Constractor
-    static TMSCallIPAdpt* NewL();
-
-    virtual ~TMSCallIPAdpt();
-    virtual gint PostConstruct();
-
-    virtual gint CreateStream(TMSCallType callType, TMSStreamType strmType,
-            gint& outStrmId);
-    virtual gint InitStreamL(TMSCallType callType, TMSStreamType strmType,
-            gint strmId, TMSFormatType frmtType, const RMessage2& aMessage);
-    virtual gint StartStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint PauseStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint StopStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint DeinitStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint DeleteStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint DataXferBufferEmptied(TMSCallType callType,
-            TMSStreamType strmType, gint strmId);
-    virtual gint DataXferBufferFilled(TMSCallType callType,
-            TMSStreamType strmType, gint strmId, guint datasize);
-    virtual gint GetDataXferBufferHndl(const TMSCallType callType,
-            const TMSStreamType strmType, const gint strmId,
-            const guint32 key, RChunk& chunk);
-
-    virtual gint GetMaxVolume(guint& volume);
-    virtual gint SetVolume(const guint volume);
-    virtual gint GetVolume(guint& volume);
-    virtual gint GetMaxGain(guint& gain);
-    virtual gint SetGain(const guint gain);
-    virtual gint GetGain(guint& gain);
-    virtual gint GetGlobalMaxVolume(guint& volume);
-    virtual gint SetGlobalVolume(const guint volume);
-    virtual gint GetGlobalVolume(guint& volume);
-    virtual gint GetGlobalMaxGain(guint& gain);
-    virtual gint SetGlobalGain(const guint gain);
-    virtual gint GetGlobalGain(guint& gain);
-
-    virtual gint GetCodecMode(const TMSFormatType fmttype,
-            const TMSStreamType strmtype, gint& mode);
-    virtual gint SetCodecMode(const TMSFormatType fmttype,
-            const TMSStreamType strmtype, const gint mode);
-    virtual gint GetSupportedBitRatesCount(guint& count);
-    virtual gint GetSupportedBitRates(CBufFlat*& brbuffer);
-    virtual gint GetBitRate(guint& bitrate);
-    virtual gint SetBitRate(const guint bitrate);
-    virtual gint GetVAD(const TMSFormatType fmttype, gboolean& vad);
-    virtual gint SetVAD(const TMSFormatType fmttype, const gboolean vad);
-    virtual gint GetCNG(const TMSFormatType fmttype, gboolean& cng);
-    virtual gint SetCNG(const TMSFormatType fmttype, const gboolean cng);
-    virtual gint GetPlc(const TMSFormatType fmttype, gboolean& plc);
-    virtual gint SetPlc(const TMSFormatType fmttype, const gboolean plc);
-
-    virtual gint SetOutput(TMSAudioOutput output);
-    virtual gint GetOutput(TMSAudioOutput& output);
-    virtual gint GetPreviousOutput(TMSAudioOutput& output);
-    virtual gint GetAvailableOutputsL(TInt& count, CBufFlat*& outputsbuffer);
-
-    virtual gint StartDTMF(TMSStreamType streamtype, TDes& dtmfstring);
-    virtual gint StopDTMF(TMSStreamType streamtype);
-    virtual gint ContinueDTMF(TBool continuesending);
-
-    gint SetIlbcCodecMode(const gint mode, const TMSStreamType strmtype);
-    gint GetIlbcCodecMode(gint& mode, const TMSStreamType strmtype);
-    gint SetG711CodecMode(const gint mode, const TMSStreamType strmtype);
-    gint GetG711CodecMode(gint& mode, const TMSStreamType strmtype);
-    gint FrameModeRqrdForEC(gboolean& frmodereq);
-    gint SetFrameMode(const gboolean frmode);
-    gint GetFrameMode(gboolean& frmode);
-    gint ConcealErrorForNextBuffer();
-    gint BadLsfNextBuffer();
-
-    gint OpenDownlinkL(const RMessage2& aMessage);
-    gint OpenUplinkL(const RMessage2& aMessage);
-    void SetFormat(const gint strmId, const TUint32 aFormat);
-
-    void BufferFilledL(TUint dataSize);
-    void BufferEmptiedL();
-    gint GetDataXferChunkHndl(const TMSStreamType strmType,
-            const TUint32 key, RChunk& chunk);
-
-    //From DTMFTonePlayerObserver
-     void DTMFInitCompleted(TInt error);
-     void DTMFToneFinished(TInt error);
-
-private:
-    void ConstructL();
-    TMSCallIPAdpt();
-
-    void NotifyClient(const gint strmId, const TInt aCommand,
-            const TInt aStatus = KErrNone, const TInt64 aInt64 = TInt64(0));
-    //void DetermineG711FrameRateL(); //G711 10/20ms
-    void GetSupportedBitRatesL(CBufFlat*& brbuffer);
-
-private:
-    gint iNextStreamId;
-    gboolean iUplinkInitialized;
-    gint iUplinkStreamId;
-    gboolean iDnlinkInitialized;
-    gint iDnlinkStreamId;
-
-    TMSIPDownlink* iIPDownlink;
-    TMSIPUplink* iIPUplink;
-
-    // Message queues for communication and data transfer back to the client
-    RMsgQueue<TmsMsgBuf> iMsgQueueUp;
-    RMsgQueue<TmsMsgBuf> iMsgQueueDn;
-
-    TmsMsgBuf iMsgBuffer;
-    TMMFPrioritySettings iPriority;
-    TUint32 iUpFourCC;
-    TUint32 iDnFourCC;
-    TInt iMaxVolume;
-    TInt iMaxGain;
-    RArray<TUint> iArrBitrates;
-    RArray<TFourCC> iCodecs;
-    TInt iCodecsCount;
-
-    TMSAudioDtmfTonePlayer* iDTMFDnlinkPlayer;
-    TMSAudioDtmfTonePlayer* iDTMFUplinkPlayer;
-    TMSDtmfNotifier* iDTMFNotifier;
-    };
-
-} //namespace TMS
-
-#endif //__CALLIPADAPT_H
-
-// End of file
--- a/mmserv/tms/tmscallserver/inc/cpeaudiodtmftoneplayer.h	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#ifndef CPEAUDIODTMFTONEPLAYER_H
-#define CPEAUDIODTMFTONEPLAYER_H
-
-// INCLUDES
-#include <glib.h>
-#include <sounddevice.h>
-#include "dtmftoneplayerobserver.h"
-
-// FORWARD DECLARATIONS
-class CMMFDevSound;
-
-// CLASS DECLARATION
-
-/**
- *  plays DTMF tones using media server
- *
- *  @lib audiohandling.lib
- */
-
-namespace TMS {
-
-class TMSAudioDtmfTonePlayer : public MDevSoundObserver
-    {
-public:
-    // Constructors and destructor
-
-    /**
-     * Two-phased constructor.
-     */
-    static TMSAudioDtmfTonePlayer* NewL(TMSDTMFTonePlayerObserver& obsrvr,
-            guint aAudioPreference, guint aAudioPriority);
-
-    /**
-     * Destructor.
-     */
-    virtual ~TMSAudioDtmfTonePlayer();
-
-public:
-
-    /**
-     * Sets volume.
-     * @param aVolume volume value or KDtmfSilent.
-     * @return None.
-     */
-    void SetVolume(gint aVolume);
-
-    /**
-     * Starts playing given dtmf tone infinitely.
-     * @param aTone Tone to be played.
-     * @return None.
-     */
-    //void PlayDtmfTone( TChar aTone );
-    void PlayDtmfTone(TDes& tone);
-
-    /**
-     * Cancels playing.
-     * @param None.
-     * @return None.
-     */
-    void Cancel();
-
-public:
-    //From MDevSoundObserver
-    /**
-     * See MDevSoundObserver
-     */
-    void InitializeComplete(TInt aError);
-
-    /**
-     * See MDevSoundObserver
-     */
-    void ToneFinished(TInt aError);
-
-    /**
-     * See MDevSoundObserver
-     */
-    void BufferToBeFilled(CMMFBuffer* aBuffer);
-
-    /**
-     * See MDevSoundObserver
-     */
-    void PlayError(TInt aError);
-
-    /**
-     * See MDevSoundObserver
-     */
-    void BufferToBeEmptied(CMMFBuffer* aBuffer);
-
-    /**
-     * See MDevSoundObserver
-     */
-    void RecordError(TInt aError);
-
-    /**
-     * See MDevSoundObserver
-     */
-    void ConvertError(TInt aError);
-    /**
-     * See MDevSoundObserver
-     */
-    void DeviceMessage(TUid aMessageType, const TDesC8& aMsg);
-
-protected:
-
-    /**
-     * C++ default constructor.
-     */
-    TMSAudioDtmfTonePlayer(TMSDTMFTonePlayerObserver& obsrvr,
-            guint aAudioPreference, guint aAudioPriority);
-
-    void ConstructL();
-
-    /**
-     * Normalize tone.
-     * @param aTone dtmf tone.
-     * @return None.
-     */
-    void Normalize(TChar& aTone);
-
-private:
-    //new functions
-
-    /**
-     * Converts the given value to the one that matches tha range used by
-     * CMMFDevSound. The CMMFDevSound uses valuess that can from 0 to the
-     * value returned by a call to CMMFDevSound::MaxVolume().
-     */
-    gint ConvertVolume(gint aVolume);
-
-protected:
-    // Data
-
-    // Current volume setting.
-    gint iVolume;
-
-    // DTMF player instance
-    CMMFDevSound* iDTMFPlayer;
-
-    TMSDTMFTonePlayerObserver& iObserver;
-    guint iPref;
-    guint iPrior;
-
-    };
-
-} //namespace TMS
-
-#endif      // CPEAUDIODTMFTONEPLAYER_H
-
-// End of File
--- a/mmserv/tms/tmscallserver/inc/csdownlink.h	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#ifndef CSDownlink_H
-#define CSDownlink_H
-
-#include <glib.h>
-#include "cspdevsound.h"
-
-namespace TMS {
-
-//
-class TMSCSPDevSoundObserver;
-
-/**
- *  Provides Downlink functionality.
- *
- */
-NONSHARABLE_CLASS(TMSCSDownlink) : public TMSCSPDevSound
-    {
-public:
-
-    static TMSCSDownlink* NewL(TMSCSPDevSoundObserver& aObserver);
-
-    virtual ~TMSCSDownlink();
-
-    /**
-     * Sets volume.
-     * @param aVolume Volume.
-     */
-    void SetVolume(gint aVolume);
-
-    /**
-     * Gets volume.
-     * @return Current volume.
-     */
-    gint Volume();
-
-    /**
-     * Gets max volume.
-     * @return Current volume.
-     */
-    gint MaxVolume();
-
-    // from base class MDevSoundObserver
-
-    /**
-     * From MDevSoundObserver.
-     * Indication from devsound that stream (Downlink) has been activated
-     * successfully.
-     */
-    void BufferToBeFilled(CMMFBuffer* /*aBuffer*/);
-
-    /**
-     * From MDevSoundObserver.
-     * Indication from devsound that activation of stream( Downlink)
-     * failed.
-     */
-    void PlayError(TInt aErrorCode);
-
-private:
-
-    /**
-     * From CSPDevSound.
-     * Tries to activate the mic stream.
-     */
-    void DoActivateL();
-
-protected:
-
-    TMSCSDownlink(TMSCSPDevSoundObserver& aObserver);
-
-    void ConstructL();
-    };
-
-} //namespace TMS
-
-#endif // CSDownlink_H
--- a/mmserv/tms/tmscallserver/inc/cspdevsound.h	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,164 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#ifndef CSPDEVSOUND_H
-#define CSPDEVSOUND_H
-
-#include <sounddevice.h>
-
-namespace TMS {
-
-class TMSCSPDevSoundObserver;
-
-/**
- *  Wrapper for CMMFDevSound
- *
- */
-NONSHARABLE_CLASS(TMSCSPDevSound) : public CBase,
-                                    public MDevSoundObserver
-    {
-public:
-
-    /**
-     * Destructor.
-     */
-    virtual ~TMSCSPDevSound();
-
-    /**
-     * Activates the dev sound stream. TMSCSPDevSoundObserver methods are called
-     * when activation goes ok or fails. If the stream is already active or
-     * activating then nothing is done.
-     */
-    virtual void Activate();
-
-    /**
-     * Deactivates the devsound stream. If stream is not active or
-     * activation is not ongoing then nothing is done.
-     */
-    virtual void Deactivate();
-
-    /**
-     * Indicates that activation is ongoing,
-     * but the result of the activation is still unknown.
-     * @return ETrue - activation ongoing, EFalse - activation not ongoing.
-     */
-    TBool IsActivationOngoing() const;
-
-    /**
-     * Determines wether the devsound stream is active or not.
-     * @return ETrue - Stream is active, EFalse - Stream not active.
-     */
-    TBool IsActive() const;
-
-    CMMFDevSound& DevSound();
-
-    // from base class MDevSoundObserver
-
-    /**
-     * From MDevSoundObserver
-     * Empty implementation
-     */
-    void InitializeComplete(TInt aError);
-
-    /**
-     * From MDevSoundObserver
-     * Empty implementation
-     */
-    void BufferToBeFilled(CMMFBuffer* aBuffer);
-
-    /**
-     * From MDevSoundObserver
-     * Empty implementation
-     */
-    void PlayError(TInt aError);
-
-    /**
-     * From MDevSoundObserver
-     * Empty implementation
-     */
-    void ToneFinished(TInt aError);
-
-    /**
-     * From MDevSoundObserver
-     * Empty implementation
-     */
-    void BufferToBeEmptied(CMMFBuffer* aBuffer);
-
-    /**
-     * From MDevSoundObserver
-     * Empty implementation
-     */
-    void RecordError(TInt aError);
-
-    /**
-     * From MDevSoundObserver
-     * Empty implementation
-     */
-    void ConvertError(TInt aError);
-
-    /**
-     * From MDevSoundObserver
-     * Empty implementation
-     */
-    void DeviceMessage(TUid aMessageType, const TDesC8& aMsg);
-
-protected:
-
-    TMSCSPDevSound(TMSCSPDevSoundObserver& aObserver);
-
-    void ConstructL(TMMFState aMode, gint aAudioPreference,
-            gint aAudioPriority);
-
-private:
-
-    /**
-     * Derived class has to activate the stream here.
-     */
-    virtual void DoActivateL() = 0;
-
-protected:
-
-    TUint iStreamType;
-
-    /**
-     * Indication if device is activated. Derived class has to update this.
-     */
-    TBool iActive;
-
-    /**
-     * Indication if activation is ongoing.
-     * Derived class has to update this.
-     */
-    TBool iActivationOngoing;
-
-    /**
-     * Devsound instance
-     * Own.
-     */
-    CMMFDevSound* iDevSound;
-
-    /**
-     * Observer for successfull activation.
-     * Not own.
-     */
-    TMSCSPDevSoundObserver& iObserver;
-
-    };
-
-} //namespace TMS
-
-#endif // CSPDEVSOUND_H
--- a/mmserv/tms/tmscallserver/inc/cspdtmfprovider.h	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,182 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#ifndef CSPDTMFPROVIDER_H
-#define CSPDTMFPROVIDER_H
-
-#include <e32base.h>
-#include <mccpdtmfprovider.h>
-#include <mccpdtmfobserver.h>
-#include <etelmm.h>
-#include <rmmcustomapi.h>
-
-namespace TMS {
-
-// FORWARD DECLARATIONS
-class TMSEtelDtmfMonitor;
-class TMSEtelDtmfStopMonitor;
-
-/**
- * TMSDTMFProvider class
- * Makes asynchronic request to ETel interface according to given request type.
- * Provides canceling via CActive::Cancel().
- */
-class TMSDTMFProvider : public CActive
-    {
-public:
-
-    /**
-     * Two phased constructing of the DTMF provider instance.
-     * @param aPhone mobile phone handle
-     * @param aMmCustom custom API handle for special DTMF event
-     *        monitoring.
-     * @return the DTMF provider instance
-     */
-    static TMSDTMFProvider* NewL();
-
-    /**
-     * C++ default destructor
-     */
-    virtual ~TMSDTMFProvider();
-
-    /**
-     * HandleDTMFEvents.
-     * @param aEvent Event type
-     * @param aError Error code
-     * @param aTone Character
-     */
-    void NotifyDTMFEvent(const TMSCCPDTMFObserver::TCCPDtmfEvent aEvent,
-            const TInt aError, const TChar aTone);
-
-    // from base class MCCPDTMFProvider
-    /**
-     * Cancels asynchronous DTMF string sending.
-     * @return KErrNone if succesfull, otherwise another system wide error code
-     */
-    TInt CancelDtmfStringSending();
-
-    /**
-     * Starts the transmission of a single DTMF tone across a
-     * connected and active call.
-     * @param aTone Tone to be played.
-     * @return KErrNone if succesfull, otherwise another system wide error code
-     */
-    TInt StartDtmfTone(const TChar aTone);
-
-    /**
-     * Stops playing current DTMF tone.
-     * @return KErrNone if succesfull, otherwise another system wide error code
-     */
-    TInt StopDtmfTone();
-
-    /**
-     * Plays DTMF string.
-     * @param aString String to be played.
-     * @return KErrNone if succesfull, otherwise another system wide error code
-     * KErrArgument if the specified string contains illegal DTMF characters
-     */
-    TInt SendDtmfToneString(const TDesC& aString);
-
-    /**
-     * Continue or cancel sending DTMF string which was stopped with 'w'
-     * character in string.
-     * @param aContinue ETrue if sending of the DTMF string should continue,
-     * EFalse if the rest of the DTMF string is to be discarded.
-     * @return KErrNone if succesfull, otherwise another system wide error code
-     */
-    TInt ContinueDtmfStringSending(const TBool aContinue);
-
-    /**
-     * Add an observer for DTMF related events.
-     * Plug-in dependent feature if duplicates or more than one observers
-     * are allowed or not. Currently CCE will set only one observer.
-     * @param aObserver Observer
-     * @leave system error if observer adding fails
-     */
-    void AddObserverL(const TMSCCPDTMFObserver& aObserver);
-
-    /**
-     * Remove an observer.
-     * @param aObserver Observer
-     * @return KErrNone if removed succesfully. KErrNotFound if observer was
-     * not found. Any other system error depending on the error.
-     */
-    TInt RemoveObserver(const TMSCCPDTMFObserver& aObserver);
-
-    // from base class CActive
-protected:
-    /**
-     * From CActive
-     * RunL
-     */
-    void RunL();
-
-    /**
-     * From CActive
-     * Cancels the monitor
-     */
-    void DoCancel();
-
-private:
-    /**
-     * Constructs the requester.
-     *
-     * @param aPhone handle to ETel phone
-     * @param aMmCustom custom API handle
-     */
-    TMSDTMFProvider();
-
-    /**
-     * Constructing the provider in the second phase.
-     */
-    void ConstructL();
-
-private:
-    /**
-     * DTMF event observer.
-     */
-    RPointerArray<TMSCCPDTMFObserver> iObservers;
-
-    /**
-     * ETel phone handle for DTMF functionality.
-     */
-    RMobilePhone iPhone;
-
-    /**
-     * Monitor for DTMF events and changes.
-     * Own.
-     */
-    TMSEtelDtmfMonitor* iMonitor;
-
-    /**
-     * Monitor for DTMF stopping.
-     * Own.
-     */
-    TMSEtelDtmfStopMonitor* iStopMonitor;
-
-    /**
-     * Custom API reference.
-     */
-    RMmCustomAPI iMmCustom;
-
-    RTelServer iServer;
-    TBuf<25> iTsyname;
-    };
-
-} //namespace TMS
-
-#endif // CSPDTMFPROVIDER
--- a/mmserv/tms/tmscallserver/inc/cspeteldtmfmonitor.h	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#ifndef CSPETELDTMFMONITOR_H
-#define CSPETELDTMFMONITOR_H
-
-#include <e32base.h>
-#include <etelmm.h>
-#include <rmmcustomapi.h>
-
-namespace TMS {
-
-// FORWARD DECLARATIONS
-class TMSCSPCall;
-class TMSDTMFProvider;
-
-/**
- * TMSEtelDtmfMonitor class
- *
- * Monitors ETel for DTMF events.
- *
- * This monitor is applied only for listening incoming calls, i.e.
- * line capabilites are not monitored.
- *
- * @lib csplugin.dll
- *
- */
-class TMSEtelDtmfMonitor : public CActive
-    {
-public:
-    /**
-     * Two-phased constructing for the monitor.
-     *
-     * @param aObserver the observer for getting notification
-     * @param aMmCustom Custom API handle
-     */
-    static TMSEtelDtmfMonitor* NewL(TMSDTMFProvider& aObserver,
-            RMmCustomAPI& aMmCustom);
-
-    /**
-     * C++ default destructor
-     */
-    virtual ~TMSEtelDtmfMonitor();
-
-    /**
-     * Start monitoring call events
-     */
-    void StartMonitoring();
-
-protected: // From CActive
-    /**
-     * From CActive
-     * RunL
-     */
-    void RunL();
-
-    /**
-     * From CActive
-     * Cancels the monitor
-     */
-    void DoCancel();
-
-private:
-    /**
-     * C++ default constructor
-     * @param aObserver the observer for status change (incoming call)
-     * @param aMmCustom Custom API handle
-     */
-    TMSEtelDtmfMonitor(TMSDTMFProvider& aObserver, RMmCustomAPI& aMmCustom);
-
-private:
-    /**
-     * Forwards events.
-     */
-    TMSDTMFProvider& iObserver;
-
-    /**
-     * Event data. Updated when event occurs.
-     */
-    RMmCustomAPI::TDtmfInfo iEventData;
-
-    /**
-     * Custom API reference.
-     */
-    RMmCustomAPI& iMmCustom;
-
-    };
-} //namespace TMS
-
-#endif // CSPETELDTMFMONITOR_H
-
--- a/mmserv/tms/tmscallserver/inc/cspeteldtmfstopmonitor.h	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#ifndef CSPETELDTMFSTOPMONITOR_H
-#define CSPETELDTMFSTOPMONITOR_H
-
-#include <e32base.h>
-#include <etelmm.h>
-
-namespace TMS {
-
-// FORWARD DECLARATIONS
-class TMSDTMFProvider;
-
-/**
- * TMSEtelDtmfStopMonitor class
- *
- * Monitors single ETel RMobilePhone for DTMF events.
- *
- * This monitor is applied only for listening incoming calls, i.e.
- * line capabilites are not monitored.
- *
- * @lib csplugin.dll
- *
- */
-class TMSEtelDtmfStopMonitor : public CActive
-    {
-public:
-    /**
-     * Two-phased constructing for the monitor.
-     *
-     * @param aObserver the observer for getting notification
-     * @param aPhone the line to monitor
-     */
-    static TMSEtelDtmfStopMonitor* NewL(TMSDTMFProvider& aObserver,
-            RMobilePhone& aPhone);
-
-    /**
-     * C++ default destructor
-     */
-    virtual ~TMSEtelDtmfStopMonitor();
-
-    /**
-     * Start monitoring call events
-     */
-    void StartMonitoring();
-
-protected: // From CActive
-    /**
-     * From CActive
-     * RunL
-     */
-    void RunL();
-
-    /**
-     * From CActive
-     * Cancels the monitor
-     */
-    void DoCancel();
-
-private:
-    /**
-     * C++ default constructor
-     * @param aObserver the observer for status change (incoming call)
-     * @param aPhone the line associated with the call
-     */
-    TMSEtelDtmfStopMonitor(TMSDTMFProvider& aObserver, RMobilePhone& aPhone);
-
-private:
-    /**
-     * Forwards events.
-     */
-    TMSDTMFProvider& iObserver;
-
-    /**
-     * Phone that is being observed for incoming call.
-     */
-    RMobilePhone& iPhone;
-
-    /**
-     * Event received.
-     */
-    RMobilePhone::TMobilePhoneDTMFEvent iEventData;
-
-    };
-
-} //namespace TMS
-
-#endif // CSPETELDTMFSTOPMONITOR_H
-
--- a/mmserv/tms/tmscallserver/inc/csuplink.h	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#ifndef CS_UPLINK_H
-#define CS_UPLINK_H
-
-#include <glib.h>
-#include "cspdevsound.h"
-
-namespace TMS {
-
-/**
- *  Provides uplink functionality.
- *
- */
-NONSHARABLE_CLASS(TMSCSUplink) : public TMSCSPDevSound
-    {
-public:
-
-    static TMSCSUplink* NewL(TMSCSPDevSoundObserver& aObserver);
-
-    virtual ~TMSCSUplink();
-
-    /**
-     * Determines mic mute state.
-     *
-     * @return ETrue - mic is muted, EFalse - mic is not muted.
-     */
-    TBool IsMuted();
-
-    /**
-     * Set mic muted.
-     */
-    void SetMuted();
-
-    /**
-     * Set mic unmuted.
-     */
-    void SetUnmuted();
-
-    /**
-     * Set mic gain.
-     */
-    void SetGain(gint aGain);
-
-    /**
-     * Get mic muted.
-     */
-    gint Gain();
-
-    /**
-     * Get max gain.
-     */
-    gint MaxGain();
-
-    // from base class MDevSoundObserver
-
-    /**
-     * From MDevSoundObserver
-     * Notification from Devsound that stream (mic) is
-     * activated successfully.
-     */
-    void BufferToBeEmptied(CMMFBuffer* aBuffer);
-
-    /**
-     * From MDevSoundObserver
-     * Notification from devsound that downstream(mic) activation
-     * feiled.
-     */
-    void RecordError(TInt aError);
-
-private:
-
-    // from base class MCSPDevSound
-
-    /**
-     * From MCSPDevSound.
-     * Tries to activate the mic stream.
-     */
-    void DoActivateL();
-
-protected:
-
-    TMSCSUplink(TMSCSPDevSoundObserver& aObserver);
-    void ConstructL();
-    };
-
-} //namespace TMS
-
-#endif // CSUplink_H
--- a/mmserv/tms/tmscallserver/inc/delaytimer.h	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#ifndef DELAYTIMER_H
-#define DELAYTIMER_H
-
-#include <e32base.h>
-
-namespace TMS {
-
-/**
- * A Timer utility class used by the Server for shutdown purpose.
- */
-class TMSCallDelayTimer : public CActive
-    {
-public:
-    // Construct/destruct
-    static TMSCallDelayTimer* NewL();
-    ~TMSCallDelayTimer();
-
-public:
-    // Request a timeout after aDelay
-    void SetDelay(TTimeIntervalMicroSeconds32 aDelay);
-
-protected:
-    // From CActive
-    void RunL();
-    void DoCancel();
-
-private:
-    // Construct/destruct
-    TMSCallDelayTimer();
-    void ConstructL();
-
-private:
-    RTimer iShutDownTimer; // Has
-    };
-
-} //namespace TMS
-
-#endif //DELAYTIMER_H
-
-// End of File
--- a/mmserv/tms/tmscallserver/inc/dtmfnotifier.h	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#ifndef DTMFNOTIFIER_H
-#define DTMFNOTIFIER_H
-
-//  INCLUDES
-#include <e32property.h>
-#include <sounddevice.h>
-#include "tmsclientserver.h"
-
-namespace TMS {
-
-// CLASS DECLARATION
-class TMSDtmfNotifier
-    {
-public:
-    // Constructors and destructor
-
-    /**
-     * Two-phased constructor.
-     */
-    static TMSDtmfNotifier* NewL();
-
-    /**
-     * Destructor.
-     */
-    virtual ~TMSDtmfNotifier();
-
-public:
-    // New functions
-
-    void SetDtmf(TmsMsgBufPckg dtmfpckg, TBool aPublish = ETrue);
-
-private:
-
-    /**
-     * C++ default constructor.
-     */
-    TMSDtmfNotifier();
-
-    /**
-     * By default Symbian 2nd phase constructor is private.
-     */
-    void ConstructL();
-
-private:
-    TInt iVolume; //Volume
-    };
-
-} //namespace TMS
-
-#endif // DTMFNOTIFIER_H
-
-// End of File
--- a/mmserv/tms/tmscallserver/inc/dtmftoneplayerobserver.h	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#ifndef DTMFTONEPLAYEROBSERVER_H
-#define DTMFTONEPLAYEROBSERVER_H
-
-namespace TMS {
-
-/**
- *  Observer interface for knowing when dtmf tone player has been initialized.
- */
-class TMSDTMFTonePlayerObserver
-    {
-public:
-    virtual void DTMFInitCompleted(TInt error) = 0;
-    virtual void DTMFToneFinished(TInt error) = 0;
-    };
-} //namespace TMS
-
-#endif // DTMFTONEPLAYEROBSERVER_H
-
--- a/mmserv/tms/tmscallserver/inc/ipcallstream.h	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,312 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#ifndef __IPCALLSTREAM_H
-#define __IPCALLSTREAM_H
-
-//#define __PLAY_WAV_FROM_FILE__
-
-#include <e32msgqueue.h>
-#include <mmfbase.h>
-#include <tms.h>
-#include "tmsgstreamer.h"
-#include "tmsshared.h"
-#include "tmsclientserver.h"
-
-#ifdef __USE_GSTREAMER__
-#include <gst.h>
-#include "gstg711encoderinterface.h"
-#include "gstspeechencoderconfig.h"
-#include "gsterrorconcealmentinterface.h"
-#include "gstg711decoderinterface.h"
-#include "gstilbcdecoderinterface.h"
-#include "gstilbcencoderinterface.h"
-#include "gstg729encoderinterface.h"
-#include "gstg729decoderinterface.h"
-#else //__USE_GSTREAMER__
-#include <sounddevice.h>
-#include <voipdownlinkstream.h>
-#include <voipuplinkstream.h>
-
-// FORWARD DECLARATIONS
-class CAudioOutput;
-class CErrorConcealmentIntfc;
-class CSpeechEncoderConfig;
-class CG711DecoderIntfc;
-class CG729DecoderIntfc;
-class CIlbcDecoderIntfc;
-class CG711EncoderIntfc;
-class CG729EncoderIntfc;
-class CIlbcEncoderIntfc;
-#endif //__USE_GSTREAMER__
-
-namespace TMS {
-
-// -----------------------------------------------------------------------------
-//  Class Name:  TMSIPCallStreamBase
-//
-//  Base abstract class for creating VoIP uplink and downlink streams.
-// -----------------------------------------------------------------------------
-class TMSIPCallStreamBase : public CBase
-#ifndef __USE_GSTREAMER__
-                          , public MDevSoundObserver
-#endif //__USE_GSTREAMER__
-    {
-public:
-    enum TStreamState
-        {
-        ENotReady, // not initialized
-        EReady, // initialized and ready for streaming
-        EStreaming
-        // active streaming
-        };
-
-public:
-    virtual ~TMSIPCallStreamBase();
-
-    virtual void Start() = 0;
-    virtual void Stop() = 0;
-    virtual gint SetCodecCi() = 0;
-
-#ifndef __USE_GSTREAMER__
-    void InitDevSoundL(const TMMFState aDevSoundState,
-            const TMMFPrioritySettings priority);
-#endif //__USE_GSTREAMER__
-    void SetMsgQueue(const RMsgQueue<TmsMsgBuf> aMsgQueue);
-    gint DoChunk(const gint aDataLen, TmsMsgBuf& aMsgBuffer);
-    gint ConfigureMedia(const guint32 aCodecID);
-
-protected:
-#ifndef __USE_GSTREAMER__
-    // From MDevSoundObserver
-    virtual void InitializeComplete(TInt aError) = 0;
-    virtual void BufferToBeEmptied(CMMFBuffer* /*aBuffer*/) {}
-    virtual void RecordError(TInt /*aError*/) {}
-    virtual void BufferToBeFilled(CMMFBuffer* /*aBuffer*/) {}
-    virtual void PlayError(TInt /*aError*/) {}
-    virtual void ToneFinished(TInt /*aError*/) {}
-    virtual void ConvertError(TInt /*aError*/) {}
-    virtual void DeviceMessage(TUid /*aMessageType*/, const TDesC8& /*aMsg*/) {}
-    virtual void SendEventToClient(const TMMFEvent& /*aEvent*/) {}
-#endif //__USE_GSTREAMER__
-
-protected:
-
-    CActiveScheduler* iActiveScheduler;
-    TStreamState iStatus;
-
-#ifndef __USE_GSTREAMER__
-    CMMFDevSound* iDevSound;
-    CMMFDataBuffer* iDevSoundBufPtr;
-#endif //__USE_GSTREAMER__
-
-    RMsgQueue<TmsMsgBuf> iMsgQueue; // ITC back to client
-    TmsMsgBuf iMsgBuffer;
-    RChunk iChunk;
-    gint iMaxBufLen;
-    guint32 iCodecID;
-    TMMFPrioritySettings iPriority;
-    const gchar* iMediaType;
-
-    gint iG711DecodeMode;
-    gint iILBCDecodeMode;
-    gint iG711EncodeMode;
-    gint iILBCEncodeMode;
-    gint iBufLen;
-    TBool iWriteDataXferHndlToClient;
-    TUint32 iKey;
-    };
-
-// -----------------------------------------------------------------------------
-//  Class Name:  TMSIPDownlink
-//
-//  Class handling VoIP downlink stream object.
-// -----------------------------------------------------------------------------
-class TMSIPDownlink : public TMSIPCallStreamBase
-    {
-public:
-    virtual ~TMSIPDownlink();
-
-#ifdef __USE_GSTREAMER__
-    static void cb_raw_playback_handoff(GstElement* appsrc, guint size);
-    static gboolean bus_call(GstBus* bus, GstMessage* msg, gpointer data);
-#endif //__USE_GSTREAMER__
-    static TMSIPDownlink* NewL(const guint32 codecID,
-            const TMMFPrioritySettings priority);
-    TMSIPDownlink();
-    void ConstructL(const guint32 codecID,
-            const TMMFPrioritySettings priority);
-
-    gint SetCodecCi();
-    void Start();
-    void Stop();
-    void BufferFilled(const guint buflen);
-    gint SetVolume(const guint volume);
-    gint GetVolume(guint& volume);
-    gint GetMaxVolume(guint& volume);
-    gint GetDataXferChunkHndl(const TUint32 key, RChunk& chunk);
-
-    // For CIs
-    gint SetIlbcCodecMode(const gint mode);
-    gint GetIlbcCodecMode(gint& mode);
-    gint SetG711CodecMode(const gint mode);
-    gint GetG711CodecMode(gint& mode);
-    gint FrameModeRqrdForEC(gboolean& frmodereq);
-    gint SetFrameMode(gboolean frmode);
-    gint GetFrameMode(gboolean& frmode);
-    gint ConcealErrorForNextBuffer();
-    gint SetCng(const TMSFormatType fmttype, const gboolean cng);
-    gint GetCng(const TMSFormatType fmttype, gboolean& cng);
-    gint SetPlc(const TMSFormatType fmttype, const gboolean plc);
-    gint GetPlc(const TMSFormatType fmttype, gboolean& plc);
-    gint BadLsfNextBuffer();
-
-    void SetAudioDeviceL(TMSAudioOutput output);
-    void GetAudioDeviceL(TMSAudioOutput& output);
-
-private:
-    void SetCodecCiL();
-
-#ifdef __USE_GSTREAMER__
-    void BufferToBeFilled();
-    gint gst_play_raw();
-    gint gst_initialize_play();
-#else //__USE_GSTREAMER__
-    // From MDevSoundObserver
-    virtual void BufferToBeFilled(CMMFBuffer* aBuffer);
-    virtual void InitializeComplete(TInt aError);
-    virtual void PlayError(TInt aError);
-#endif //__USE_GSTREAMER__
-
-private:
-
-    gboolean iFrameMode;
-    gboolean iPlc;
-    gint iMaxVolume;
-
-#ifndef __USE_GSTREAMER__
-    CAudioOutput* iAudioOutput;
-    CErrorConcealmentIntfc* iErrConcealmentIntfc;
-    CG711DecoderIntfc* iG711DecoderIntfc;
-    CG729DecoderIntfc* iG729DecoderIntfc;
-    CIlbcDecoderIntfc* iIlbcDecoderIntfc;
-#else //__USE_GSTREAMER__
-    GstErrorConcealmentIntfc* iErrConcealmentIntfc;
-    GstG711DecoderIntfc* iG711DecoderIntfc;
-    GstG729DecoderIntfc* iG729DecoderIntfc;
-    GstIlbcDecoderIntfc* iIlbcDecoderIntfc;
-    GstElement* iPipelinePlay;
-    GstElement* iAppSrc;
-    GstElement* iSink;
-    GstBus* iBusPlay;
-#endif //__USE_GSTREAMER__
-#ifdef _DEBUG
-    gint iSamplesPlayedCount;
-#endif
-
-#ifdef __PLAY_WAV_FROM_FILE__
-    RFile iFile;
-    gint fsize;
-    gint iReadSize;
-    gint iReadBytes;
-    RFs iFs;
-    HBufC8* fbuf;
-#endif
-    };
-
-// -----------------------------------------------------------------------------
-//  Class Name:  TMSIPUplink
-//
-//  Class handling VoIP uplink stream.
-// -----------------------------------------------------------------------------
-class TMSIPUplink : public TMSIPCallStreamBase
-    {
-public:
-    virtual ~TMSIPUplink();
-
-#ifdef __USE_GSTREAMER__
-    static void cb_record_raw_handoff(GstElement *sink);
-    static gboolean bus_call(GstBus* bus, GstMessage* msg, gpointer data);
-#endif //__USE_GSTREAMER__
-    static TMSIPUplink* NewL(const guint32 codecID,
-            const TMMFPrioritySettings priority);
-    TMSIPUplink();
-    void ConstructL(const guint32 codecID,
-            const TMMFPrioritySettings priority);
-
-    gint SetCodecCi();
-    void Start();
-    void Stop();
-    void BufferEmptied();
-    gint SetGain(const guint gain);
-    gint GetGain(guint& gain);
-    gint GetMaxGain(guint& gain);
-    gint GetDataXferChunkHndl(const TUint32 key, RChunk& chunk);
-
-    // For CIs
-    gint SetIlbcCodecMode(const gint mode);
-    gint GetIlbcCodecMode(gint& mode);
-    gint SetG711CodecMode(const gint mode);
-    gint GetG711CodecMode(gint& mode);
-    gint GetSupportedBitrates(RArray<TUint>& bitrates);
-    gint SetBitrate(guint bitrate);
-    gint GetBitrate(guint& bitrate);
-    gint SetVad(const TMSFormatType fmttype, const gboolean vad);
-    gint GetVad(const TMSFormatType fmttype, gboolean& vad);
-
-private:
-    void SetCodecCiL();
-
-#ifdef __USE_GSTREAMER__
-    void BufferToBeEmptied();
-    gint gst_record_raw();
-    gint gst_initialize_record();
-#else //__USE_GSTREAMER__
-    // From MDevSoundObserver
-    virtual void BufferToBeEmptied(CMMFBuffer* aBuffer);
-    virtual void InitializeComplete(TInt aError);
-    virtual void RecordError(TInt /*aError*/);
-#endif //__USE_GSTREAMER__
-
-private:
-    gint iMaxGain;
-
-#ifndef __USE_GSTREAMER__
-    CSpeechEncoderConfig* iSpeechEncoderConfig;
-    CG711EncoderIntfc* iG711EncoderIntfc;
-    CG729EncoderIntfc* iG729EncoderIntfc;
-    CIlbcEncoderIntfc* iIlbcEncoderIntfc;
-#else //__USE_GSTREAMER__
-    GstSpeechEncoderConfigIntfc* iSpeechEncoderConfig;
-    GstG711EncoderIntfc* iG711EncoderIntfc;
-    GstG729EncoderIntfc* iG729EncoderIntfc;
-    GstIlbcEncoderIntfc* iIlbcEncoderIntfc;
-    GstElement* iPipelineRec;
-    GstElement* iSource;
-    GstElement* iAppSink;
-    GstBus* iBusRec;
-#endif //__USE_GSTREAMER__
-#ifdef _DEBUG
-    gint iSamplesRecCount;
-#endif
-    };
-
-} //namespace TMS
-
-#endif  //__IPCALLSTREAM_H
-
-// End of file
--- a/mmserv/tms/tmscallserver/inc/mccpdtmfobserver.h	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#ifndef MCCPDTMFOBSERVER_H
-#define MCCPDTMFOBSERVER_H
-
-#include <e32base.h>
-
-namespace TMS {
-
-/**
- * CCP DTMF related events observer class.
- * This class is used for notifying DTMF specific events.
- */
-class TMSCCPDTMFObserver
-    {
-public:
-
-    /** DTMF Events */
-    enum TCCPDtmfEvent
-        {
-        /** Unknown */
-        ECCPDtmfUnknown = 0,
-        /** DTMF sending started manually */
-        ECCPDtmfManualStart = 5,
-        /** DTMF sending stopped manually */
-        ECCPDtmfManualStop = 6,
-        /** DTMF sending aborted manually */
-        ECCPDtmfManualAbort = 7,
-        /** Automatic DTMF sending initialized */
-        ECCPDtmfSequenceStart = 9,
-        /** Automatic DTMF sending stopped */
-        ECCPDtmfSequenceStop = 10,
-        /** Automatic DTMF sending aborted */
-        ECCPDtmfSequenceAbort = 11,
-        /** There was stop mark in DTMF string */
-        ECCPDtmfStopInDtmfString,
-        /** DTMF sending completed succesfully */
-        ECCPDtmfStringSendingCompleted
-        };
-
-    //protected:
-    /**
-     * Protects the observer being deleted through the observer interface.
-     */
-    //virtual inline ~TMSCCPDTMFObserver() {};
-
-public:
-
-    /**
-     * HandleDTMFEvents.
-     * @param aEvent Event type
-     * @param aError Error code
-     * @param aTone Character
-     * @return none
-     */
-    virtual void HandleDTMFEvent(const TMSCCPDTMFObserver::TCCPDtmfEvent aEvent,
-            const TInt aError, const TChar aTone) /*const*/ = 0;
-    };
-
-} //namespace TMS
-
-#endif // MCCPDTMFOBSERVER_H
-
-// End of File
--- a/mmserv/tms/tmscallserver/inc/mcspdevsoundobserver.h	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#ifndef MCSPDEVSOUNDOBSERVER_H
-#define MCSPDEVSOUNDOBSERVER_H
-
-namespace TMS {
-
-/**
- *  Observer interface for knowing when audio streams have been
- *  successfully ramped up.
- *
- */
-class TMSCSPDevSoundObserver
-    {
-public:
-    virtual void DownlinkInitCompleted(TInt x) = 0;
-    virtual void UplinkInitCompleted(TInt x) = 0;
-
-    /**
-     * Notification that Mic has been activated successfully
-     *
-     */
-    virtual void UplinkActivatedSuccessfully() = 0;
-
-    /**
-     * Notification that speaker has been activated successfully
-     *
-     */
-    virtual void DownlinkActivatedSuccessfully() = 0;
-
-    /**
-     * Notification that Mic initialisation failed.
-     *
-     */
-    virtual void UplinkActivationFailed() = 0;
-
-    /**
-     * Notification that Speaker activation failed.
-     *
-     */
-    virtual void DownlinkActivationFailed() = 0;
-    };
-
-} //namespace TMS
-
-#endif // MCSPDEVSOUNDOBSERVER_H
--- a/mmserv/tms/tmscallserver/inc/tarsettings.h	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#ifndef TARSETTINGS_H
-#define TARSETTINGS_H
-
-//  INCLUDES
-#include <e32base.h>
-#include <e32property.h>
-#include <sounddevice.h>
-#include "tmsclientserver.h"
-
-namespace TMS {
-
-// CLASS DECLARATION
-class TMSTarSettings
-    {
-public:
-    // Constructors and destructor
-
-    /**
-     * Two-phased constructor.
-     */
-    static TMSTarSettings* NewL();
-
-    /**
-     * Destructor.
-     */
-    virtual ~TMSTarSettings();
-
-public:
-    // New functions
-
-    void SetTar(TRoutingMsgBufPckg rountingpckg, TBool aPublish = ETrue);
-
-private:
-
-    /**
-     * C++ default constructor.
-     */
-    TMSTarSettings();
-
-    /**
-     * By default Symbian 2nd phase constructor is private.
-     */
-    void ConstructL();
-
-private:
-    gint iVolume; //Volume
-    };
-
-} //namespace TMS
-
-#endif      // TarSETTINGS_H
-
-// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/inc/tmscalladpt.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#ifndef CALLADPT_H
+#define CALLADPT_H
+
+#include <e32base.h>
+#include <tms.h>
+
+namespace TMS {
+
+// TMSCallAdpt class
+class TMSCallAdpt
+    {
+public:
+    static gint CreateCallL(gint callType, TMSCallAdpt*& callAdpt);
+    virtual ~TMSCallAdpt();
+    virtual gint CreateStream(TMSCallType callType,
+            TMSStreamType strmType, gint& outStrmId) = 0;
+    virtual gint InitStreamL(TMSCallType callType,
+            TMSStreamType strmType, gint strmId, TMSFormatType frmtType,
+            const RMessage2& aMessage) = 0;
+    virtual gint StartStream(TMSCallType callType,
+            TMSStreamType strmType, gint strmId) = 0;
+    virtual gint PauseStream(TMSCallType callType,
+            TMSStreamType strmType, gint strmId) = 0;
+    virtual gint StopStream(TMSCallType callType, TMSStreamType strmType,
+            gint strmId) = 0;
+    virtual gint DeinitStream(TMSCallType callType,
+            TMSStreamType strmType, gint strmId) = 0;
+    virtual gint DeleteStream(TMSCallType callType,
+            TMSStreamType strmType, gint strmId) = 0;
+    virtual gint DataXferBufferEmptied(TMSCallType callType,
+            TMSStreamType strmType, gint strmId) = 0;
+    virtual gint DataXferBufferFilled(TMSCallType callType,
+            TMSStreamType strmType, gint strmId, guint datasize) = 0;
+    virtual gint GetDataXferBufferHndl(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId,
+            const guint32 key, RChunk& chunk) = 0;
+
+    virtual gint GetMaxVolume(guint& volume) = 0;
+    virtual gint SetVolume(const guint volume) = 0;
+    virtual gint GetVolume(guint& volume) = 0;
+    virtual gint GetMaxGain(guint& gain) = 0;
+    virtual gint SetGain(const guint gain) = 0;
+    virtual gint GetGain(guint& gain) = 0;
+    virtual gint GetGlobalMaxVolume(guint& volume) = 0;
+    virtual gint SetGlobalVolume(const guint volume) = 0;
+    virtual gint GetGlobalVolume(guint& volume) = 0;
+    virtual gint GetGlobalMaxGain(guint& gain) = 0;
+    virtual gint SetGlobalGain(const guint gain) = 0;
+    virtual gint GetGlobalGain(guint& gain) = 0;
+
+    virtual gint GetCodecMode(const TMSFormatType fmttype,
+            const TMSStreamType strmtype, gint& mode) = 0;
+    virtual gint SetCodecMode(const TMSFormatType fmttype,
+            const TMSStreamType strmtype, const gint mode) = 0;
+    virtual gint GetSupportedBitRatesCount(guint& count) = 0;
+    virtual gint GetSupportedBitRates(CBufFlat*& brbuffer) = 0;
+    virtual gint GetBitRate(guint& bitrate) = 0;
+    virtual gint SetBitRate(const guint bitrate) = 0;
+    virtual gint GetVAD(const TMSFormatType fmttype, gboolean& vad) = 0;
+    virtual gint SetVAD(const TMSFormatType fmttype, const gboolean vad) = 0;
+    virtual gint GetCNG(const TMSFormatType fmttype, gboolean& cng) = 0;
+    virtual gint SetCNG(const TMSFormatType fmttype, const gboolean cng) = 0;
+    virtual gint GetPlc(const TMSFormatType fmttype, gboolean& plc) = 0;
+    virtual gint SetPlc(const TMSFormatType fmttype, const gboolean plc) = 0;
+    virtual gint SetOutput(TMSAudioOutput output) = 0;
+    virtual gint GetOutput(TMSAudioOutput& output) = 0;
+    virtual gint GetPreviousOutput(TMSAudioOutput& output) = 0;
+    virtual gint GetAvailableOutputsL(gint& count,
+            CBufFlat*& outputsbuffer) = 0;
+    virtual gint StartDTMF(TMSStreamType streamtype, TDes& dtmfstring) = 0;
+    virtual gint StopDTMF(TMSStreamType streamtype) = 0;
+    virtual gint ContinueDTMF(TBool continuesending) = 0;
+
+protected:
+    TMSCallAdpt();
+    virtual gint PostConstruct();
+
+protected:
+    gint iGlobalVol;
+    gint iGlobalGain;
+    };
+
+} //namespace TMS
+
+#endif // CALLADPT_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/inc/tmscallcsadpt.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#ifndef CALLCSADPT_H
+#define CALLCSADPT_H
+
+#include <TelephonyAudioRouting.h>
+#include <MTelephonyAudioRoutingObserver.h>
+#include <e32msgqueue.h>
+#include <etelmm.h>
+#include <rmmcustomapi.h>
+#include "tmsclientserver.h"
+#include "tmsdtmftoneplayerobserver.h"
+#include "tmscalladpt.h"
+#include "tmscsdevsoundobserver.h"
+#include "tmsdtmfobserver.h"
+
+namespace TMS {
+
+// FORWARD DECLARATIONS
+class TMSCSUplink;
+class TMSCSDownlink;
+class TMSTarSettings;
+class TMSAudioDtmfTonePlayer;
+class TMSDTMFProvider;
+class TMSDtmfNotifier;
+
+/*
+ * CallCSAdapt class
+ */
+class TMSCallCSAdpt : public TMSCallAdpt,
+                      public TMSCSPDevSoundObserver,
+                      public MTelephonyAudioRoutingObserver,
+                      public TMSDTMFTonePlayerObserver,
+                      public TMSDTMFObserver
+    {
+public:
+    TMSCallCSAdpt();
+    virtual ~TMSCallCSAdpt();
+    virtual gint PostConstruct();
+
+    virtual gint CreateStream(TMSCallType callType, TMSStreamType strmType,
+            gint& outStrmId);
+    virtual gint InitStreamL(TMSCallType callType, TMSStreamType strmType,
+            gint strmId, TMSFormatType frmtType, const RMessage2& aMessage);
+    virtual gint StartStream(TMSCallType callType, TMSStreamType strmType,
+            gint strmId);
+    virtual gint PauseStream(TMSCallType callType, TMSStreamType strmType,
+            gint strmId);
+    virtual gint StopStream(TMSCallType callType, TMSStreamType strmType,
+            gint strmId);
+    virtual gint DeinitStream(TMSCallType callType, TMSStreamType strmType,
+            gint strmId);
+    virtual gint DeleteStream(TMSCallType callType, TMSStreamType strmType,
+            gint strmId);
+    virtual gint DataXferBufferEmptied(TMSCallType callType,
+            TMSStreamType strmType, gint strmId);
+    virtual gint DataXferBufferFilled(TMSCallType callType,
+            TMSStreamType strmType, gint strmId, guint datasize);
+    virtual gint GetDataXferBufferHndl(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId,
+            const guint32 key, RChunk& chunk);
+    virtual gint GetMaxVolume(guint& volume);
+    virtual gint SetVolume(const guint volume);
+    virtual gint GetVolume(guint& volume);
+    virtual gint GetMaxGain(guint& gain);
+    virtual gint SetGain(const guint gain);
+    virtual gint GetGain(guint& gain);
+    virtual gint GetGlobalMaxVolume(guint& volume);
+    virtual gint SetGlobalVolume(const guint volume);
+    virtual gint GetGlobalVolume(guint& volume);
+    virtual gint GetGlobalMaxGain(guint& gain);
+    virtual gint SetGlobalGain(const guint gain);
+    virtual gint GetGlobalGain(guint& gain);
+
+    virtual gint GetCodecMode(const TMSFormatType fmttype,
+            const TMSStreamType strmtype, gint& mode);
+    virtual gint SetCodecMode(const TMSFormatType fmttype,
+            const TMSStreamType strmtype, const gint mode);
+    virtual gint GetSupportedBitRatesCount(guint& count);
+    virtual gint GetSupportedBitRates(CBufFlat*& brbuffer);
+    virtual gint GetBitRate(guint& bitrate);
+    virtual gint SetBitRate(const guint bitrate);
+    virtual gint GetVAD(const TMSFormatType fmttype, gboolean& vad);
+    virtual gint SetVAD(const TMSFormatType fmttype, const gboolean vad);
+    virtual gint GetCNG(const TMSFormatType fmttype, gboolean& cng);
+    virtual gint SetCNG(const TMSFormatType fmttype, const gboolean cng);
+    virtual gint GetPlc(const TMSFormatType fmttype, gboolean& plc);
+    virtual gint SetPlc(const TMSFormatType fmttype, const gboolean plc);
+
+    virtual gint SetOutput(TMSAudioOutput output);
+    virtual gint GetOutput(TMSAudioOutput& output);
+    virtual gint GetPreviousOutput(TMSAudioOutput& output);
+    virtual gint GetAvailableOutputsL(gint& count, CBufFlat*& outputsbuffer);
+    virtual gint StartDTMF(TMSStreamType streamtype, TDes& dtmfstring);
+    virtual gint StopDTMF(TMSStreamType streamtype);
+    virtual gint ContinueDTMF(TBool continuesending);
+
+    void NotifyClient(const gint strmId, const gint aCommand,
+            const gint aStatus = KErrNone, const gint64 aInt64 = TInt64(0));
+
+    //From TMSCSPDevSoundObserver
+    void DownlinkInitCompleted(TInt status);
+    void UplinkInitCompleted(TInt status);
+    void UplinkActivatedSuccessfully();
+    void DownlinkActivatedSuccessfully();
+    void UplinkActivationFailed();
+    void DownlinkActivationFailed();
+
+    //From DTMFTonePlayerObserver
+    void DTMFInitCompleted(TInt error);
+    void DTMFToneFinished(TInt error);
+
+    //From TMSDTMFObserver
+     void HandleDTMFEvent(const TMSDTMFObserver::TCCPDtmfEvent aEvent,
+             const TInt aError, const TChar aTone);
+
+protected:
+    void AvailableOutputsChanged(
+            CTelephonyAudioRouting& aTelephonyAudioRouting);
+    void OutputChanged(CTelephonyAudioRouting& aTelephonyAudioRouting);
+    void SetOutputComplete(CTelephonyAudioRouting& aTelephonyAudioRouting,
+            gint aError);
+    void GetSupportedBitRatesL(CBufFlat*& brbuffer);
+
+private:
+    gint iNextStreamId;
+
+    TMSCSUplink* iCSUplink;
+    TMSCSDownlink* iCSDownlink;
+    CTelephonyAudioRouting* iRouting;
+    TMSTarSettings* iTarSettings;
+    TMSAudioDtmfTonePlayer* iDTMFDnlinkPlayer;
+    TMSDtmfNotifier* iDTMFNotifier;
+    TMSDTMFProvider* iDTMFUplinkPlayer;
+    TMSStreamType iStrmtype;
+
+    RMsgQueue<TmsMsgBuf> iMsgQueueUp;
+    RMsgQueue<TmsMsgBuf> iMsgQueueDn;
+    TmsMsgBuf iMsgBuffer;
+
+    gboolean iUplinkInitialized;
+    gint iUplinkStreamId;
+    gboolean iDnlinkInitialized;
+    gint iDnlinkStreamId;
+    };
+
+} //namespace TMS
+
+#endif // CALLCSADPT_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/inc/tmscallipadpt.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,171 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#ifndef __CALLIPADAPT_H
+#define __CALLIPADAPT_H
+
+// INCLUDES
+#include <e32msgqueue.h>
+#include <mmcccodecinformation.h>
+#include "tmsclientserver.h"
+#include "tmsshared.h"
+#include "tmscalladpt.h"
+#include "tmsdtmftoneplayer.h"
+#include "tmsdtmfnotifier.h"
+
+namespace TMS {
+
+// FORWARD DECLARATIONS
+class TMSIPDownlink;
+class TMSIPUplink;
+
+// TMSCallIPAdpt class
+class TMSCallIPAdpt : public TMSCallAdpt,
+                      public TMSDTMFTonePlayerObserver
+    {
+public:
+    // Constractor
+    static TMSCallIPAdpt* NewL();
+
+    virtual ~TMSCallIPAdpt();
+    virtual gint PostConstruct();
+
+    virtual gint CreateStream(TMSCallType callType, TMSStreamType strmType,
+            gint& outStrmId);
+    virtual gint InitStreamL(TMSCallType callType, TMSStreamType strmType,
+            gint strmId, TMSFormatType frmtType, const RMessage2& aMessage);
+    virtual gint StartStream(TMSCallType callType, TMSStreamType strmType,
+            gint strmId);
+    virtual gint PauseStream(TMSCallType callType, TMSStreamType strmType,
+            gint strmId);
+    virtual gint StopStream(TMSCallType callType, TMSStreamType strmType,
+            gint strmId);
+    virtual gint DeinitStream(TMSCallType callType, TMSStreamType strmType,
+            gint strmId);
+    virtual gint DeleteStream(TMSCallType callType, TMSStreamType strmType,
+            gint strmId);
+    virtual gint DataXferBufferEmptied(TMSCallType callType,
+            TMSStreamType strmType, gint strmId);
+    virtual gint DataXferBufferFilled(TMSCallType callType,
+            TMSStreamType strmType, gint strmId, guint datasize);
+    virtual gint GetDataXferBufferHndl(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId,
+            const guint32 key, RChunk& chunk);
+
+    virtual gint GetMaxVolume(guint& volume);
+    virtual gint SetVolume(const guint volume);
+    virtual gint GetVolume(guint& volume);
+    virtual gint GetMaxGain(guint& gain);
+    virtual gint SetGain(const guint gain);
+    virtual gint GetGain(guint& gain);
+    virtual gint GetGlobalMaxVolume(guint& volume);
+    virtual gint SetGlobalVolume(const guint volume);
+    virtual gint GetGlobalVolume(guint& volume);
+    virtual gint GetGlobalMaxGain(guint& gain);
+    virtual gint SetGlobalGain(const guint gain);
+    virtual gint GetGlobalGain(guint& gain);
+
+    virtual gint GetCodecMode(const TMSFormatType fmttype,
+            const TMSStreamType strmtype, gint& mode);
+    virtual gint SetCodecMode(const TMSFormatType fmttype,
+            const TMSStreamType strmtype, const gint mode);
+    virtual gint GetSupportedBitRatesCount(guint& count);
+    virtual gint GetSupportedBitRates(CBufFlat*& brbuffer);
+    virtual gint GetBitRate(guint& bitrate);
+    virtual gint SetBitRate(const guint bitrate);
+    virtual gint GetVAD(const TMSFormatType fmttype, gboolean& vad);
+    virtual gint SetVAD(const TMSFormatType fmttype, const gboolean vad);
+    virtual gint GetCNG(const TMSFormatType fmttype, gboolean& cng);
+    virtual gint SetCNG(const TMSFormatType fmttype, const gboolean cng);
+    virtual gint GetPlc(const TMSFormatType fmttype, gboolean& plc);
+    virtual gint SetPlc(const TMSFormatType fmttype, const gboolean plc);
+
+    virtual gint SetOutput(TMSAudioOutput output);
+    virtual gint GetOutput(TMSAudioOutput& output);
+    virtual gint GetPreviousOutput(TMSAudioOutput& output);
+    virtual gint GetAvailableOutputsL(TInt& count, CBufFlat*& outputsbuffer);
+
+    virtual gint StartDTMF(TMSStreamType streamtype, TDes& dtmfstring);
+    virtual gint StopDTMF(TMSStreamType streamtype);
+    virtual gint ContinueDTMF(TBool continuesending);
+
+    gint SetIlbcCodecMode(const gint mode, const TMSStreamType strmtype);
+    gint GetIlbcCodecMode(gint& mode, const TMSStreamType strmtype);
+    gint SetG711CodecMode(const gint mode, const TMSStreamType strmtype);
+    gint GetG711CodecMode(gint& mode, const TMSStreamType strmtype);
+    gint FrameModeRqrdForEC(gboolean& frmodereq);
+    gint SetFrameMode(const gboolean frmode);
+    gint GetFrameMode(gboolean& frmode);
+    gint ConcealErrorForNextBuffer();
+    gint BadLsfNextBuffer();
+
+    gint OpenDownlinkL(const RMessage2& aMessage);
+    gint OpenUplinkL(const RMessage2& aMessage);
+    void SetFormat(const gint strmId, const TUint32 aFormat);
+
+    void BufferFilledL(TUint dataSize);
+    void BufferEmptiedL();
+    gint GetDataXferChunkHndl(const TMSStreamType strmType,
+            const TUint32 key, RChunk& chunk);
+
+    //From DTMFTonePlayerObserver
+     void DTMFInitCompleted(TInt error);
+     void DTMFToneFinished(TInt error);
+
+private:
+    void ConstructL();
+    TMSCallIPAdpt();
+
+    void NotifyClient(const gint strmId, const TInt aCommand,
+            const TInt aStatus = KErrNone, const TInt64 aInt64 = TInt64(0));
+    //void DetermineG711FrameRateL(); //G711 10/20ms
+    void GetSupportedBitRatesL(CBufFlat*& brbuffer);
+
+private:
+    gint iNextStreamId;
+    gboolean iUplinkInitialized;
+    gint iUplinkStreamId;
+    gboolean iDnlinkInitialized;
+    gint iDnlinkStreamId;
+
+    TMSIPDownlink* iIPDownlink;
+    TMSIPUplink* iIPUplink;
+
+    // Message queues for communication and data transfer back to the client
+    RMsgQueue<TmsMsgBuf> iMsgQueueUp;
+    RMsgQueue<TmsMsgBuf> iMsgQueueDn;
+
+    TmsMsgBuf iMsgBuffer;
+    TMMFPrioritySettings iPriority;
+    TUint32 iUpFourCC;
+    TUint32 iDnFourCC;
+    TInt iMaxVolume;
+    TInt iMaxGain;
+    RArray<TUint> iArrBitrates;
+    RArray<TFourCC> iCodecs;
+    TInt iCodecsCount;
+
+    TMSAudioDtmfTonePlayer* iDTMFDnlinkPlayer;
+    TMSAudioDtmfTonePlayer* iDTMFUplinkPlayer;
+    TMSDtmfNotifier* iDTMFNotifier;
+    };
+
+} //namespace TMS
+
+#endif //__CALLIPADAPT_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/inc/tmscsdevsound.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,164 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#ifndef TMSCSDEVSOUND_H
+#define TMSCSDEVSOUND_H
+
+#include <sounddevice.h>
+
+namespace TMS {
+
+class TMSCSPDevSoundObserver;
+
+/**
+ *  Wrapper for CMMFDevSound
+ *
+ */
+NONSHARABLE_CLASS(TMSCSPDevSound) : public CBase,
+                                    public MDevSoundObserver
+    {
+public:
+
+    /**
+     * Destructor.
+     */
+    virtual ~TMSCSPDevSound();
+
+    /**
+     * Activates the dev sound stream. TMSCSPDevSoundObserver methods are called
+     * when activation goes ok or fails. If the stream is already active or
+     * activating then nothing is done.
+     */
+    virtual void Activate();
+
+    /**
+     * Deactivates the devsound stream. If stream is not active or
+     * activation is not ongoing then nothing is done.
+     */
+    virtual void Deactivate();
+
+    /**
+     * Indicates that activation is ongoing,
+     * but the result of the activation is still unknown.
+     * @return ETrue - activation ongoing, EFalse - activation not ongoing.
+     */
+    TBool IsActivationOngoing() const;
+
+    /**
+     * Determines wether the devsound stream is active or not.
+     * @return ETrue - Stream is active, EFalse - Stream not active.
+     */
+    TBool IsActive() const;
+
+    CMMFDevSound& DevSound();
+
+    // from base class MDevSoundObserver
+
+    /**
+     * From MDevSoundObserver
+     * Empty implementation
+     */
+    void InitializeComplete(TInt aError);
+
+    /**
+     * From MDevSoundObserver
+     * Empty implementation
+     */
+    void BufferToBeFilled(CMMFBuffer* aBuffer);
+
+    /**
+     * From MDevSoundObserver
+     * Empty implementation
+     */
+    void PlayError(TInt aError);
+
+    /**
+     * From MDevSoundObserver
+     * Empty implementation
+     */
+    void ToneFinished(TInt aError);
+
+    /**
+     * From MDevSoundObserver
+     * Empty implementation
+     */
+    void BufferToBeEmptied(CMMFBuffer* aBuffer);
+
+    /**
+     * From MDevSoundObserver
+     * Empty implementation
+     */
+    void RecordError(TInt aError);
+
+    /**
+     * From MDevSoundObserver
+     * Empty implementation
+     */
+    void ConvertError(TInt aError);
+
+    /**
+     * From MDevSoundObserver
+     * Empty implementation
+     */
+    void DeviceMessage(TUid aMessageType, const TDesC8& aMsg);
+
+protected:
+
+    TMSCSPDevSound(TMSCSPDevSoundObserver& aObserver);
+
+    void ConstructL(TMMFState aMode, gint aAudioPreference,
+            gint aAudioPriority);
+
+private:
+
+    /**
+     * Derived class has to activate the stream here.
+     */
+    virtual void DoActivateL() = 0;
+
+protected:
+
+    TUint iStreamType;
+
+    /**
+     * Indication if device is activated. Derived class has to update this.
+     */
+    TBool iActive;
+
+    /**
+     * Indication if activation is ongoing.
+     * Derived class has to update this.
+     */
+    TBool iActivationOngoing;
+
+    /**
+     * Devsound instance
+     * Own.
+     */
+    CMMFDevSound* iDevSound;
+
+    /**
+     * Observer for successfull activation.
+     * Not own.
+     */
+    TMSCSPDevSoundObserver& iObserver;
+
+    };
+
+} //namespace TMS
+
+#endif // TMSCSDEVSOUND_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/inc/tmscsdevsoundobserver.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#ifndef TMSCSDEVSOUNDOBSERVER_H
+#define TMSCSDEVSOUNDOBSERVER_H
+
+namespace TMS {
+
+/**
+ *  Observer interface for knowing when audio streams have been
+ *  successfully ramped up.
+ *
+ */
+class TMSCSPDevSoundObserver
+    {
+public:
+    virtual void DownlinkInitCompleted(TInt status) = 0;
+    virtual void UplinkInitCompleted(TInt status) = 0;
+
+    /**
+     * Notification that Mic has been activated successfully
+     *
+     */
+    virtual void UplinkActivatedSuccessfully() = 0;
+
+    /**
+     * Notification that speaker has been activated successfully
+     *
+     */
+    virtual void DownlinkActivatedSuccessfully() = 0;
+
+    /**
+     * Notification that Mic initialisation failed.
+     *
+     */
+    virtual void UplinkActivationFailed() = 0;
+
+    /**
+     * Notification that Speaker activation failed.
+     *
+     */
+    virtual void DownlinkActivationFailed() = 0;
+    };
+
+} //namespace TMS
+
+#endif // TMSCSDEVSOUNDOBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/inc/tmscsdownlink.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#ifndef CSDOWNLINK_H
+#define CSDOWNLINK_H
+
+#include <glib.h>
+#include "tmscsdevsound.h"
+
+namespace TMS {
+
+//
+class TMSCSPDevSoundObserver;
+
+/**
+ *  Provides Downlink functionality.
+ *
+ */
+NONSHARABLE_CLASS(TMSCSDownlink) : public TMSCSPDevSound
+    {
+public:
+
+    static TMSCSDownlink* NewL(TMSCSPDevSoundObserver& aObserver);
+
+    virtual ~TMSCSDownlink();
+
+    /**
+     * Sets volume.
+     * @param aVolume Volume.
+     */
+    void SetVolume(gint aVolume);
+
+    /**
+     * Gets volume.
+     * @return Current volume.
+     */
+    gint Volume();
+
+    /**
+     * Gets max volume.
+     * @return Current volume.
+     */
+    gint MaxVolume();
+
+    // from base class MDevSoundObserver
+
+    /**
+     * From MDevSoundObserver.
+     * Indication from devsound that stream (Downlink) has been activated
+     * successfully.
+     */
+    void BufferToBeFilled(CMMFBuffer* /*aBuffer*/);
+
+    /**
+     * From MDevSoundObserver.
+     * Indication from devsound that activation of stream( Downlink)
+     * failed.
+     */
+    void PlayError(TInt aErrorCode);
+
+private:
+
+    /**
+     * From CSPDevSound.
+     * Tries to activate the mic stream.
+     */
+    void DoActivateL();
+
+protected:
+
+    TMSCSDownlink(TMSCSPDevSoundObserver& aObserver);
+
+    void ConstructL();
+    };
+
+} //namespace TMS
+
+#endif // CSDOWNLINK_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/inc/tmscsuplink.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#ifndef CS_UPLINK_H
+#define CS_UPLINK_H
+
+#include <glib.h>
+#include "tmscsdevsound.h"
+
+namespace TMS {
+
+/**
+ *  Provides uplink functionality.
+ *
+ */
+NONSHARABLE_CLASS(TMSCSUplink) : public TMSCSPDevSound
+    {
+public:
+
+    static TMSCSUplink* NewL(TMSCSPDevSoundObserver& aObserver);
+
+    virtual ~TMSCSUplink();
+
+    /**
+     * Determines mic mute state.
+     *
+     * @return ETrue - mic is muted, EFalse - mic is not muted.
+     */
+    TBool IsMuted();
+
+    /**
+     * Set mic muted.
+     */
+    void SetMuted();
+
+    /**
+     * Set mic unmuted.
+     */
+    void SetUnmuted();
+
+    /**
+     * Set mic gain.
+     */
+    void SetGain(gint aGain);
+
+    /**
+     * Get mic muted.
+     */
+    gint Gain();
+
+    /**
+     * Get max gain.
+     */
+    gint MaxGain();
+
+    // from base class MDevSoundObserver
+
+    /**
+     * From MDevSoundObserver
+     * Notification from Devsound that stream (mic) is
+     * activated successfully.
+     */
+    void BufferToBeEmptied(CMMFBuffer* aBuffer);
+
+    /**
+     * From MDevSoundObserver
+     * Notification from devsound that downstream(mic) activation
+     * feiled.
+     */
+    void RecordError(TInt aError);
+
+private:
+
+    // from base class MCSPDevSound
+
+    /**
+     * From MCSPDevSound.
+     * Tries to activate the mic stream.
+     */
+    void DoActivateL();
+
+protected:
+
+    TMSCSUplink(TMSCSPDevSoundObserver& aObserver);
+    void ConstructL();
+    };
+
+} //namespace TMS
+
+#endif // CS_UPLINK_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/inc/tmsdelaytimer.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#ifndef DELAYTIMER_H
+#define DELAYTIMER_H
+
+#include <e32base.h>
+
+namespace TMS {
+
+/**
+ * A Timer utility class used by the Server for shutdown purpose.
+ */
+class TMSCallDelayTimer : public CActive
+    {
+public:
+    // Construct/destruct
+    static TMSCallDelayTimer* NewL();
+    ~TMSCallDelayTimer();
+
+public:
+    // Request a timeout after aDelay
+    void SetDelay(TTimeIntervalMicroSeconds32 aDelay);
+
+protected:
+    // From CActive
+    void RunL();
+    void DoCancel();
+
+private:
+    // Construct/destruct
+    TMSCallDelayTimer();
+    void ConstructL();
+
+private:
+    RTimer iShutDownTimer; // Has
+    };
+
+} //namespace TMS
+
+#endif //DELAYTIMER_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/inc/tmsdtmfnotifier.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#ifndef DTMFNOTIFIER_H
+#define DTMFNOTIFIER_H
+
+//  INCLUDES
+#include <e32property.h>
+#include <sounddevice.h>
+#include "tmsclientserver.h"
+
+namespace TMS {
+
+// CLASS DECLARATION
+class TMSDtmfNotifier
+    {
+public:
+    // Constructors and destructor
+
+    /**
+     * Two-phased constructor.
+     */
+    static TMSDtmfNotifier* NewL();
+
+    /**
+     * Destructor.
+     */
+    virtual ~TMSDtmfNotifier();
+
+public:
+    // New functions
+
+    void SetDtmf(TmsMsgBufPckg dtmfpckg, TBool aPublish = ETrue);
+
+private:
+
+    /**
+     * C++ default constructor.
+     */
+    TMSDtmfNotifier();
+
+    /**
+     * By default Symbian 2nd phase constructor is private.
+     */
+    void ConstructL();
+
+private:
+    TInt iVolume; //Volume
+    };
+
+} //namespace TMS
+
+#endif // DTMFNOTIFIER_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/inc/tmsdtmfobserver.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#ifndef TMSDTMFOBSERVER_H
+#define TMSDTMFOBSERVER_H
+
+#include <e32base.h>
+
+namespace TMS {
+
+/**
+ * CCP DTMF related events observer class.
+ * This class is used for notifying DTMF specific events.
+ */
+class TMSDTMFObserver
+    {
+public:
+
+    /** DTMF Events */
+    enum TCCPDtmfEvent
+        {
+        /** Unknown */
+        ECCPDtmfUnknown = 0,
+        /** DTMF sending started manually */
+        ECCPDtmfManualStart = 5,
+        /** DTMF sending stopped manually */
+        ECCPDtmfManualStop = 6,
+        /** DTMF sending aborted manually */
+        ECCPDtmfManualAbort = 7,
+        /** Automatic DTMF sending initialized */
+        ECCPDtmfSequenceStart = 9,
+        /** Automatic DTMF sending stopped */
+        ECCPDtmfSequenceStop = 10,
+        /** Automatic DTMF sending aborted */
+        ECCPDtmfSequenceAbort = 11,
+        /** There was stop mark in DTMF string */
+        ECCPDtmfStopInDtmfString,
+        /** DTMF sending completed succesfully */
+        ECCPDtmfStringSendingCompleted
+        };
+
+    //protected:
+    /**
+     * Protects the observer being deleted through the observer interface.
+     */
+    //virtual inline ~TMSDTMFObserver() {};
+
+public:
+
+    /**
+     * HandleDTMFEvents.
+     * @param aEvent Event type
+     * @param aError Error code
+     * @param aTone Character
+     * @return none
+     */
+    virtual void HandleDTMFEvent(const TMSDTMFObserver::TCCPDtmfEvent aEvent,
+            const TInt aError, const TChar aTone) /*const*/ = 0;
+    };
+
+} //namespace TMS
+
+#endif // TMSDTMFOBSERVER_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/inc/tmsdtmfprovider.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,181 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#ifndef TMSDTMFPROVIDER_H
+#define TMSDTMFPROVIDER_H
+
+#include <e32base.h>
+#include <etelmm.h>
+#include <rmmcustomapi.h>
+#include "tmsdtmfobserver.h"
+
+namespace TMS {
+
+// FORWARD DECLARATIONS
+class TMSEtelDtmfMonitor;
+class TMSEtelDtmfStopMonitor;
+
+/**
+ * TMSDTMFProvider class
+ * Makes asynchronic request to ETel interface according to given request type.
+ * Provides canceling via CActive::Cancel().
+ */
+class TMSDTMFProvider : public CActive
+    {
+public:
+
+    /**
+     * Two phased constructing of the DTMF provider instance.
+     * @param aPhone mobile phone handle
+     * @param aMmCustom custom API handle for special DTMF event
+     *        monitoring.
+     * @return the DTMF provider instance
+     */
+    static TMSDTMFProvider* NewL();
+
+    /**
+     * C++ default destructor
+     */
+    virtual ~TMSDTMFProvider();
+
+    /**
+     * HandleDTMFEvents.
+     * @param aEvent Event type
+     * @param aError Error code
+     * @param aTone Character
+     */
+    void NotifyDTMFEvent(const TMSDTMFObserver::TCCPDtmfEvent aEvent,
+            const TInt aError, const TChar aTone);
+
+    // from base class MCCPDTMFProvider
+    /**
+     * Cancels asynchronous DTMF string sending.
+     * @return KErrNone if succesfull, otherwise another system wide error code
+     */
+    TInt CancelDtmfStringSending();
+
+    /**
+     * Starts the transmission of a single DTMF tone across a
+     * connected and active call.
+     * @param aTone Tone to be played.
+     * @return KErrNone if succesfull, otherwise another system wide error code
+     */
+    TInt StartDtmfTone(const TChar aTone);
+
+    /**
+     * Stops playing current DTMF tone.
+     * @return KErrNone if succesfull, otherwise another system wide error code
+     */
+    TInt StopDtmfTone();
+
+    /**
+     * Plays DTMF string.
+     * @param aString String to be played.
+     * @return KErrNone if succesfull, otherwise another system wide error code
+     * KErrArgument if the specified string contains illegal DTMF characters
+     */
+    TInt SendDtmfToneString(const TDesC& aString);
+
+    /**
+     * Continue or cancel sending DTMF string which was stopped with 'w'
+     * character in string.
+     * @param aContinue ETrue if sending of the DTMF string should continue,
+     * EFalse if the rest of the DTMF string is to be discarded.
+     * @return KErrNone if succesfull, otherwise another system wide error code
+     */
+    TInt ContinueDtmfStringSending(const TBool aContinue);
+
+    /**
+     * Add an observer for DTMF related events.
+     * Plug-in dependent feature if duplicates or more than one observers
+     * are allowed or not. Currently CCE will set only one observer.
+     * @param aObserver Observer
+     * @leave system error if observer adding fails
+     */
+    void AddObserverL(const TMSDTMFObserver& aObserver);
+
+    /**
+     * Remove an observer.
+     * @param aObserver Observer
+     * @return KErrNone if removed succesfully. KErrNotFound if observer was
+     * not found. Any other system error depending on the error.
+     */
+    TInt RemoveObserver(const TMSDTMFObserver& aObserver);
+
+    // from base class CActive
+protected:
+    /**
+     * From CActive
+     * RunL
+     */
+    void RunL();
+
+    /**
+     * From CActive
+     * Cancels the monitor
+     */
+    void DoCancel();
+
+private:
+    /**
+     * Constructs the requester.
+     *
+     * @param aPhone handle to ETel phone
+     * @param aMmCustom custom API handle
+     */
+    TMSDTMFProvider();
+
+    /**
+     * Constructing the provider in the second phase.
+     */
+    void ConstructL();
+
+private:
+    /**
+     * DTMF event observer.
+     */
+    RPointerArray<TMSDTMFObserver> iObservers;
+
+    /**
+     * ETel phone handle for DTMF functionality.
+     */
+    RMobilePhone iPhone;
+
+    /**
+     * Monitor for DTMF events and changes.
+     * Own.
+     */
+    TMSEtelDtmfMonitor* iMonitor;
+
+    /**
+     * Monitor for DTMF stopping.
+     * Own.
+     */
+    TMSEtelDtmfStopMonitor* iStopMonitor;
+
+    /**
+     * Custom API reference.
+     */
+    RMmCustomAPI iMmCustom;
+
+    RTelServer iServer;
+    TBuf<25> iTsyname;
+    };
+
+} //namespace TMS
+
+#endif //TMSDTMFPROVIDER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/inc/tmsdtmftoneplayer.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,163 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#ifndef TMSAUDIODTMFTONEPLAYER_H
+#define TMSAUDIODTMFTONEPLAYER_H
+
+// INCLUDES
+#include <glib.h>
+#include <sounddevice.h>
+#include "tmsdtmftoneplayerobserver.h"
+
+// FORWARD DECLARATIONS
+class CMMFDevSound;
+
+// CLASS DECLARATION
+
+/**
+ *  plays DTMF tones using media server
+ */
+
+namespace TMS {
+
+class TMSAudioDtmfTonePlayer : public MDevSoundObserver
+    {
+public:
+    // Constructors and destructor
+
+    /**
+     * Two-phased constructor.
+     */
+    static TMSAudioDtmfTonePlayer* NewL(TMSDTMFTonePlayerObserver& obsrvr,
+            guint aAudioPreference, guint aAudioPriority);
+
+    /**
+     * Destructor.
+     */
+    virtual ~TMSAudioDtmfTonePlayer();
+
+public:
+
+    /**
+     * Sets volume.
+     * @param aVolume volume value or KDtmfSilent.
+     * @return None.
+     */
+    void SetVolume(gint aVolume);
+
+    /**
+     * Starts playing given dtmf tone infinitely.
+     * @param aTone Tone to be played.
+     * @return None.
+     */
+    void PlayDtmfTone(TDes& tone);
+
+    /**
+     * Cancels playing.
+     * @param None.
+     * @return None.
+     */
+    void Cancel();
+
+public:
+    //From MDevSoundObserver
+    /**
+     * See MDevSoundObserver
+     */
+    void InitializeComplete(TInt aError);
+
+    /**
+     * See MDevSoundObserver
+     */
+    void ToneFinished(TInt aError);
+
+    /**
+     * See MDevSoundObserver
+     */
+    void BufferToBeFilled(CMMFBuffer* aBuffer);
+
+    /**
+     * See MDevSoundObserver
+     */
+    void PlayError(TInt aError);
+
+    /**
+     * See MDevSoundObserver
+     */
+    void BufferToBeEmptied(CMMFBuffer* aBuffer);
+
+    /**
+     * See MDevSoundObserver
+     */
+    void RecordError(TInt aError);
+
+    /**
+     * See MDevSoundObserver
+     */
+    void ConvertError(TInt aError);
+    /**
+     * See MDevSoundObserver
+     */
+    void DeviceMessage(TUid aMessageType, const TDesC8& aMsg);
+
+protected:
+
+    /**
+     * C++ default constructor.
+     */
+    TMSAudioDtmfTonePlayer(TMSDTMFTonePlayerObserver& obsrvr,
+            guint aAudioPreference, guint aAudioPriority);
+
+    void ConstructL();
+
+    /**
+     * Normalize tone.
+     * @param aTone dtmf tone.
+     * @return None.
+     */
+    void Normalize(TChar& aTone);
+
+private:
+    //new functions
+
+    /**
+     * Converts the given value to the one that matches tha range used by
+     * CMMFDevSound. The CMMFDevSound uses valuess that can from 0 to the
+     * value returned by a call to CMMFDevSound::MaxVolume().
+     */
+    gint ConvertVolume(gint aVolume);
+
+protected:
+    // Data
+
+    // Current volume setting.
+    gint iVolume;
+
+    // DTMF player instance
+    CMMFDevSound* iDTMFPlayer;
+
+    TMSDTMFTonePlayerObserver& iObserver;
+    guint iPref;
+    guint iPrior;
+
+    };
+
+} //namespace TMS
+
+#endif // TMSAUDIODTMFTONEPLAYER_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/inc/tmsdtmftoneplayerobserver.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#ifndef DTMFTONEPLAYEROBSERVER_H
+#define DTMFTONEPLAYEROBSERVER_H
+
+namespace TMS {
+
+/**
+ *  Observer interface for knowing when dtmf tone player has been initialized.
+ */
+class TMSDTMFTonePlayerObserver
+    {
+public:
+    virtual void DTMFInitCompleted(TInt error) = 0;
+    virtual void DTMFToneFinished(TInt error) = 0;
+    };
+} //namespace TMS
+
+#endif // DTMFTONEPLAYEROBSERVER_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/inc/tmseteldtmfmonitor.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#ifndef TMSETELDTMFMONITOR_H
+#define TMSETELDTMFMONITOR_H
+
+#include <e32base.h>
+#include <etelmm.h>
+#include <rmmcustomapi.h>
+
+namespace TMS {
+
+// FORWARD DECLARATIONS
+class TMSCSPCall;
+class TMSDTMFProvider;
+
+/**
+ * TMSEtelDtmfMonitor class
+ *
+ * Monitors ETel for DTMF events.
+ *
+ * This monitor is applied only for listening incoming calls, i.e.
+ * line capabilites are not monitored.
+ *
+ * @lib csplugin.dll
+ *
+ */
+class TMSEtelDtmfMonitor : public CActive
+    {
+public:
+    /**
+     * Two-phased constructing for the monitor.
+     *
+     * @param aObserver the observer for getting notification
+     * @param aMmCustom Custom API handle
+     */
+    static TMSEtelDtmfMonitor* NewL(TMSDTMFProvider& aObserver,
+            RMmCustomAPI& aMmCustom);
+
+    /**
+     * C++ default destructor
+     */
+    virtual ~TMSEtelDtmfMonitor();
+
+    /**
+     * Start monitoring call events
+     */
+    void StartMonitoring();
+
+protected: // From CActive
+    /**
+     * From CActive
+     * RunL
+     */
+    void RunL();
+
+    /**
+     * From CActive
+     * Cancels the monitor
+     */
+    void DoCancel();
+
+private:
+    /**
+     * C++ default constructor
+     * @param aObserver the observer for status change (incoming call)
+     * @param aMmCustom Custom API handle
+     */
+    TMSEtelDtmfMonitor(TMSDTMFProvider& aObserver, RMmCustomAPI& aMmCustom);
+
+private:
+    /**
+     * Forwards events.
+     */
+    TMSDTMFProvider& iObserver;
+
+    /**
+     * Event data. Updated when event occurs.
+     */
+    RMmCustomAPI::TDtmfInfo iEventData;
+
+    /**
+     * Custom API reference.
+     */
+    RMmCustomAPI& iMmCustom;
+
+    };
+
+} //namespace TMS
+
+#endif // TMSETELDTMFMONITOR_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/inc/tmseteldtmfstopmonitor.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#ifndef TMSETELDTMFSTOPMONITOR_H
+#define TMSETELDTMFSTOPMONITOR_H
+
+#include <e32base.h>
+#include <etelmm.h>
+
+namespace TMS {
+
+// FORWARD DECLARATIONS
+class TMSDTMFProvider;
+
+/**
+ * TMSEtelDtmfStopMonitor class
+ *
+ * Monitors single ETel RMobilePhone for DTMF events.
+ *
+ * This monitor is applied only for listening incoming calls, i.e.
+ * line capabilites are not monitored.
+ *
+ */
+class TMSEtelDtmfStopMonitor : public CActive
+    {
+public:
+    /**
+     * Two-phased constructing for the monitor.
+     *
+     * @param aObserver the observer for getting notification
+     * @param aPhone the line to monitor
+     */
+    static TMSEtelDtmfStopMonitor* NewL(TMSDTMFProvider& aObserver,
+            RMobilePhone& aPhone);
+
+    /**
+     * C++ default destructor
+     */
+    virtual ~TMSEtelDtmfStopMonitor();
+
+    /**
+     * Start monitoring call events
+     */
+    void StartMonitoring();
+
+protected: // From CActive
+    /**
+     * From CActive
+     * RunL
+     */
+    void RunL();
+
+    /**
+     * From CActive
+     * Cancels the monitor
+     */
+    void DoCancel();
+
+private:
+    /**
+     * C++ default constructor
+     * @param aObserver the observer for status change (incoming call)
+     * @param aPhone the line associated with the call
+     */
+    TMSEtelDtmfStopMonitor(TMSDTMFProvider& aObserver, RMobilePhone& aPhone);
+
+private:
+    /**
+     * Forwards events.
+     */
+    TMSDTMFProvider& iObserver;
+
+    /**
+     * Phone that is being observed for incoming call.
+     */
+    RMobilePhone& iPhone;
+
+    /**
+     * Event received.
+     */
+    RMobilePhone::TMobilePhoneDTMFEvent iEventData;
+
+    };
+
+} //namespace TMS
+
+#endif // TMSETELDTMFSTOPMONITOR_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/inc/tmsipcallstream.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,312 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#ifndef __IPCALLSTREAM_H
+#define __IPCALLSTREAM_H
+
+//#define __PLAY_WAV_FROM_FILE__
+
+#include <e32msgqueue.h>
+#include <mmfbase.h>
+#include <tms.h>
+#include "tmsgstreamer.h"
+#include "tmsshared.h"
+#include "tmsclientserver.h"
+
+#ifdef __USE_GSTREAMER__
+#include <gst.h>
+#include "gstg711encoderinterface.h"
+#include "gstspeechencoderconfig.h"
+#include "gsterrorconcealmentinterface.h"
+#include "gstg711decoderinterface.h"
+#include "gstilbcdecoderinterface.h"
+#include "gstilbcencoderinterface.h"
+#include "gstg729encoderinterface.h"
+#include "gstg729decoderinterface.h"
+#else //__USE_GSTREAMER__
+#include <sounddevice.h>
+#include <voipdownlinkstream.h>
+#include <voipuplinkstream.h>
+
+// FORWARD DECLARATIONS
+class CAudioOutput;
+class CErrorConcealmentIntfc;
+class CSpeechEncoderConfig;
+class CG711DecoderIntfc;
+class CG729DecoderIntfc;
+class CIlbcDecoderIntfc;
+class CG711EncoderIntfc;
+class CG729EncoderIntfc;
+class CIlbcEncoderIntfc;
+#endif //__USE_GSTREAMER__
+
+namespace TMS {
+
+// -----------------------------------------------------------------------------
+//  Class Name:  TMSIPCallStreamBase
+//
+//  Base abstract class for creating VoIP uplink and downlink streams.
+// -----------------------------------------------------------------------------
+class TMSIPCallStreamBase : public CBase
+#ifndef __USE_GSTREAMER__
+                          , public MDevSoundObserver
+#endif //__USE_GSTREAMER__
+    {
+public:
+    enum TStreamState
+        {
+        ENotReady, // not initialized
+        EReady, // initialized and ready for streaming
+        EStreaming
+        // active streaming
+        };
+
+public:
+    virtual ~TMSIPCallStreamBase();
+
+    virtual void Start() = 0;
+    virtual void Stop() = 0;
+    virtual gint SetCodecCi() = 0;
+
+#ifndef __USE_GSTREAMER__
+    void InitDevSoundL(const TMMFState aDevSoundState,
+            const TMMFPrioritySettings priority);
+#endif //__USE_GSTREAMER__
+    void SetMsgQueue(const RMsgQueue<TmsMsgBuf> aMsgQueue);
+    gint DoChunk(const gint aDataLen, TmsMsgBuf& aMsgBuffer);
+    gint ConfigureMedia(const guint32 aCodecID);
+
+protected:
+#ifndef __USE_GSTREAMER__
+    // From MDevSoundObserver
+    virtual void InitializeComplete(TInt aError) = 0;
+    virtual void BufferToBeEmptied(CMMFBuffer* /*aBuffer*/) {}
+    virtual void RecordError(TInt /*aError*/) {}
+    virtual void BufferToBeFilled(CMMFBuffer* /*aBuffer*/) {}
+    virtual void PlayError(TInt /*aError*/) {}
+    virtual void ToneFinished(TInt /*aError*/) {}
+    virtual void ConvertError(TInt /*aError*/) {}
+    virtual void DeviceMessage(TUid /*aMessageType*/, const TDesC8& /*aMsg*/) {}
+    virtual void SendEventToClient(const TMMFEvent& /*aEvent*/) {}
+#endif //__USE_GSTREAMER__
+
+protected:
+
+    CActiveScheduler* iActiveScheduler;
+    TStreamState iStatus;
+
+#ifndef __USE_GSTREAMER__
+    CMMFDevSound* iDevSound;
+    CMMFDataBuffer* iDevSoundBufPtr;
+#endif //__USE_GSTREAMER__
+
+    RMsgQueue<TmsMsgBuf> iMsgQueue; // ITC back to client
+    TmsMsgBuf iMsgBuffer;
+    RChunk iChunk;
+    gint iMaxBufLen;
+    guint32 iCodecID;
+    TMMFPrioritySettings iPriority;
+    const gchar* iMediaType;
+
+    gint iG711DecodeMode;
+    gint iILBCDecodeMode;
+    gint iG711EncodeMode;
+    gint iILBCEncodeMode;
+    gint iBufLen;
+    TBool iWriteDataXferHndlToClient;
+    TUint32 iKey;
+    };
+
+// -----------------------------------------------------------------------------
+//  Class Name:  TMSIPDownlink
+//
+//  Class handling VoIP downlink stream object.
+// -----------------------------------------------------------------------------
+class TMSIPDownlink : public TMSIPCallStreamBase
+    {
+public:
+    virtual ~TMSIPDownlink();
+
+#ifdef __USE_GSTREAMER__
+    static void cb_raw_playback_handoff(GstElement* appsrc, guint size);
+    static gboolean bus_call(GstBus* bus, GstMessage* msg, gpointer data);
+#endif //__USE_GSTREAMER__
+    static TMSIPDownlink* NewL(const guint32 codecID,
+            const TMMFPrioritySettings priority);
+    TMSIPDownlink();
+    void ConstructL(const guint32 codecID,
+            const TMMFPrioritySettings priority);
+
+    gint SetCodecCi();
+    void Start();
+    void Stop();
+    void BufferFilled(const guint buflen);
+    gint SetVolume(const guint volume);
+    gint GetVolume(guint& volume);
+    gint GetMaxVolume(guint& volume);
+    gint GetDataXferChunkHndl(const TUint32 key, RChunk& chunk);
+
+    // For CIs
+    gint SetIlbcCodecMode(const gint mode);
+    gint GetIlbcCodecMode(gint& mode);
+    gint SetG711CodecMode(const gint mode);
+    gint GetG711CodecMode(gint& mode);
+    gint FrameModeRqrdForEC(gboolean& frmodereq);
+    gint SetFrameMode(gboolean frmode);
+    gint GetFrameMode(gboolean& frmode);
+    gint ConcealErrorForNextBuffer();
+    gint SetCng(const TMSFormatType fmttype, const gboolean cng);
+    gint GetCng(const TMSFormatType fmttype, gboolean& cng);
+    gint SetPlc(const TMSFormatType fmttype, const gboolean plc);
+    gint GetPlc(const TMSFormatType fmttype, gboolean& plc);
+    gint BadLsfNextBuffer();
+
+    void SetAudioDeviceL(TMSAudioOutput output);
+    void GetAudioDeviceL(TMSAudioOutput& output);
+
+private:
+    void SetCodecCiL();
+
+#ifdef __USE_GSTREAMER__
+    void BufferToBeFilled();
+    gint gst_play_raw();
+    gint gst_initialize_play();
+#else //__USE_GSTREAMER__
+    // From MDevSoundObserver
+    virtual void BufferToBeFilled(CMMFBuffer* aBuffer);
+    virtual void InitializeComplete(TInt aError);
+    virtual void PlayError(TInt aError);
+#endif //__USE_GSTREAMER__
+
+private:
+
+    gboolean iFrameMode;
+    gboolean iPlc;
+    gint iMaxVolume;
+
+#ifndef __USE_GSTREAMER__
+    CAudioOutput* iAudioOutput;
+    CErrorConcealmentIntfc* iErrConcealmentIntfc;
+    CG711DecoderIntfc* iG711DecoderIntfc;
+    CG729DecoderIntfc* iG729DecoderIntfc;
+    CIlbcDecoderIntfc* iIlbcDecoderIntfc;
+#else //__USE_GSTREAMER__
+    GstErrorConcealmentIntfc* iErrConcealmentIntfc;
+    GstG711DecoderIntfc* iG711DecoderIntfc;
+    GstG729DecoderIntfc* iG729DecoderIntfc;
+    GstIlbcDecoderIntfc* iIlbcDecoderIntfc;
+    GstElement* iPipelinePlay;
+    GstElement* iAppSrc;
+    GstElement* iSink;
+    GstBus* iBusPlay;
+#endif //__USE_GSTREAMER__
+#ifdef _DEBUG
+    gint iSamplesPlayedCount;
+#endif
+
+#ifdef __PLAY_WAV_FROM_FILE__
+    RFile iFile;
+    gint fsize;
+    gint iReadSize;
+    gint iReadBytes;
+    RFs iFs;
+    HBufC8* fbuf;
+#endif
+    };
+
+// -----------------------------------------------------------------------------
+//  Class Name:  TMSIPUplink
+//
+//  Class handling VoIP uplink stream.
+// -----------------------------------------------------------------------------
+class TMSIPUplink : public TMSIPCallStreamBase
+    {
+public:
+    virtual ~TMSIPUplink();
+
+#ifdef __USE_GSTREAMER__
+    static void cb_record_raw_handoff(GstElement *sink);
+    static gboolean bus_call(GstBus* bus, GstMessage* msg, gpointer data);
+#endif //__USE_GSTREAMER__
+    static TMSIPUplink* NewL(const guint32 codecID,
+            const TMMFPrioritySettings priority);
+    TMSIPUplink();
+    void ConstructL(const guint32 codecID,
+            const TMMFPrioritySettings priority);
+
+    gint SetCodecCi();
+    void Start();
+    void Stop();
+    void BufferEmptied();
+    gint SetGain(const guint gain);
+    gint GetGain(guint& gain);
+    gint GetMaxGain(guint& gain);
+    gint GetDataXferChunkHndl(const TUint32 key, RChunk& chunk);
+
+    // For CIs
+    gint SetIlbcCodecMode(const gint mode);
+    gint GetIlbcCodecMode(gint& mode);
+    gint SetG711CodecMode(const gint mode);
+    gint GetG711CodecMode(gint& mode);
+    gint GetSupportedBitrates(RArray<TUint>& bitrates);
+    gint SetBitrate(guint bitrate);
+    gint GetBitrate(guint& bitrate);
+    gint SetVad(const TMSFormatType fmttype, const gboolean vad);
+    gint GetVad(const TMSFormatType fmttype, gboolean& vad);
+
+private:
+    void SetCodecCiL();
+
+#ifdef __USE_GSTREAMER__
+    void BufferToBeEmptied();
+    gint gst_record_raw();
+    gint gst_initialize_record();
+#else //__USE_GSTREAMER__
+    // From MDevSoundObserver
+    virtual void BufferToBeEmptied(CMMFBuffer* aBuffer);
+    virtual void InitializeComplete(TInt aError);
+    virtual void RecordError(TInt /*aError*/);
+#endif //__USE_GSTREAMER__
+
+private:
+    gint iMaxGain;
+
+#ifndef __USE_GSTREAMER__
+    CSpeechEncoderConfig* iSpeechEncoderConfig;
+    CG711EncoderIntfc* iG711EncoderIntfc;
+    CG729EncoderIntfc* iG729EncoderIntfc;
+    CIlbcEncoderIntfc* iIlbcEncoderIntfc;
+#else //__USE_GSTREAMER__
+    GstSpeechEncoderConfigIntfc* iSpeechEncoderConfig;
+    GstG711EncoderIntfc* iG711EncoderIntfc;
+    GstG729EncoderIntfc* iG729EncoderIntfc;
+    GstIlbcEncoderIntfc* iIlbcEncoderIntfc;
+    GstElement* iPipelineRec;
+    GstElement* iSource;
+    GstElement* iAppSink;
+    GstBus* iBusRec;
+#endif //__USE_GSTREAMER__
+#ifdef _DEBUG
+    gint iSamplesRecCount;
+#endif
+    };
+
+} //namespace TMS
+
+#endif  //__IPCALLSTREAM_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/inc/tmstarsettings.h	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#ifndef TARSETTINGS_H
+#define TARSETTINGS_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <e32property.h>
+#include <sounddevice.h>
+#include "tmsclientserver.h"
+
+namespace TMS {
+
+// CLASS DECLARATION
+class TMSTarSettings
+    {
+public:
+    // Constructors and destructor
+
+    /**
+     * Two-phased constructor.
+     */
+    static TMSTarSettings* NewL();
+
+    /**
+     * Destructor.
+     */
+    virtual ~TMSTarSettings();
+
+public:
+    // New functions
+
+    void SetTar(TRoutingMsgBufPckg rountingpckg, TBool aPublish = ETrue);
+
+private:
+
+    /**
+     * C++ default constructor.
+     */
+    TMSTarSettings();
+
+    /**
+     * By default Symbian 2nd phase constructor is private.
+     */
+    void ConstructL();
+
+private:
+    gint iVolume; //Volume
+    };
+
+} //namespace TMS
+
+#endif      // TarSETTINGS_H
+
+// End of File
--- a/mmserv/tms/tmscallserver/src/calladpt.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#include <tms.h>
-#include "callipadpt.h"
-#include "callcsadpt.h"
-#include "calladpt.h"
-#include "tmsutility.h"
-
-using namespace TMS;
-
-// -----------------------------------------------------------------------------
-// TMSCallAdpt::TMSCallAdpt
-//
-// -----------------------------------------------------------------------------
-//
-TMSCallAdpt::TMSCallAdpt()
-    {
-    TRACE_PRN_FN_ENT;
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallAdpt::~TMSCallAdpt
-//
-// -----------------------------------------------------------------------------
-//
-TMSCallAdpt::~TMSCallAdpt()
-    {
-    TRACE_PRN_FN_ENT;
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallAdpt::CreateCallL
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallAdpt::CreateCallL(gint callType, TMSCallAdpt*& callAdpt)
-    {
-    TRACE_PRN_FN_ENT;
-    TMSCallAdpt* self(NULL);
-    gint retVal(TMS_RESULT_SUCCESS);
-    switch (callType)
-        {
-        case TMS_CALL_IP:
-            retVal = TMS_RESULT_INSUFFICIENT_MEMORY;
-            self = TMSCallIPAdpt::NewL();
-            if (self)
-                {
-                retVal = self->PostConstruct();
-                if (retVal != TMS_RESULT_SUCCESS)
-                    {
-                    delete self;
-                    self = NULL;
-                    }
-                }
-            break;
-
-        case TMS_CALL_CS:
-            retVal = TMS_RESULT_INSUFFICIENT_MEMORY;
-            self = new TMSCallCSAdpt();
-            if (self)
-                {
-                retVal = self->PostConstruct();
-                if (retVal != TMS_RESULT_SUCCESS)
-                    {
-                    delete self;
-                    self = NULL;
-                    }
-                }
-            break;
-        default:
-            retVal = TMS_RESULT_CALL_TYPE_NOT_SUPPORTED;
-            break;
-        }
-    callAdpt = self;
-    TRACE_PRN_FN_EXT;
-    return retVal;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallAdpt::PostConstruct
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallAdpt::PostConstruct()
-    {
-    return TMS_RESULT_SUCCESS;
-    }
-
-// End of file
--- a/mmserv/tms/tmscallserver/src/callcsadpt.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1276 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#include <tms.h>
-#include <S60FourCC.h>
-#include <AudioPreference.h>
-#include <TelephonyAudioRouting.h>
-#include "csuplink.h"
-#include "csdownlink.h"
-#include "callcsadpt.h"
-#include "tmsutility.h"
-#include "tmsshared.h"
-#include "tmsclientserver.h"
-#include "tarsettings.h"
-#include "cpeaudiodtmftoneplayer.h"
-#include "cspdtmfprovider.h"
-#include "dtmfnotifier.h"
-
-using namespace TMS;
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::TMSCallCSAdpt
-//
-// -----------------------------------------------------------------------------
-//
-TMSCallCSAdpt::TMSCallCSAdpt()
-    {
-    TRACE_PRN_FN_ENT;
-
-    iCSDownlink = NULL;
-    iCSUplink = NULL;
-    iRouting = NULL;
-    iDTMFDnlinkPlayer = NULL;
-    iDTMFUplinkPlayer = NULL;
-    iDTMFNotifier = NULL;
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::~TMSCallCSAdpt
-//
-// -----------------------------------------------------------------------------
-//
-TMSCallCSAdpt::~TMSCallCSAdpt()
-    {
-    TRACE_PRN_FN_ENT;
-    delete iCSDownlink;
-    delete iCSUplink;
-    delete iRouting;
-    delete iTarSettings;
-    delete iDTMFDnlinkPlayer;
-    delete iDTMFUplinkPlayer;
-    delete iDTMFNotifier;
-
-    if (iMsgQueueUp.Handle() > 0)
-        {
-        iMsgQueueUp.Close();
-        }
-
-    if (iMsgQueueDn.Handle() > 0)
-        {
-        iMsgQueueDn.Close();
-        }
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::PostConstruct
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::PostConstruct()
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-    iNextStreamId = 1;
-    iUplinkInitialized = FALSE;
-    iDnlinkInitialized = FALSE;
-
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::CreateStream
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::CreateStream(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint& outStrmId)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-    switch (strmType)
-        {
-        case TMS_STREAM_UPLINK:
-            status = TMS_RESULT_ALREADY_EXIST;
-            if (!iUplinkInitialized)
-                {
-                iUplinkInitialized = TRUE;
-                iUplinkStreamId = iNextStreamId;
-                outStrmId = iUplinkStreamId;
-                iNextStreamId++;
-                iUplinkInitialized = TRUE;
-                status = TMS_RESULT_SUCCESS;
-                }
-            break;
-        case TMS_STREAM_DOWNLINK:
-            status = TMS_RESULT_ALREADY_EXIST;
-            if (!iDnlinkInitialized)
-                {
-                iDnlinkInitialized = TRUE;
-                iDnlinkStreamId = iNextStreamId;
-                outStrmId = iDnlinkStreamId;
-                iNextStreamId++;
-                iDnlinkInitialized = TRUE;
-                status = TMS_RESULT_SUCCESS;
-                }
-            break;
-        default:
-            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
-            break;
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::InitStream
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::InitStreamL(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId, TMSFormatType /*frmtType*/,
-        const RMessage2& aMessage)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-
-    switch (strmType)
-        {
-        case TMS_STREAM_UPLINK:
-            if (strmId == iUplinkStreamId)
-                {
-                // Open message queue handling client-server communication
-                if (iMsgQueueUp.Handle() <= 0)
-                    {
-                    // Third argument in TMSCallProxy::InitStream
-                    status = iMsgQueueUp.Open(aMessage, 1);
-                    }
-                if (status == TMS_RESULT_SUCCESS)
-                    {
-                    TRAP(status, iCSUplink = TMSCSUplink::NewL(*this));
-
-                    if (status == TMS_RESULT_SUCCESS)
-                        {
-                        iDTMFUplinkPlayer =  TMSDTMFProvider::NewL();
-                        iDTMFUplinkPlayer->AddObserverL(*this);
-                        if(!iDTMFNotifier)
-                            {
-                            iDTMFNotifier = TMSDtmfNotifier::NewL();
-                            }
-                        }
-                    }
-                iStrmtype = TMS_STREAM_UPLINK;
-                }
-            else
-                {
-                status = TMS_RESULT_DOES_NOT_EXIST;
-                }
-            break;
-        case TMS_STREAM_DOWNLINK:
-            if (strmId == iDnlinkStreamId)
-                {
-                // Open message queue handling client-server communication
-                if (iMsgQueueDn.Handle() <= 0)
-                    {
-                    // Third argument in TMSCallProxy::InitStream
-                    status = iMsgQueueDn.Open(aMessage, 1);
-                    }
-                if (status == TMS_RESULT_SUCCESS)
-                    {
-                    TRAP(status, iCSDownlink = TMSCSDownlink::NewL(*this));
-                    if (status == TMS_RESULT_SUCCESS)
-                        {
-                        TRAP(status, iRouting =
-                             CTelephonyAudioRouting::NewL(*this));
-                        if (status == TMS_RESULT_SUCCESS)
-                            {
-                            iTarSettings = TMSTarSettings::NewL();
-                            }
-                        if (status == TMS_RESULT_SUCCESS)
-                            {
-                            TRAP(status, iDTMFDnlinkPlayer =
-                                 TMSAudioDtmfTonePlayer::NewL(*this,
-                                 KAudioPrefKeyDownDTMF,
-                                 KAudioPriorityDtmfKeyPress));
-                            if(!iDTMFNotifier)
-                                {
-                                iDTMFNotifier = TMSDtmfNotifier::NewL();
-                                }
-                            }
-                        }
-                    }
-                iStrmtype = TMS_STREAM_DOWNLINK;
-                }
-            else
-                {
-                status = TMS_RESULT_DOES_NOT_EXIST;
-                }
-            break;
-        default:
-            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
-            break;
-        }
-
-    TRACE_PRN_IF_ERR(status);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::StartStream
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::StartStream(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-    switch (strmType)
-        {
-        case TMS_STREAM_UPLINK:
-            if (iCSUplink && strmId == iUplinkStreamId)
-                {
-                iCSUplink->Activate();
-                }
-            break;
-        case TMS_STREAM_DOWNLINK:
-            if (iCSDownlink && strmId == iDnlinkStreamId)
-                {
-                iCSDownlink->Activate();
-                }
-            break;
-        default:
-            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
-            break;
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::PauseStream
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::PauseStream(TMSCallType /*callType*/,
-        TMSStreamType /*strmType*/, gint /*strmId*/)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::StopStream
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::StopStream(TMSCallType /*callType*/, TMSStreamType strmType,
-        gint strmId)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-    switch (strmType)
-        {
-        case TMS_STREAM_UPLINK:
-            if (iCSUplink && strmId == iUplinkStreamId)
-                {
-                iCSUplink->Deactivate();
-                NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete,
-                        status, 0);
-                }
-            break;
-        case TMS_STREAM_DOWNLINK:
-            if (iCSDownlink && strmId == iDnlinkStreamId)
-                {
-                iCSDownlink->Deactivate();
-                NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete,
-                        status, 0);
-                }
-            break;
-        default:
-            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
-            break;
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::DeinitStream
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::DeinitStream(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-    switch (strmType)
-        {
-        case TMS_STREAM_UPLINK:
-            if (iCSUplink && strmId == iUplinkStreamId)
-                {
-                iCSUplink->Deactivate();
-                iUplinkInitialized = FALSE;
-                NotifyClient(iUplinkStreamId, ECmdUplinkDeInitComplete,
-                        status, 0);
-                }
-            break;
-        case TMS_STREAM_DOWNLINK:
-            if (iCSDownlink && strmId == iDnlinkStreamId)
-                {
-                iCSDownlink->Deactivate();
-                iDnlinkInitialized = FALSE;
-                NotifyClient(iDnlinkStreamId, ECmdDownlinkDeInitComplete,
-                        status, 0);
-                }
-            break;
-        default:
-            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
-            break;
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::DeleteStream
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::DeleteStream(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-    switch (strmType)
-        {
-        case TMS_STREAM_UPLINK:
-            if (strmId == iUplinkStreamId)
-                {
-                iUplinkStreamId = -1;
-                iUplinkInitialized = FALSE;
-                }
-            break;
-        case TMS_STREAM_DOWNLINK:
-            if (strmId == iDnlinkStreamId)
-                {
-                iDnlinkStreamId = -1;
-                iDnlinkInitialized = FALSE;
-                }
-            break;
-        default:
-            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
-            break;
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::DataXferBufferEmptied
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::DataXferBufferEmptied(TMSCallType /*callType*/,
-        TMSStreamType /*strmType*/, gint /*strmId*/)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::DataXferBufferFilled
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::DataXferBufferFilled(TMSCallType /*callType*/,
-        TMSStreamType /*strmType*/, gint /*strmId*/, guint /*datasize*/)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetDataXferBufferHndl
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::GetDataXferBufferHndl(const TMSCallType /*callType*/,
-        const TMSStreamType /*strmType*/, const gint /*strmId*/,
-        const guint32 /*key*/, RChunk& /*chunk*/)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetMaxVolume
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::GetMaxVolume(guint& volume)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
-    if (iCSDownlink && iDnlinkInitialized)
-        {
-        volume = iCSDownlink->MaxVolume();
-        status = TMS_RESULT_SUCCESS;
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::SetVolume
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::SetVolume(const guint volume)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
-    if (iCSDownlink && iDnlinkInitialized)
-        {
-        iCSDownlink->SetVolume(volume);
-        status = TMS_RESULT_SUCCESS;
-        NotifyClient(iDnlinkStreamId, ECmdSetVolume, status, 0);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetVolume
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::GetVolume(guint& volume)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
-    if (iCSDownlink && iDnlinkInitialized)
-        {
-        volume = iCSDownlink->Volume();
-        status = TMS_RESULT_SUCCESS;
-        }
-
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetMaxGain
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::GetMaxGain(guint& gain)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
-    if (iCSUplink && iUplinkInitialized)
-        {
-        gain = iCSUplink->MaxGain();
-        status = TMS_RESULT_SUCCESS;
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::SetGain
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::SetGain(const guint gain)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
-    if (iUplinkInitialized)
-        {
-        iCSUplink->SetGain(gain);
-        status = TMS_RESULT_SUCCESS;
-        NotifyClient(iUplinkInitialized, ECmdSetGain, status, 0);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetGain
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::GetGain(guint& gain)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
-    if (iCSUplink && iUplinkInitialized)
-        {
-        gain = iCSUplink->Gain();
-        status = TMS_RESULT_SUCCESS;
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetGlobalMaxVolume
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::GetGlobalMaxVolume(guint& volume)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
-    if (iCSDownlink && iDnlinkInitialized)
-        {
-        volume = iCSDownlink->MaxVolume();
-        status = TMS_RESULT_SUCCESS;
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::SetGlobalVolume
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::SetGlobalVolume(const guint volume)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-
-    iGlobalVol = volume;
-    if (iCSDownlink && iDnlinkInitialized)
-        {
-        iCSDownlink->SetVolume(volume);
-        status = TMS_RESULT_SUCCESS;
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetGlobalVolume
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::GetGlobalVolume(guint& volume)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
-    if (iCSDownlink && iDnlinkInitialized)
-        {
-        volume = iCSDownlink->Volume();
-        status = TMS_RESULT_SUCCESS;
-        }
-
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetMaxGain
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::GetGlobalMaxGain(guint& gain)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
-    if (iCSUplink && iUplinkInitialized)
-        {
-        gain = iCSUplink->MaxGain();
-        status = TMS_RESULT_SUCCESS;
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::SetGain
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::SetGlobalGain(const guint gain)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-
-    iGlobalGain = gain;
-    if (iCSUplink && iUplinkInitialized)
-        {
-        iCSUplink->SetGain(gain);
-        status = TMS_RESULT_SUCCESS;
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetGlobalGain
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::GetGlobalGain(guint& gain)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
-    if (iCSUplink && iUplinkInitialized)
-        {
-        gain = iCSUplink->Gain();
-        status = TMS_RESULT_SUCCESS;
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetCodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::GetCodecMode(const TMSFormatType /*fmttype*/,
-        const TMSStreamType /*strmtype*/, gint& /*mode*/)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::SetCodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::SetCodecMode(const TMSFormatType /*fmttype*/,
-        const TMSStreamType /*strmtype*/, const gint /*mode*/)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetSupportedBitRatesCount
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::GetSupportedBitRatesCount(guint& /*count*/)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetSupportedBitRates
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::GetSupportedBitRates(CBufFlat*& brbuffer)
-    {
-    TRACE_PRN_FN_ENT;
-    TRAPD(status, GetSupportedBitRatesL(brbuffer));
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetSupportedBitRatesL
-//
-// GetSupportedBitRates implementation which can leave.
-// -----------------------------------------------------------------------------
-//
-void TMSCallCSAdpt::GetSupportedBitRatesL(CBufFlat*& /*brbuffer*/)
-    {
-    User::Leave(TMS_RESULT_FEATURE_NOT_SUPPORTED);
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetBitRate
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::GetBitRate(guint& /*bitrate*/)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::SetBitRate
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::SetBitRate(const guint /*bitrate*/)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetVAD
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::GetVAD(const TMSFormatType /*fmttype*/, gboolean& /*vad*/)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::SetVAD
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::SetVAD(const TMSFormatType /*fmttype*/, const gboolean /*vad*/)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetCNG
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::GetCNG(const TMSFormatType /*fmttype*/, gboolean& /*cng*/)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::SetCNG
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::SetCNG(const TMSFormatType /*fmttype*/,
-        const gboolean /*cng*/)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetPlc
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::GetPlc(const TMSFormatType /*fmttype*/, gboolean& /*plc*/)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::SetPlc
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::SetPlc(const TMSFormatType /*fmttype*/,
-        const gboolean /*plc*/)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::SetOutput
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::SetOutput(TMSAudioOutput output)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
-
-    if (iRouting)
-        {
-        CTelephonyAudioRouting::TAudioOutput taroutput = TOTAROUTPUT(output);
-        TRAP(status, iRouting->SetOutputL(taroutput));
-        if (status == KErrArgument)
-            {
-            status = TMS_RESULT_INVALID_ARGUMENT;
-            }
-        else
-            {
-            status = TMS_RESULT_SUCCESS;
-            }
-        }
-
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetOutput
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::GetOutput(TMSAudioOutput& output)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
-
-    if (iRouting)
-        {
-        CTelephonyAudioRouting::TAudioOutput taroutput;
-        taroutput = iRouting->Output();
-        status = TMS_RESULT_SUCCESS;
-        output = TOTMSOUTPUT(taroutput);
-        }
-
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetPreviousOutput
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::GetPreviousOutput(TMSAudioOutput& output)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
-
-    if (iRouting)
-        {
-        CTelephonyAudioRouting::TAudioOutput taroutput;
-        taroutput = iRouting->PreviousOutput();
-        status = TMS_RESULT_SUCCESS;
-        output = TOTMSOUTPUT(taroutput);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetAvailableOutputsL
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::GetAvailableOutputsL(gint& count, CBufFlat*& outputsbuffer)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
-    TMSAudioOutput tmsoutput;
-
-    if (iRouting)
-        {
-        RBufWriteStream stream;
-        stream.Open(*outputsbuffer);
-        CleanupClosePushL(stream);
-
-        TArray<CTelephonyAudioRouting::TAudioOutput> availableOutputs =
-                iRouting->AvailableOutputs();
-
-        guint numOfItems = availableOutputs.Count();
-        count = numOfItems;
-        for (guint i = 0; i < numOfItems; i++)
-            {
-            tmsoutput = TOTMSOUTPUT(availableOutputs[i]);
-            stream.WriteUint32L(tmsoutput);
-            //TRACE_PRN_N1(_L("TMS->CallIPAdpt: outputs: [%d]"), availableOutputs[i]);
-            }
-
-        CleanupStack::PopAndDestroy(&stream);
-        status = TMS_RESULT_SUCCESS;
-        }
-
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::StartDTMF
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::StartDTMF(TMSStreamType strmtype, TDes& dtmfstring)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-
-    TmsMsgBufPckg dtmfpckg;
-
-    if (strmtype == TMS_STREAM_DOWNLINK && iDnlinkInitialized)
-        {
-        if (iDTMFDnlinkPlayer)
-            {
-            iDTMFDnlinkPlayer->PlayDtmfTone(dtmfstring);
-            }
-
-        dtmfpckg().iStatus = TMS_RESULT_SUCCESS;
-        //TMS_EVENT_DTMF_TONE_STARTED;
-        dtmfpckg().iRequest = ECmdDTMFOpenDnlinkComplete;
-        if (iDTMFNotifier)
-            {
-            iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
-            }
-        }
-    else if (strmtype == TMS_STREAM_UPLINK && iUplinkInitialized)
-        {
-        //use etel for uplink
-        if (iDTMFUplinkPlayer)
-            {
-            status = iDTMFUplinkPlayer->SendDtmfToneString(dtmfstring);
-            }
-
-        dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(status);
-        //TMS_EVENT_DTMF_TONE_STARTED;
-        dtmfpckg().iRequest = ECmdDTMFOpenUplinkComplete;
-
-        if (iDTMFNotifier)
-            {
-            iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
-            }
-        }
-
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::StopDTMF
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::StopDTMF(TMSStreamType streamtype)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-
-    if (streamtype == TMS_STREAM_DOWNLINK && iDTMFDnlinkPlayer)
-        {
-        iDTMFDnlinkPlayer->Cancel();
-        }
-    else if (streamtype == TMS_STREAM_UPLINK && iDTMFUplinkPlayer)
-        {
-        status = iDTMFUplinkPlayer->StopDtmfTone();
-        status = TMSUtility::EtelToTMSResult(status);
-        }
-
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::ContinueDTMF
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallCSAdpt::ContinueDTMF(TBool continuesending)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-
-    if (iDTMFUplinkPlayer)
-        {
-        status = iDTMFUplinkPlayer->ContinueDtmfStringSending(continuesending);
-        status = TMSUtility::EtelToTMSResult(status);
-        }
-
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-//From DTMFTonePlayerObserver
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::DTMFInitCompleted
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallCSAdpt::DTMFInitCompleted(TInt /*error*/)
-    {
-    TRACE_PRN_FN_ENT;
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::DTMFToneFinished
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallCSAdpt::DTMFToneFinished(TInt error)
-    {
-    TRACE_PRN_FN_ENT;
-    TmsMsgBufPckg dtmfpckg;
-
-    if (error == KErrUnderflow || error == KErrInUse)
-        {
-        error = TMS_RESULT_SUCCESS;
-        }
-
-    dtmfpckg().iStatus = TMSUtility::TMSResult(error);
-    //TMS_EVENT_DTMF_TONE_STOPPED
-    dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
-    if (iDTMFNotifier)
-        {
-        iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
-        }
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::HandleDTMFEvent
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallCSAdpt::HandleDTMFEvent(
-        const TMSCCPDTMFObserver::TCCPDtmfEvent aEvent, const TInt aError,
-        const TChar /*aTone*/)
-    {
-    TRACE_PRN_FN_ENT;
-    TmsMsgBufPckg dtmfpckg;
-
-    TRACE_PRN_N1(_L("**TMS TMSCallCSAdpt::HandleDTMFEvent error:%d"),aError);
-
-    dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(aError);
-
-    switch (aEvent)
-        {
-            /** Unknown */
-        case ECCPDtmfUnknown:
-            break;
-            /** DTMF sending started manually */
-        case ECCPDtmfManualStart:
-            /** Automatic DTMF sending initialized */
-        case ECCPDtmfSequenceStart:
-            //TMS_EVENT_DTMF_TONE_STARTED
-            dtmfpckg().iRequest = ECmdDTMFOpenUplinkComplete;
-            break;
-
-            /** DTMF sending stopped manually */
-        case ECCPDtmfManualStop:
-            //break;
-            /** DTMF sending aborted manually */
-        case ECCPDtmfManualAbort:
-            //break;
-            /** Automatic DTMF sending stopped */
-        case ECCPDtmfSequenceStop:
-            //break;
-            /** Automatic DTMF sending aborted */
-        case ECCPDtmfSequenceAbort:
-            //break;
-            /** There was stop mark in DTMF string */
-        case ECCPDtmfStopInDtmfString:
-            //break;
-            /** DTMF sending completed succesfully */
-        case ECCPDtmfStringSendingCompleted:
-            //TMS_EVENT_DTMF_TONE_STOPPED
-            dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
-            break;
-        default:
-            break;
-        }
-
-    if (iDTMFNotifier)
-        {
-        iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// From TMSCSPDevSoundObserver
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::DownlinkInitCompleted
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallCSAdpt::DownlinkInitCompleted(TInt status)
-    {
-    TRACE_PRN_FN_ENT;
-    NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status, 0);
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::UplinkInitCompleted
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallCSAdpt::UplinkInitCompleted(TInt status)
-    {
-    TRACE_PRN_FN_ENT;
-    NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status, 0);
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::UplinkActivatedSuccessfully
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallCSAdpt::UplinkActivatedSuccessfully()
-    {
-    TRACE_PRN_FN_ENT;
-    NotifyClient(iUplinkStreamId, ECmdUplinkStarted, KErrNone, 0);
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::DownlinkActivatedSuccessfully
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallCSAdpt::DownlinkActivatedSuccessfully()
-    {
-    TRACE_PRN_FN_ENT;
-    NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, KErrNone, 0);
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::UplinkActivationFailed
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallCSAdpt::UplinkActivationFailed()
-    {
-    TRACE_PRN_FN_ENT;
-    NotifyClient(iUplinkStreamId, ECmdUplinkStarted, TMS_RESULT_FATAL_ERROR, 0);
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::DownlinkActivationFailed
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallCSAdpt::DownlinkActivationFailed()
-    {
-    TRACE_PRN_FN_ENT;
-    NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted,
-            TMS_RESULT_FATAL_ERROR, 0);
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::AvailableOutputsChanged
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallCSAdpt::AvailableOutputsChanged(
-        CTelephonyAudioRouting& /*aTelephonyAudioRouting*/)
-    {
-    TRACE_PRN_FN_ENT;
-    TRoutingMsgBufPckg pckg;
-    pckg().iEvent = TMS_EVENT_ROUTING_AVAIL_OUTPUTS_CHANGED;
-    iTarSettings->SetTar(pckg, ETrue);
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::OutputChanged
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallCSAdpt::OutputChanged(
-        CTelephonyAudioRouting& aTelephonyAudioRouting)
-    {
-    TRACE_PRN_FN_ENT;
-    TRoutingMsgBufPckg pckg;
-    pckg().iEvent = TMS_EVENT_ROUTING_OUTPUT_CHANGED;
-    pckg().iOutput = TOTMSOUTPUT(aTelephonyAudioRouting.Output());
-    iTarSettings->SetTar(pckg, ETrue);
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::SetOutputComplete
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallCSAdpt::SetOutputComplete(
-        CTelephonyAudioRouting& aTelephonyAudioRouting, gint /*aError*/)
-    {
-    TRACE_PRN_FN_ENT;
-    TRoutingMsgBufPckg pckg;
-    pckg().iEvent = TMS_EVENT_ROUTING_SET_OUTPUT_COMPLETE;
-    pckg().iOutput = TOTMSOUTPUT(aTelephonyAudioRouting.Output());
-    if (iTarSettings)
-        {
-        iTarSettings->SetTar(pckg, ETrue);
-        }
-    //TRACE_PRN_IF_ERR(aError);
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::NotifyClient
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallCSAdpt::NotifyClient(const gint strmId, const gint aCommand,
-        const gint aStatus, const gint64 /*aInt64*/)
-    {
-    iMsgBuffer.iRequest = aCommand;
-    iMsgBuffer.iStatus = aStatus;
-
-    if (strmId == iUplinkStreamId)
-        {
-        iMsgQueueUp.Send(iMsgBuffer);
-        }
-    else if (strmId == iDnlinkStreamId)
-        {
-        iMsgQueueDn.Send(iMsgBuffer);
-        }
-    }
-
-// End of file
--- a/mmserv/tms/tmscallserver/src/callipadpt.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1536 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#include <AudioPreference.h>
-#include "tmsutility.h"
-#include "tmsclientserver.h"
-#include "tmsshared.h"
-#include "ipcallstream.h"
-#include "callipadpt.h"
-
-using namespace TMS;
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::NewL
-// Symbian constructor.
-// -----------------------------------------------------------------------------
-//
-TMSCallIPAdpt* TMSCallIPAdpt::NewL()
-    {
-    TMSCallIPAdpt* self = new (ELeave) TMSCallIPAdpt();
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::ConstructL
-// 2-nd phase constructor.
-// -----------------------------------------------------------------------------
-//
-void TMSCallIPAdpt::ConstructL()
-    {
-    TRACE_PRN_FN_ENT;
-    iIPUplink = NULL;
-    iIPDownlink = NULL;
-    iDTMFDnlinkPlayer = NULL;
-    iDTMFUplinkPlayer = NULL;
-    iDTMFNotifier = NULL;
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::TMSCallIPAdpt
-//
-// -----------------------------------------------------------------------------
-//
-TMSCallIPAdpt::TMSCallIPAdpt()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::~TMSCallIPAdpt
-//
-// -----------------------------------------------------------------------------
-//
-TMSCallIPAdpt::~TMSCallIPAdpt()
-    {
-    TRACE_PRN_FN_ENT;
-
-    iCodecs.Reset();
-    iCodecs.Close();
-    iArrBitrates.Reset();
-    delete iDTMFUplinkPlayer;
-    delete iDTMFDnlinkPlayer;
-    delete iDTMFNotifier;
-    delete iIPUplink;
-    delete iIPDownlink;
-
-    if (iMsgQueueUp.Handle() > 0)
-        {
-        iMsgQueueUp.Close();
-        }
-    if (iMsgQueueDn.Handle() > 0)
-        {
-        iMsgQueueDn.Close();
-        }
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::PostConstruct
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::PostConstruct()
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-    iNextStreamId = 1;
-    iUplinkInitialized = FALSE;
-    iDnlinkInitialized = FALSE;
-
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::CreateStream
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::CreateStream(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint& outStrmId)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-    switch (strmType)
-        {
-        case TMS_STREAM_UPLINK:
-            {
-            status = TMS_RESULT_ALREADY_EXIST;
-            if (!iUplinkInitialized)
-                {
-                iUplinkInitialized = TRUE;
-                iUplinkStreamId = iNextStreamId;
-                outStrmId = iUplinkStreamId;
-                iNextStreamId++;
-                status = TMS_RESULT_SUCCESS;
-                }
-            break;
-            }
-        case TMS_STREAM_DOWNLINK:
-            {
-            status = TMS_RESULT_ALREADY_EXIST;
-            if (!iDnlinkInitialized)
-                {
-                iDnlinkInitialized = TRUE;
-                iDnlinkStreamId = iNextStreamId;
-                outStrmId = iDnlinkStreamId;
-                iNextStreamId++;
-                status = TMS_RESULT_SUCCESS;
-                }
-            break;
-            }
-        default:
-            {
-            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
-            break;
-            }
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::InitStream
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::InitStreamL(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId, TMSFormatType frmtType,
-        const RMessage2& aMessage)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-
-    TUint32 fourCC = TOFOURCC(frmtType);
-    if (fourCC == NULL)
-        {
-        return TMS_RESULT_INVALID_ARGUMENT;
-        }
-
-    switch (strmType)
-        {
-        case TMS_STREAM_UPLINK:
-            {
-            status = TMS_RESULT_DOES_NOT_EXIST;
-            if (strmId == iUplinkStreamId)
-                {
-                SetFormat(iUplinkStreamId, fourCC);
-                status = OpenUplinkL(aMessage);
-
-                iDTMFUplinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this,
-                        KAudioPrefUnknownVoipAudioUplink,
-                        KAudioPriorityUnknownVoipAudioUplink);
-
-                if(!iDTMFNotifier)
-                    {
-                    iDTMFNotifier = TMSDtmfNotifier::NewL();
-                    }
-
-                NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
-                }
-            break;
-            }
-        case TMS_STREAM_DOWNLINK:
-            {
-            status = TMS_RESULT_DOES_NOT_EXIST;
-            if (strmId == iDnlinkStreamId)
-                {
-                SetFormat(iDnlinkStreamId, fourCC);
-                status = OpenDownlinkL(aMessage);
-
-                iDTMFDnlinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this,
-                        KAudioPrefUnknownVoipAudioDownlink,
-                        KAudioPriorityUnknownVoipAudioDownlink);
-
-                if(!iDTMFNotifier)
-                    {
-                    iDTMFNotifier = TMSDtmfNotifier::NewL();
-                    }
-
-                NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
-                }
-            break;
-            }
-        default:
-            {
-            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
-            break;
-            }
-        }
-
-    TRACE_PRN_IF_ERR(status);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::StartStream
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::StartStream(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    switch (strmType)
-        {
-        case TMS_STREAM_UPLINK:
-            {
-            if (strmId == iUplinkStreamId && iIPUplink)
-                {
-                iIPUplink->Start();
-                status = TMS_RESULT_SUCCESS;
-                NotifyClient(iUplinkStreamId, ECmdUplinkStarted, status);
-                }
-            break;
-            }
-        case TMS_STREAM_DOWNLINK:
-            {
-            if (strmId == iDnlinkStreamId && iIPDownlink)
-                {
-                iIPDownlink->Start();
-                status = TMS_RESULT_SUCCESS;
-                NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, status);
-                }
-            break;
-            }
-        default:
-            {
-            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
-            break;
-            }
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::PauseStream
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::PauseStream(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    switch (strmType)
-        {
-        case TMS_STREAM_UPLINK:
-            {
-            if (strmId == iUplinkStreamId && iIPUplink)
-                {
-                iIPUplink->Stop();
-                status = TMS_RESULT_SUCCESS;
-                NotifyClient(iUplinkStreamId, ECmdUplinkPaused, status);
-                }
-            break;
-            }
-        case TMS_STREAM_DOWNLINK:
-            {
-            if (strmId == iDnlinkStreamId && iIPDownlink)
-                {
-                iIPDownlink->Stop();
-                status = TMS_RESULT_SUCCESS;
-                NotifyClient(iDnlinkStreamId, ECmdDownlinkPaused, status);
-                }
-            break;
-            }
-        default:
-            {
-            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
-            break;
-            }
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::StopStream
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::StopStream(TMSCallType /*callType*/, TMSStreamType strmType,
-        gint strmId)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-
-    switch (strmType)
-        {
-        case TMS_STREAM_UPLINK:
-            {
-            if (strmId == iUplinkStreamId && iIPUplink)
-                {
-                iIPUplink->Stop();
-                status = TMS_RESULT_SUCCESS;
-                NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
-                }
-            break;
-            }
-        case TMS_STREAM_DOWNLINK:
-            {
-            if (strmId == iDnlinkStreamId && iIPDownlink)
-                {
-                iIPDownlink->Stop();
-                status = TMS_RESULT_SUCCESS;
-                NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
-                }
-            break;
-            }
-        default:
-            {
-            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
-            break;
-            }
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::DeinitStream
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::DeinitStream(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-
-    switch (strmType)
-        {
-        case TMS_STREAM_UPLINK:
-            {
-            if (strmId == iUplinkStreamId && iIPUplink)
-                {
-                iIPUplink->Stop();
-                //iUplinkStreamId = -1;
-                iUplinkInitialized = FALSE;
-                status = TMS_RESULT_SUCCESS;
-                NotifyClient(iUplinkStreamId, ECmdDownlinkDeInitComplete,
-                        status);
-                }
-            break;
-            }
-        case TMS_STREAM_DOWNLINK:
-            {
-            if (strmId == iDnlinkStreamId && iIPDownlink)
-                {
-                iIPDownlink->Stop();
-                //iDnlinkStreamId = -1;
-                iDnlinkInitialized = FALSE;
-                status = TMS_RESULT_SUCCESS;
-                NotifyClient(iDnlinkStreamId, ECmdDownlinkDeInitComplete,
-                        status);
-                }
-            break;
-            }
-        default:
-            {
-            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
-            break;
-            }
-        }
-
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::DeleteStream
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::DeleteStream(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-    switch (strmType)
-        {
-        case TMS_STREAM_UPLINK:
-            {
-            // This is additional error checking
-            if (strmId == iUplinkStreamId)
-                {
-                iUplinkStreamId = -1;
-                iUplinkInitialized = FALSE;
-                }
-            break;
-            }
-        case TMS_STREAM_DOWNLINK:
-            {
-            // This is additional error checking
-            if (strmId == iDnlinkStreamId)
-                {
-                iDnlinkStreamId = -1;
-                iDnlinkInitialized = FALSE;
-                }
-            break;
-            }
-        default:
-            {
-            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
-            break;
-            }
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::DataXferBufferEmptied
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::DataXferBufferEmptied(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-    switch (strmType)
-        {
-        case TMS_STREAM_UPLINK:
-            {
-            if (strmId == iUplinkStreamId)
-                {
-                TRAP(status, BufferEmptiedL());
-                }
-            break;
-            }
-        case TMS_STREAM_DOWNLINK:
-            status = TMS_RESULT_ILLEGAL_OPERATION;
-            break;
-        default:
-            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
-            break;
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::DataXferBufferFilled
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::DataXferBufferFilled(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId, guint datasize)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-    switch (strmType)
-        {
-        case TMS_STREAM_DOWNLINK:
-            if (strmId == iDnlinkStreamId)
-                {
-                TRAP(status, BufferFilledL(datasize));
-                }
-            break;
-        case TMS_STREAM_UPLINK:
-            status = TMS_RESULT_ILLEGAL_OPERATION;
-            break;
-        default:
-            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
-            break;
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetDataXferBufferHndl
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetDataXferBufferHndl(const TMSCallType /*callType*/,
-        const TMSStreamType strmType, const gint strmId, const guint32 key,
-        RChunk& chunk)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-    switch (strmType)
-        {
-        case TMS_STREAM_DOWNLINK:
-            {
-            if (strmId == iDnlinkStreamId)
-                {
-                TRAP(status, GetDataXferChunkHndl(strmType, key, chunk));
-                }
-            break;
-            }
-        case TMS_STREAM_UPLINK:
-            {
-            if (strmId == iUplinkStreamId)
-                {
-                TRAP(status, GetDataXferChunkHndl(strmType, key, chunk));
-                }
-            break;
-            }
-        default:
-            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
-            break;
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetMaxVolume
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetMaxVolume(guint& volume)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-
-    if (iDnlinkInitialized && iIPDownlink)
-        {
-        status = iIPDownlink->GetMaxVolume(volume);
-        iMaxVolume = volume;
-        TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt: GetMaxVolume [%d]"), iMaxVolume);
-        }
-
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::SetVolume
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::SetVolume(const guint volume)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iDnlinkInitialized && iIPDownlink)
-        {
-        status = iIPDownlink->SetVolume(volume);
-        NotifyClient(iDnlinkStreamId, ECmdSetVolume, status);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetVolume
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetVolume(guint& volume)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iDnlinkInitialized && iIPDownlink)
-        {
-        status = iIPDownlink->GetVolume(volume);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetMaxGain
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetMaxGain(guint& gain)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iUplinkInitialized && iIPUplink)
-        {
-        status = iIPUplink->GetMaxGain(gain);
-        iMaxGain = gain;
-        TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt::GetMaxGain [%d]"), iMaxGain);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::SetGain
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::SetGain(const guint gain)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iUplinkInitialized && iIPUplink)
-        {
-        status = iIPUplink->SetGain(gain);
-        NotifyClient(iUplinkStreamId, ECmdSetGain, status);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetGain
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetGain(guint& gain)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iUplinkInitialized && iIPUplink)
-        {
-        status = iIPUplink->GetGain(gain);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetGlobalMaxVolume
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetGlobalMaxVolume(guint& volume)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iDnlinkInitialized && iIPDownlink)
-        {
-        status = iIPDownlink->GetMaxVolume(volume);
-        iMaxVolume = volume;
-        TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt: GetMaxVolume [%d]"), iMaxVolume);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::SetGlobalVolume
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::SetGlobalVolume(const guint volume)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iDnlinkInitialized && iIPDownlink)
-        {
-        status = iIPDownlink->SetVolume(volume);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetGlobalVolume
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetGlobalVolume(guint& volume)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iDnlinkInitialized && iIPDownlink)
-        {
-        status = iIPDownlink->GetVolume(volume);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetGlobalMaxGain
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetGlobalMaxGain(guint& gain)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iUplinkInitialized && iIPUplink)
-        {
-        status = iIPUplink->GetMaxGain(gain);
-        iMaxGain = gain;
-        TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt::GetMaxGain [%d]"), iMaxGain);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::SetGlobalGain
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::SetGlobalGain(const guint gain)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iUplinkInitialized && iIPUplink)
-        {
-        status = iIPUplink->SetGain(gain);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetGlobalGain
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetGlobalGain(guint& gain)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iUplinkInitialized && iIPUplink)
-        {
-        status = iIPUplink->GetGain(gain);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetCodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetCodecMode(const TMSFormatType fmttype,
-        const TMSStreamType strmtype, gint& mode)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-    switch (fmttype)
-        {
-        case TMS_FORMAT_ILBC:
-            status = GetIlbcCodecMode(mode, strmtype);
-            break;
-        case TMS_FORMAT_G711:
-            status = GetG711CodecMode(mode, strmtype);
-            break;
-        default:
-            status = TMS_RESULT_FORMAT_TYPE_NOT_SUPPORTED;
-            break;
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::SetCodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::SetCodecMode(const TMSFormatType fmttype,
-        const TMSStreamType strmtype, const gint mode)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-    switch (fmttype)
-        {
-        case TMS_FORMAT_ILBC:
-            status = SetIlbcCodecMode(mode, strmtype);
-            break;
-        case TMS_FORMAT_G711:
-            status = SetG711CodecMode(mode, strmtype);
-            break;
-        default:
-            status = TMS_RESULT_FORMAT_TYPE_NOT_SUPPORTED;
-            break;
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetSupportedBitRatesCount
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetSupportedBitRatesCount(guint& count)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iIPUplink)
-        {
-        status = iIPUplink->GetSupportedBitrates(iArrBitrates);
-        count = iArrBitrates.Count();
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetSupportedBitRates
-//
-// Bitrates are already returned from the codec as a result of call to
-// GetSupportedBitratesCount(). Just pack them into a descriptor and return
-// back to the client.
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetSupportedBitRates(CBufFlat*& brbuffer)
-    {
-    TRAPD(status, GetSupportedBitRatesL(brbuffer));
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetSupportedBitRatesL
-//
-// GetSupportedBitRates implementation which can leave.
-// -----------------------------------------------------------------------------
-//
-void TMSCallIPAdpt::GetSupportedBitRatesL(CBufFlat*& brbuffer)
-    {
-    TRACE_PRN_FN_ENT;
-    RBufWriteStream stream;
-    stream.Open(*brbuffer);
-    CleanupClosePushL(stream);
-    guint numOfItems = iArrBitrates.Count();
-
-    for (guint i = 0; i < numOfItems; i++)
-        {
-        stream.WriteUint32L(iArrBitrates[i]);
-        //TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt: BR: [%d]"), iArrBitrates[i]);
-        }
-
-    CleanupStack::PopAndDestroy(&stream);
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetBitRate
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetBitRate(guint& bitrate)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iIPUplink)
-        {
-        status = iIPUplink->GetBitrate(bitrate);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::SetBitRate
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::SetBitRate(const guint bitrate)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iIPUplink)
-        {
-        status = iIPUplink->SetBitrate(bitrate);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetVAD
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetVAD(const TMSFormatType fmttype, gboolean& vad)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iIPUplink)
-        {
-        status = iIPUplink->GetVad(fmttype, vad);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::SetVAD
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::SetVAD(const TMSFormatType fmttype, const gboolean vad)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iIPUplink)
-        {
-        status = iIPUplink->SetVad(fmttype, vad);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetCNG
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetCNG(const TMSFormatType fmttype, gboolean& cng)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iIPDownlink)
-        {
-        status = iIPDownlink->GetCng(fmttype, cng);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::SetCNG
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::SetCNG(const TMSFormatType fmttype, const gboolean cng)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iIPDownlink)
-        {
-        status = iIPDownlink->SetCng(fmttype, cng);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetPlc
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetPlc(const TMSFormatType fmttype, gboolean& plc)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iIPDownlink)
-        {
-        status = iIPDownlink->GetPlc(fmttype, plc);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::SetPlc
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::SetPlc(const TMSFormatType fmttype, const gboolean plc)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_INVALID_STATE);
-    if (iIPDownlink)
-        {
-        status = iIPDownlink->SetPlc(fmttype, plc);
-        }
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::OpenDownlinkL
-// Method for player initialization.
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::OpenDownlinkL(const RMessage2& aMessage)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-
-    // Clients must have MultimediaDD capability to use this priority/pref.
-    // TODO: Also, TMS will monitor for emergency call and if detected it
-    //       will deny access to audio resources.
-    iPriority.iPref = KAudioPrefVoipAudioDownlink;
-    iPriority.iPriority = KAudioPriorityVoipAudioDownlink;
-
-    if (!iIPDownlink)
-        {
-        iIPDownlink = TMSIPDownlink::NewL(iDnFourCC, iPriority);
-        }
-
-    if (iIPDownlink)
-        {
-        // Open message queue for handling server notifications to the client
-        if (iMsgQueueDn.Handle() <= 0)
-            {
-            // Second argument in TMSCallProxy::InitStream
-            status = iMsgQueueDn.Open(aMessage, 1);
-            }
-
-        if (status == TMS_RESULT_SUCCESS)
-            {
-            // For transfer data buffer processing
-            iIPDownlink->SetMsgQueue(iMsgQueueDn);
-            }
-        }
-
-    TRACE_PRN_IF_ERR(status);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::OpenUplinkL
-// Method for recorder initialization.
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::OpenUplinkL(const RMessage2& aMessage)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-
-    // Ensure clients have MultimediaDD capability to use this priority/pref
-    iPriority.iPref = KAudioPrefVoipAudioUplink;
-    iPriority.iPriority = KAudioPriorityVoipAudioUplink;
-
-    if (!iIPUplink)
-        {
-        iIPUplink = TMSIPUplink::NewL(iUpFourCC, iPriority);
-        }
-
-    if (iIPUplink)
-        {
-        // Open message queue for handling server notifications to the client
-        if (iMsgQueueUp.Handle() <= 0)
-            {
-            // Second argument in TMSCallProxy::InitStream
-            status = iMsgQueueUp.Open(aMessage, 1);
-            }
-
-        if (status == TMS_RESULT_SUCCESS)
-            {
-            // For transfer data buffer processing
-            iIPUplink->SetMsgQueue(iMsgQueueUp);
-            }
-        }
-
-    TRACE_PRN_IF_ERR(status);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::SetFormat
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallIPAdpt::SetFormat(const gint strmId, const TUint32 aFormat)
-    {
-    if (strmId == iUplinkStreamId)
-        {
-        iUpFourCC = aFormat;
-        }
-    else if (strmId == iDnlinkStreamId)
-        {
-        iDnFourCC = aFormat;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::BufferFilled
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallIPAdpt::BufferFilledL(TUint dataSize)
-    {
-    if (iIPDownlink)
-        {
-        iIPDownlink->BufferFilled(dataSize);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::BufferEmptied
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallIPAdpt::BufferEmptiedL()
-    {
-    if (iIPUplink)
-        {
-        iIPUplink->BufferEmptied();
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetDataXferChunkHndl
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetDataXferChunkHndl(const TMSStreamType strmType,
-        const TUint32 key, RChunk& chunk)
-    {
-    TRACE_PRN_FN_ENT;
-
-    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
-    switch (strmType)
-        {
-        case TMS_STREAM_DOWNLINK:
-            {
-            if (iIPDownlink)
-                {
-                status = iIPDownlink->GetDataXferChunkHndl(key, chunk);
-                }
-            break;
-            }
-        case TMS_STREAM_UPLINK:
-            {
-            if (iIPUplink)
-                {
-                status = iIPUplink->GetDataXferChunkHndl(key, chunk);
-                }
-            break;
-            }
-        default:
-            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
-            break;
-        }
-
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::SetIlbcCodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::SetIlbcCodecMode(const gint mode,
-        const TMSStreamType strmtype)
-    {
-    gint status(TMS_RESULT_INVALID_ARGUMENT);
-
-    if (strmtype == TMS_STREAM_DOWNLINK)
-        {
-        if (iDnlinkInitialized && iIPDownlink)
-            {
-            status = iIPDownlink->SetIlbcCodecMode(mode);
-            }
-        }
-    else if (strmtype == TMS_STREAM_UPLINK)
-        {
-        if (iUplinkInitialized && iIPUplink)
-            {
-            status = iIPUplink->SetIlbcCodecMode(mode);
-            }
-        }
-
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetIlbcCodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetIlbcCodecMode(gint& mode, const TMSStreamType strmtype)
-    {
-    gint status(TMS_RESULT_INVALID_ARGUMENT);
-
-    if (strmtype == TMS_STREAM_DOWNLINK)
-        {
-        if (iDnlinkInitialized && iIPDownlink)
-            {
-            status = iIPDownlink->GetIlbcCodecMode(mode);
-            }
-        }
-    else if (strmtype == TMS_STREAM_UPLINK)
-        {
-        if (iUplinkInitialized && iIPUplink)
-            {
-            status = iIPUplink->GetIlbcCodecMode(mode);
-            }
-        }
-
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::SetG711CodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::SetG711CodecMode(const gint mode,
-        const TMSStreamType strmtype)
-    {
-    gint status(TMS_RESULT_INVALID_ARGUMENT);
-
-    if (strmtype == TMS_STREAM_DOWNLINK)
-        {
-        if (iDnlinkInitialized && iIPDownlink)
-            {
-            status = iIPDownlink->SetG711CodecMode(mode);
-            }
-        }
-    else if (strmtype == TMS_STREAM_UPLINK)
-        {
-        if (iUplinkInitialized && iIPUplink)
-            {
-            status = iIPUplink->SetG711CodecMode(mode);
-            }
-        }
-
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetG711CodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetG711CodecMode(gint& mode, const TMSStreamType strmtype)
-    {
-    gint status(TMS_RESULT_INVALID_ARGUMENT);
-
-    if (strmtype == TMS_STREAM_DOWNLINK)
-        {
-        if (iDnlinkInitialized && iIPDownlink)
-            {
-            status = iIPDownlink->GetG711CodecMode(mode);
-            }
-        }
-    else if (strmtype == TMS_STREAM_UPLINK)
-        {
-        if (iUplinkInitialized && iIPUplink)
-            {
-            status = iIPUplink->GetG711CodecMode(mode);
-            }
-        }
-
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::FrameModeRequiredForEC
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::FrameModeRqrdForEC(gboolean& frmodereq)
-    {
-    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
-    if (iIPDownlink)
-        {
-        status = iIPDownlink->FrameModeRqrdForEC(frmodereq);
-        }
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::SetFrameMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::SetFrameMode(const gboolean frmode)
-    {
-    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
-    if (iIPDownlink)
-        {
-        status = iIPDownlink->SetFrameMode(frmode);
-        }
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetFrameMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetFrameMode(gboolean& frmode)
-    {
-    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
-    if (iIPDownlink)
-        {
-        status = iIPDownlink->GetFrameMode(frmode);
-        }
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::ConcealErrorForNextBuffer
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::ConcealErrorForNextBuffer()
-    {
-    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
-    if (iIPDownlink)
-        {
-        status = iIPDownlink->ConcealErrorForNextBuffer();
-        }
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::BadLsfNextBuffer
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::BadLsfNextBuffer()
-    {
-    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
-    if (iIPDownlink)
-        {
-        status = iIPDownlink->BadLsfNextBuffer();
-        }
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::SetOutput
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::SetOutput(TMSAudioOutput output)
-    {
-    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
-    if (iDnlinkInitialized && iIPDownlink)
-        {
-        TRAP(status, iIPDownlink->SetAudioDeviceL(output));
-        }
-    return status;
-    }
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetOutput
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetOutput(TMSAudioOutput& output)
-    {
-    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
-    if (iDnlinkInitialized && iIPDownlink)
-        {
-        TRAP(status, iIPDownlink->GetAudioDeviceL(output));
-        }
-    return status;
-    }
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetPreviousOutput
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetPreviousOutput(TMSAudioOutput& /*output*/)
-    {
-    return TMS_RESULT_FEATURE_NOT_SUPPORTED;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::GetAvailableOutputsL
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::GetAvailableOutputsL(gint& /*count*/,
-        CBufFlat*& /*outputsbuffer*/)
-    {
-    return TMS_RESULT_FEATURE_NOT_SUPPORTED;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::StartDTMF
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::StartDTMF(TMSStreamType strmtype, TDes& dtmfstring)
-    {
-    TRACE_PRN_FN_ENT;
-    TmsMsgBufPckg dtmfpckg;
-    if (strmtype == TMS_STREAM_DOWNLINK)
-        {
-        if (iDTMFDnlinkPlayer /*&& iDTMFDnlinkStatus*/)
-            {
-            iDTMFDnlinkPlayer->PlayDtmfTone(dtmfstring);
-            dtmfpckg().iStatus = TMS_RESULT_SUCCESS;
-            //TMS_EVENT_DTMF_TONE_STARTED
-            dtmfpckg().iRequest = ECmdDTMFOpenDnlinkComplete;
-            }
-        }
-    else if (strmtype == TMS_STREAM_UPLINK)
-        {
-        if (iDTMFUplinkPlayer /*&& iDTMFUplinkStatus*/)
-            {
-            iDTMFUplinkPlayer->PlayDtmfTone(dtmfstring);
-            dtmfpckg().iStatus = TMS_RESULT_SUCCESS;
-            //TMS_EVENT_DTMF_TONE_STARTED
-            dtmfpckg().iRequest = ECmdDTMFOpenUplinkComplete;
-            }
-        }
-
-    if (iDTMFNotifier)
-        {
-        iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
-        }
-    TRACE_PRN_FN_EXT;
-    return TMS_RESULT_SUCCESS;
-    }
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::StopDTMF
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::StopDTMF(TMSStreamType streamtype)
-    {
-    TRACE_PRN_FN_ENT;
-
-    if (streamtype == TMS_STREAM_DOWNLINK)
-        {
-        iDTMFDnlinkPlayer->Cancel();
-        }
-    else
-        {
-        iDTMFUplinkPlayer->Cancel();
-        }
-
-    TRACE_PRN_FN_EXT;
-    return TMS_RESULT_SUCCESS;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::ContinueDTMF
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallIPAdpt::ContinueDTMF(TBool /*continuesending*/)
-    {
-    TRACE_PRN_FN_ENT;
-    TRACE_PRN_FN_EXT;
-    return TMS_RESULT_FEATURE_NOT_SUPPORTED;
-    }
-
-//From DTMFTonePlayerObserver
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::DTMFInitCompleted
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallIPAdpt::DTMFInitCompleted(TInt /*error*/)
-    {
-    //DTMF init status
-    TRACE_PRN_FN_ENT;
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::DTMFToneFinished
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallIPAdpt::DTMFToneFinished(TInt error)
-    {
-    TRACE_PRN_FN_ENT;
-    TmsMsgBufPckg dtmfpckg;
-
-     if(error == KErrUnderflow || error == KErrInUse)
-         {
-         error = TMS_RESULT_SUCCESS;
-         }
-
-    dtmfpckg().iStatus = error;
-    //TMS_EVENT_DTMF_TONE_STOPPED
-    dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
-    if (iDTMFNotifier)
-        {
-        iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallIPAdpt::NotifyClient
-// -----------------------------------------------------------------------------
-//
-void TMSCallIPAdpt::NotifyClient(const gint strmId, const TInt aCommand,
-        const TInt aStatus, const TInt64 /*aInt64*/)
-    {
-    iMsgBuffer.iRequest = aCommand;
-    iMsgBuffer.iStatus = aStatus;
-
-    if (strmId == iUplinkStreamId)
-        {
-        iMsgQueueUp.Send(iMsgBuffer);
-        }
-    else if (strmId == iDnlinkStreamId)
-        {
-        iMsgQueueDn.Send(iMsgBuffer);
-        }
-    }
-
-// End of file
--- a/mmserv/tms/tmscallserver/src/cpeaudiodtmftoneplayer.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,281 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-// INCLUDE FILES
-#include <mdaaudiotoneplayer.h>
-#include <AudioPreference.h>
-#include "tmsutility.h"
-#include "cpeaudiodtmftoneplayer.h"
-
-// CONSTANTS
-const gint KBufSize = 10;
-const gint KMaxVolumeLevel = 10;
-
-_LIT(KPhoneTone_Asterisk, "*+w");
-
-//from voip
-const guint KDTMFToneLengthOn = 250000;
-const guint KDTMFToneLengthOff = 50000;
-const guint KDTMFToneLengthPause = 2500000;
-
-using namespace TMS;
-
-// -----------------------------------------------------------------------------
-// TMSAudioDtmfTonePlayer::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-TMSAudioDtmfTonePlayer* TMSAudioDtmfTonePlayer::NewL(
-        TMSDTMFTonePlayerObserver& obsrvr, guint aAudioPreference,
-        guint aAudioPriority)
-    {
-    //iObserver = obsrvr;
-    TMSAudioDtmfTonePlayer* self = new (ELeave) TMSAudioDtmfTonePlayer(
-            obsrvr, aAudioPreference, aAudioPriority);
-
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-//Destructor
-TMSAudioDtmfTonePlayer::~TMSAudioDtmfTonePlayer()
-    {
-    TRACE_PRN_FN_ENT;
-    Cancel();
-    delete iDTMFPlayer;
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioDtmfTonePlayer::TMSAudioDtmfTonePlayer
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-TMSAudioDtmfTonePlayer::TMSAudioDtmfTonePlayer(
-        TMSDTMFTonePlayerObserver& obsrvr, guint aAudioPreference,
-        guint aAudioPriority) :
-    iObserver(obsrvr),
-    iPref(aAudioPreference),
-    iPrior(aAudioPriority)
-    {
-    TRACE_PRN_FN_ENT;
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioDtmfTonePlayer::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void TMSAudioDtmfTonePlayer::ConstructL()
-    {
-    TRACE_PRN_FN_ENT;
-
-    TMMFPrioritySettings dtmfClickPlayerPrioritySettings;
-    iDTMFPlayer = CMMFDevSound::NewL();
-    iDTMFPlayer->InitializeL(*this, EMMFStateTonePlaying);
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioDtmfTonePlayer::SetVolume
-// Sets the volume level that is used when the dtmf tone is played.
-// -----------------------------------------------------------------------------
-//
-void TMSAudioDtmfTonePlayer::SetVolume(gint aVolume)
-    {
-    TRACE_PRN_FN_ENT;
-    gint vol = ConvertVolume(aVolume);
-
-    if (vol != iVolume)
-        {
-        iVolume = vol;
-        iDTMFPlayer->SetVolume(iVolume);
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioDtmfTonePlayer::PlayDtmfTone
-// Searches the given DTMF tone from iToneArray and calls PlayCurrentTone
-// member function.
-// -----------------------------------------------------------------------------
-//
-void TMSAudioDtmfTonePlayer::PlayDtmfTone(TDes& aTone)
-    {
-    TRACE_PRN_FN_ENT;
-    Cancel();
-
-    // DTMF signalling.
-    if (iDTMFPlayer)
-        {
-        TBuf<KBufSize> key;
-        key.Append(aTone);
-        TRAP_IGNORE(iDTMFPlayer->PlayDTMFStringL(aTone));
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioDtmfTonePlayer::Cancel
-// Cancels the currently playing tone.
-// -----------------------------------------------------------------------------
-//
-void TMSAudioDtmfTonePlayer::Cancel()
-    {
-    TRACE_PRN_FN_ENT;
-    iDTMFPlayer->Stop();
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioDtmfTonePlayer::Normalize
-// Lowers case for chars and if its '*','+', or 'w' sets it to asterisk
-// char ('*').
-// -----------------------------------------------------------------------------
-//
-void TMSAudioDtmfTonePlayer::Normalize(TChar& aTone)
-    {
-    TRACE_PRN_FN_ENT;
-    aTone.LowerCase();
-
-    TPtrC ast(KPhoneTone_Asterisk);
-
-    if (ast.Locate(aTone) != KErrNotFound)
-        {
-        aTone = ast[0];
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioDtmfTonePlayer::InitializeComplete
-// -----------------------------------------------------------------------------
-//
-void TMSAudioDtmfTonePlayer::InitializeComplete(TInt aError)
-    {
-    TRACE_PRN_FN_ENT;
-
-    if (aError == KErrNone)
-        {
-        TMMFPrioritySettings dtmfPlayerSettings;
-        dtmfPlayerSettings.iPref = (TMdaPriorityPreference) iPref;
-        dtmfPlayerSettings.iPriority = iPrior;
-        dtmfPlayerSettings.iState = EMMFStateTonePlaying;
-        iDTMFPlayer->SetPrioritySettings(dtmfPlayerSettings);
-
-        TTimeIntervalMicroSeconds32 length(KDTMFToneLengthOn);
-        TTimeIntervalMicroSeconds32 pause(KDTMFToneLengthOff);
-        TTimeIntervalMicroSeconds32 zero(KDTMFToneLengthPause);
-        iDTMFPlayer->SetDTMFLengths(length, pause, zero);
-        iDTMFPlayer->SetVolume(iDTMFPlayer->MaxVolume());
-        }
-
-    iObserver.DTMFInitCompleted(aError);
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioDtmfTonePlayer::ToneFinished
-// -----------------------------------------------------------------------------
-//
-void TMSAudioDtmfTonePlayer::ToneFinished(TInt aError)
-    {
-    TRACE_PRN_FN_ENT;
-    iObserver.DTMFToneFinished(aError);
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioDtmfTonePlayer::BufferToBeFilled
-// -----------------------------------------------------------------------------
-//
-void TMSAudioDtmfTonePlayer::BufferToBeFilled(CMMFBuffer* /*aBuffer*/)
-    {
-    TRACE_PRN_FN_ENT;
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioDtmfTonePlayer::PlayError
-// -----------------------------------------------------------------------------
-//
-void TMSAudioDtmfTonePlayer::PlayError(TInt /*aError*/)
-    {
-    TRACE_PRN_FN_ENT;
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioDtmfTonePlayer::BufferToBeEmptied
-// -----------------------------------------------------------------------------
-//
-void TMSAudioDtmfTonePlayer::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
-    {
-    TRACE_PRN_FN_ENT;
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioDtmfTonePlayer::RecordError
-// -----------------------------------------------------------------------------
-//
-void TMSAudioDtmfTonePlayer::RecordError(TInt /*aError*/)
-    {
-    TRACE_PRN_FN_ENT;
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioDtmfTonePlayer::ConvertError
-// -----------------------------------------------------------------------------
-//
-void TMSAudioDtmfTonePlayer::ConvertError(TInt /*aError*/)
-    {
-    TRACE_PRN_FN_ENT;
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioDtmfTonePlayer::DeviceMessage
-// -----------------------------------------------------------------------------
-//
-void TMSAudioDtmfTonePlayer::DeviceMessage(TUid /*aMessageType*/,
-        const TDesC8& /*aMsg*/)
-    {
-    TRACE_PRN_FN_ENT;
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioDtmfTonePlayer::ConvertVolume
-// -----------------------------------------------------------------------------
-//
-gint TMSAudioDtmfTonePlayer::ConvertVolume(gint aVolume)
-    {
-    TRACE_PRN_FN_ENT;
-    gint result = iDTMFPlayer->MaxVolume() * aVolume / KMaxVolumeLevel;
-    TRACE_PRN_FN_EXT;
-    return result;
-    }
-
-//  End of File
--- a/mmserv/tms/tmscallserver/src/csdownlink.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#include <AudioPreference.h>
-#include "csdownlink.h"
-#include "mcspdevsoundobserver.h"
-
-using namespace TMS;
-
-const gint KDefaultVolume = 4;
-const gint KDefaultMaxVolume = 10;
-
-// -----------------------------------------------------------------------------
-// Static constructor
-// -----------------------------------------------------------------------------
-//
-TMSCSDownlink* TMSCSDownlink::NewL(TMSCSPDevSoundObserver& aObserver)
-    {
-    TMSCSDownlink* self = new (ELeave) TMSCSDownlink(aObserver);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-TMSCSDownlink::~TMSCSDownlink()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// Sets volume
-// -----------------------------------------------------------------------------
-//
-void TMSCSDownlink::SetVolume(gint aVolume)
-    {
-    if (iDevSound)
-        {
-        gint maxVolume(iDevSound->MaxVolume());
-        maxVolume = (maxVolume > 0) ? maxVolume : KDefaultMaxVolume;
-        gint scaledVolume = (aVolume * maxVolume) / KDefaultMaxVolume;
-        iDevSound->SetVolume(scaledVolume);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// Gives volume
-// -----------------------------------------------------------------------------
-//
-gint TMSCSDownlink::Volume()
-    {
-    gint vol = 0;
-    if (iDevSound)
-        {
-        vol = iDevSound->Volume();
-        }
-    return vol;
-    }
-
-// -----------------------------------------------------------------------------
-// Gives max volume
-// -----------------------------------------------------------------------------
-//
-gint TMSCSDownlink::MaxVolume()
-    {
-    gint vol = 0;
-    if (iDevSound)
-        {
-        vol = iDevSound->MaxVolume();
-        }
-    return vol;
-    }
-
-// -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Downlink stream has been activated successfully.
-// -----------------------------------------------------------------------------
-//
-void TMSCSDownlink::BufferToBeFilled(CMMFBuffer* /*aBuffer*/)
-    {
-    //CSPLOGSTRING( CSPINT, "TMSCSDownlink:: activated" );
-    // We dont react to devsound messages unless we are activating.
-    if (IsActivationOngoing())
-        {
-        iActive = ETrue;
-        iActivationOngoing = EFalse;
-        iObserver.DownlinkActivatedSuccessfully();
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Downlink stream activation failed
-// -----------------------------------------------------------------------------
-//
-void TMSCSDownlink::PlayError(TInt aError)
-    {
-    //CSPLOGSTRING( CSPINT, "TMSCSDownlink::PlayError" );
-
-    // We dont react to devsound messages unless we are activating.
-    if (IsActivationOngoing())
-        {
-        //CSPLOGSTRING( CSPINT, "TMSCSDownlink::PlayError activation failed" );
-        if (aError == KErrAccessDenied)
-            {
-            iActivationOngoing = EFalse;
-            iObserver.DownlinkActivationFailed();
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// From class CSPDevsound
-// Tries to activate Downlink stream.
-// -----------------------------------------------------------------------------
-//
-void TMSCSDownlink::DoActivateL()
-    {
-    if (iDevSound)
-        {
-        iDevSound->PlayInitL();
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// Constructor
-// -----------------------------------------------------------------------------
-//
-TMSCSDownlink::TMSCSDownlink(TMSCSPDevSoundObserver& aObserver) :
-    TMSCSPDevSound(aObserver)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// Second phase constructor
-// -----------------------------------------------------------------------------
-//
-void TMSCSDownlink::ConstructL()
-    {
-    TMSCSPDevSound::ConstructL(EMMFStatePlaying, KAudioPrefCSCallDownlink,
-            KAudioPriorityCSCallDownlink);
-
-    if (iDevSound)
-        {
-        iDevSound->SetVolume(KDefaultVolume);
-        }
-    }
-
-//  End of File
--- a/mmserv/tms/tmscallserver/src/cspdevsound.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,207 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#include <AudioPreference.h>
-#include <glib.h>
-#include <S60FourCC.h>
-#include "cspdevsound.h"
-#include "mcspdevsoundobserver.h"
-
-using namespace TMS;
-
-// -----------------------------------------------------------------------------
-// TMSCSPDevSound
-// -----------------------------------------------------------------------------
-//
-TMSCSPDevSound::TMSCSPDevSound(TMSCSPDevSoundObserver& aObserver) :
-    iObserver(aObserver)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// ConstructL
-// -----------------------------------------------------------------------------
-//
-void TMSCSPDevSound::ConstructL(TMMFState aMode, gint aAudioPreference,
-        gint aAudioPriority)
-    {
-    TMMFPrioritySettings audioPriority;
-    TFourCC modemFourCC;
-    modemFourCC.Set(KS60FourCCCodeModem);
-    iDevSound = CMMFDevSound::NewL();
-    if (iDevSound)
-        {
-#ifndef __WINSCW__
-        iDevSound->InitializeL(*this, modemFourCC, aMode);
-#else //For testing TMS in WINSCW
-        iDevSound->InitializeL(*this, KMMFFourCCCodePCM16, aMode);
-#endif
-        iStreamType = aAudioPreference;
-        audioPriority.iPriority = aAudioPriority;
-        audioPriority.iPref = aAudioPreference;
-        audioPriority.iState = aMode;
-        iDevSound->SetPrioritySettings(audioPriority);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// -----------------------------------------------------------------------------
-//
-TMSCSPDevSound::~TMSCSPDevSound()
-    {
-    delete iDevSound;
-    }
-
-// -----------------------------------------------------------------------------
-// Tries to activate the audio stream if not active or activating
-// -----------------------------------------------------------------------------
-//
-void TMSCSPDevSound::Activate()
-    {
-    if (!IsActive() && !IsActivationOngoing())
-        {
-        iActivationOngoing = ETrue;
-        gint err = KErrNone;
-        TRAP(err, DoActivateL());
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// Deactivates the audio device.
-// -----------------------------------------------------------------------------
-//
-void TMSCSPDevSound::Deactivate()
-    {
-    if (iDevSound && (IsActive() || IsActivationOngoing()))
-        {
-        iDevSound->Stop();
-        iActive = EFalse;
-        iActivationOngoing = EFalse;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// ActivationOngoing
-// -----------------------------------------------------------------------------
-//
-TBool TMSCSPDevSound::IsActivationOngoing() const
-    {
-    return iActivationOngoing;
-    }
-
-// -----------------------------------------------------------------------------
-// IsActive
-// -----------------------------------------------------------------------------
-//
-TBool TMSCSPDevSound::IsActive() const
-    {
-    return iActive;
-    }
-
-// -----------------------------------------------------------------------------
-// DevSound
-// -----------------------------------------------------------------------------
-//
-CMMFDevSound& TMSCSPDevSound::DevSound()
-    {
-    return *iDevSound;
-    }
-
-// -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// -----------------------------------------------------------------------------
-//
-void TMSCSPDevSound::InitializeComplete(TInt aError)
-    {
-    if (iStreamType == KAudioPrefCSCallDownlink)
-        {
-        iObserver.DownlinkInitCompleted(aError);
-        }
-    else
-        {
-        iObserver.UplinkInitCompleted(aError);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// -----------------------------------------------------------------------------
-//
-void TMSCSPDevSound::BufferToBeFilled(CMMFBuffer* /*aBuffer*/)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// -----------------------------------------------------------------------------
-//
-void TMSCSPDevSound::PlayError(TInt /*aError*/)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// -----------------------------------------------------------------------------
-//
-void TMSCSPDevSound::ToneFinished(TInt /*aError*/)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// -----------------------------------------------------------------------------
-//
-void TMSCSPDevSound::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// -----------------------------------------------------------------------------
-//
-void TMSCSPDevSound::RecordError(TInt /*aError*/)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// -----------------------------------------------------------------------------
-//
-void TMSCSPDevSound::ConvertError(TInt /*aError*/)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// -----------------------------------------------------------------------------
-//
-void TMSCSPDevSound::DeviceMessage(TUid /*aMessageType*/,
-        const TDesC8& /*aMsg*/)
-    {
-    }
-
-//  End of File
--- a/mmserv/tms/tmscallserver/src/cspdtmfprovider.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,312 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#include <etelmm.h>
-#include <mccpdtmfprovider.h>
-#include <mccpdtmfobserver.h>
-#include <rmmcustomapi.h>
-#include "cspdtmfprovider.h"
-#include "tmsutility.h"
-#include "cspeteldtmfmonitor.h"
-#include "cspeteldtmfstopmonitor.h"
-
-using namespace TMS;
-
-TMSDTMFProvider* TMSDTMFProvider::NewL()
-    {
-    TRACE_PRN_FN_ENT;
-    TMSDTMFProvider* self = new (ELeave) TMSDTMFProvider();
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    TRACE_PRN_FN_EXT;
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// Destructor of the object.
-// -----------------------------------------------------------------------------
-//
-TMSDTMFProvider::~TMSDTMFProvider()
-    {
-    TRACE_PRN_FN_ENT;
-    Cancel();
-    iObservers.Close();
-    delete iMonitor;
-    delete iStopMonitor;
-
-    iMmCustom.Close();
-    iPhone.Close();
-    iServer.UnloadPhoneModule(iTsyname);
-    iServer.Close();
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// Notifies observers about a DTMF event
-// -----------------------------------------------------------------------------
-//
-void TMSDTMFProvider::NotifyDTMFEvent(
-        const TMSCCPDTMFObserver::TCCPDtmfEvent aEvent, const gint aError,
-        const TChar aTone)
-    {
-    TRACE_PRN_FN_ENT;
-    for (gint i = 0; i < iObservers.Count(); i++)
-        {
-        TMSCCPDTMFObserver *obs = iObservers[i];
-        if (obs)
-            {
-            iObservers[i]->HandleDTMFEvent(aEvent, aError, aTone);
-            }
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// Cancel DTMF string sending
-// -----------------------------------------------------------------------------
-//
-TInt TMSDTMFProvider::CancelDtmfStringSending()
-    {
-    TRACE_PRN_FN_ENT;
-    gint ret(KErrAlreadyExists);
-    if (IsActive())
-        {
-        Cancel();
-        ret = KErrNone;
-        }
-    TRACE_PRN_FN_EXT;
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// Starts DTMF string sending
-// -----------------------------------------------------------------------------
-//
-TInt TMSDTMFProvider::StartDtmfTone(const TChar aTone)
-    {
-    TRACE_PRN_FN_ENT;
-    gint ret(KErrAlreadyExists);
-    if (!IsActive())
-        {
-        ret = iPhone.StartDTMFTone(aTone);
-        }
-    TRACE_PRN_FN_EXT;
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// Stop DTMF tone
-// -----------------------------------------------------------------------------
-//
-TInt TMSDTMFProvider::StopDtmfTone()
-    {
-    TRACE_PRN_FN_ENT;
-    gint ret(KErrAlreadyExists);
-    if (!IsActive())
-        {
-        ret = iPhone.StopDTMFTone();
-        }
-    TRACE_PRN_FN_EXT;
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// Send DTMF string
-// -----------------------------------------------------------------------------
-//
-TInt TMSDTMFProvider::SendDtmfToneString(const TDesC& aString)
-    {
-    TRACE_PRN_FN_ENT;
-    gint ret = KErrInUse;
-    if (!IsActive())
-        {
-        iStatus = KRequestPending;
-        iPhone.SendDTMFTones(iStatus, aString);
-        SetActive();
-        ret = KErrNone;
-        }
-    TRACE_PRN_FN_EXT;
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// Continue DTMF string sending
-// -----------------------------------------------------------------------------
-//
-TInt TMSDTMFProvider::ContinueDtmfStringSending(const TBool aContinue)
-    {
-    TRACE_PRN_FN_ENT;
-    gint status = iPhone.ContinueDTMFStringSending(aContinue);
-    TRACE_PRN_FN_EXT;
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// Adds observer.
-// -----------------------------------------------------------------------------
-//
-void TMSDTMFProvider::AddObserverL(const TMSCCPDTMFObserver& aObserver)
-    {
-    TRACE_PRN_FN_ENT;
-    if (iObservers.Find(&aObserver) == KErrNotFound)
-        {
-        iObservers.Append(&aObserver);
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// Removes given observer.
-// -----------------------------------------------------------------------------
-//
-TInt TMSDTMFProvider::RemoveObserver(const TMSCCPDTMFObserver& aObserver)
-    {
-    TRACE_PRN_FN_ENT;
-    gint ret = KErrNotFound;
-    gint found = iObservers.Find(&aObserver);
-    if (found != KErrNotFound)
-        {
-        iObservers.Remove(found);
-        ret = KErrNone;
-        }
-    TRACE_PRN_FN_EXT;
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// From CActive.
-// Handles request completion.
-// -----------------------------------------------------------------------------
-//
-void TMSDTMFProvider::RunL()
-    {
-    TRACE_PRN_FN_ENT;
-    if (iStatus == KErrNone)
-        {
-        TMSCCPDTMFObserver::TCCPDtmfEvent event =
-                TMSCCPDTMFObserver::ECCPDtmfStringSendingCompleted;
-        NotifyDTMFEvent(event, KErrNone, NULL);
-        }
-    else
-        {
-        gint error = iStatus.Int();
-        if (error != KErrCancel)
-            {
-            TMSCCPDTMFObserver::TCCPDtmfEvent event =
-                    TMSCCPDTMFObserver::ECCPDtmfStringSendingCompleted;
-            NotifyDTMFEvent(event, error, NULL);
-            }
-        else
-            {
-            // Cancel is not notified
-            }
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// From CActive
-// Canceling functionality.
-// -----------------------------------------------------------------------------
-//
-void TMSDTMFProvider::DoCancel()
-    {
-    TRACE_PRN_FN_ENT;
-    if (iStatus == KRequestPending)
-        {
-        iPhone.CancelAsyncRequest(EMobilePhoneSendDTMFTones);
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// Constructs the requester.
-// -----------------------------------------------------------------------------
-//
-TMSDTMFProvider::TMSDTMFProvider() :
-    CActive(EPriorityStandard)
-    {
-    TRACE_PRN_FN_ENT;
-    CActiveScheduler::Add(this);
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// Constructs the requester in the second phase.
-// -----------------------------------------------------------------------------
-//
-void TMSDTMFProvider::ConstructL()
-    {
-    TRACE_PRN_FN_ENT;
-
-    CleanupClosePushL(iServer);
-    User::LeaveIfError(iServer.Connect());
-
-    TRACE_PRN_N(_L("**TMS ETel iServer.Connect"));
-
-    iServer.GetTsyName(0, iTsyname);
-
-    //Load in the phone device driver
-    User::LeaveIfError(iServer.LoadPhoneModule(iTsyname));
-
-    TRACE_PRN_N(_L("**TMS ETel iServer.LoadPhoneModule"));
-
-    //Find the number of phones available from the tel server
-    gint numberPhones;
-    User::LeaveIfError(iServer.EnumeratePhones(numberPhones));
-
-    TRACE_PRN_N(_L("**TMS ETel iServer.EnumeratePhones"));
-
-    //Check there are available phones
-    if (numberPhones < 1)
-        {
-        User::Leave(KErrNotFound);
-        }
-
-    //Get info about the first available phone
-    RTelServer::TPhoneInfo info;
-    User::LeaveIfError(iServer.GetPhoneInfo(0, info));
-
-    TRACE_PRN_N(_L("**TMS ETel iServer.GetPhoneInfo"));
-
-    CleanupClosePushL(iPhone);
-    User::LeaveIfError(iPhone.Open(iServer, info.iName));
-
-    TRACE_PRN_N(_L("**TMS ETel iPhone.Open"));
-
-    RMobilePhone::TLineInfo lineInfo;
-    User::LeaveIfError(iPhone.GetLineInfo(0, lineInfo));
-
-    TRACE_PRN_N(_L("**TMS ETel iPhone.GetLineInfo"));
-
-    gint errorCode = iMmCustom.Open(iPhone);
-
-    if (!iPhone.SubSessionHandle() || !iMmCustom.SubSessionHandle())
-        {
-        User::Leave(KErrArgument);
-        }
-    iMonitor = TMSEtelDtmfMonitor::NewL(*this, iMmCustom);
-    iMonitor->StartMonitoring();
-    iStopMonitor = TMSEtelDtmfStopMonitor::NewL(*this, iPhone);
-    // iStopMonitor->StartMonitoring();
-
-    CleanupStack::Pop(2);//telserver,phone
-    TRACE_PRN_FN_EXT;
-    }
-
-//  End of File
--- a/mmserv/tms/tmscallserver/src/cspeteldtmfmonitor.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#include <mccpdtmfobserver.h>
-#include <rmmcustomapi.h>
-#include <gsmerror.h>
-#include "cspeteldtmfmonitor.h"
-#include "tmsutility.h"
-#include "cspdtmfprovider.h"
-#include "cspdtmfprovider.h"
-
-using namespace TMS;
-
-// -----------------------------------------------------------------------------
-// TMSEtelDtmfMonitor::NewL.
-// -----------------------------------------------------------------------------
-//
-TMSEtelDtmfMonitor* TMSEtelDtmfMonitor::NewL(TMSDTMFProvider& aObserver,
-        RMmCustomAPI& aMmCustom)
-    {
-    TRACE_PRN_FN_ENT;
-    TMSEtelDtmfMonitor* self = new (ELeave) TMSEtelDtmfMonitor(aObserver,
-            aMmCustom);
-    TRACE_PRN_FN_EXT;
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// Destructs the object by canceling first ongoing monitoring.
-// -----------------------------------------------------------------------------
-//
-TMSEtelDtmfMonitor::~TMSEtelDtmfMonitor()
-    {
-    TRACE_PRN_FN_ENT;
-    Cancel();
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// Starts the monitor.
-// -----------------------------------------------------------------------------
-//
-void TMSEtelDtmfMonitor::StartMonitoring()
-    {
-    TRACE_PRN_FN_ENT;
-    if (!IsActive())
-        {
-        iStatus = KRequestPending;
-        iMmCustom.NotifyDtmfEvent(iStatus, iEventData);
-        SetActive();
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// From CActive.
-// Handles line status change notifying.
-// -----------------------------------------------------------------------------
-//
-void TMSEtelDtmfMonitor::RunL()
-    {
-    TRACE_PRN_FN_ENT;
-    TInt err = iStatus.Int();
-    TRACE_PRN_N1(_L("**TMS TMSEtelDtmfMonitor::RunL: status:%d"), err);
-
-    if (err == KErrNone)
-        {
-        TMSCCPDTMFObserver::TCCPDtmfEvent event;
-        if (iEventData.iEvent == RMmCustomAPI::EDtmfStart
-                && iEventData.iType == RMmCustomAPI::EDtmfManual)
-            {
-            event = TMSCCPDTMFObserver::ECCPDtmfManualStart;
-            }
-        else if (iEventData.iEvent == RMmCustomAPI::EDtmfStart
-                && iEventData.iType == RMmCustomAPI::EDtmfSequence)
-            {
-            event = TMSCCPDTMFObserver::ECCPDtmfSequenceStart;
-            }
-        else if (iEventData.iEvent == RMmCustomAPI::EDtmfStop
-                && iEventData.iType == RMmCustomAPI::EDtmfManual)
-            {
-            event = TMSCCPDTMFObserver::ECCPDtmfManualStop;
-            }
-        else if (iEventData.iEvent == RMmCustomAPI::EDtmfStop
-                && iEventData.iType == RMmCustomAPI::EDtmfSequence)
-            {
-            event = TMSCCPDTMFObserver::ECCPDtmfSequenceStop;
-            }
-        else if (iEventData.iEvent == RMmCustomAPI::EDtmfAbort
-                && iEventData.iType == RMmCustomAPI::EDtmfManual)
-            {
-            event = TMSCCPDTMFObserver::ECCPDtmfManualAbort;
-            }
-        else if (iEventData.iEvent == RMmCustomAPI::EDtmfAbort
-                && iEventData.iType == RMmCustomAPI::EDtmfSequence)
-            {
-            event = TMSCCPDTMFObserver::ECCPDtmfSequenceAbort;
-            }
-        else
-            {
-            // Refresh and return (no observer notfiying).
-            TRACE_PRN_N2(_L("**TMS TMSEtelDtmfMonitor::RunL: Unknown event \
-                    = %¨d, type = %d"), iEventData.iEvent,iEventData.iType);
-            StartMonitoring();
-            return;
-            }
-
-        iObserver.NotifyDTMFEvent(event, err, iEventData.iTone);
-        }
-    else
-        {
-        TRACE_PRN_N1(_L("**TMS TMSEtelDtmfMonitor::RunL: Error \
-                from DTMF: %d"),err);
-        }
-
-    // Continue if not in offline mode
-    if (err != KErrGsmOfflineOpNotAllowed && err != KErrCancel
-            && err != KErrNotSupported)
-        {
-        StartMonitoring();
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// From CActive
-// Canceling functionality.
-// -----------------------------------------------------------------------------
-//
-void TMSEtelDtmfMonitor::DoCancel()
-    {
-    TRACE_PRN_FN_ENT;
-    if (iStatus == KRequestPending)
-        {
-        iMmCustom.CancelAsyncRequest(ECustomNotifyDtmfEventIPC);
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// Constructs the monitor.
-// -----------------------------------------------------------------------------
-//
-TMSEtelDtmfMonitor::TMSEtelDtmfMonitor(TMSDTMFProvider& aObserver,
-        RMmCustomAPI& aMmCustom) :
-    CActive(EPriorityStandard),
-    iObserver(aObserver),
-    iMmCustom(aMmCustom)
-    {
-    TRACE_PRN_FN_ENT;
-    CActiveScheduler::Add(this);
-    TRACE_PRN_FN_EXT;
-    }
-
-// End of file
--- a/mmserv/tms/tmscallserver/src/cspeteldtmfstopmonitor.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#include <mccpdtmfobserver.h>
-#include <gsmerror.h>
-#include "cspeteldtmfstopmonitor.h"
-#include "tmsutility.h"
-#include "cspdtmfprovider.h"
-#include "cspdtmfprovider.h"
-
-using namespace TMS;
-
-// -----------------------------------------------------------------------------
-// TMSEtelDtmfStopMonitor::NewL.
-// -----------------------------------------------------------------------------
-//
-TMSEtelDtmfStopMonitor* TMSEtelDtmfStopMonitor::NewL(TMSDTMFProvider& aObserver,
-        RMobilePhone& aPhone)
-    {
-    TRACE_PRN_FN_EXT;
-    TMSEtelDtmfStopMonitor* self = new (ELeave) TMSEtelDtmfStopMonitor(
-            aObserver, aPhone);
-    TRACE_PRN_FN_EXT;
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// Constructs the monitor.
-// -----------------------------------------------------------------------------
-//
-TMSEtelDtmfStopMonitor::TMSEtelDtmfStopMonitor(TMSDTMFProvider& aObserver,
-        RMobilePhone& aPhone) :
-    CActive(EPriorityStandard),
-    iObserver(aObserver),
-    iPhone(aPhone)
-    {
-    TRACE_PRN_FN_ENT;
-    CActiveScheduler::Add(this);
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// Destructs the object by canceling first ongoing monitoring.
-// -----------------------------------------------------------------------------
-//
-TMSEtelDtmfStopMonitor::~TMSEtelDtmfStopMonitor()
-    {
-    TRACE_PRN_FN_ENT;
-    Cancel();
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// Starts the monitor.
-// -----------------------------------------------------------------------------
-//
-void TMSEtelDtmfStopMonitor::StartMonitoring()
-    {
-    TRACE_PRN_FN_ENT;
-    if (!IsActive())
-        {
-        iStatus = KRequestPending;
-        iPhone.NotifyStopInDTMFString(iStatus);
-        SetActive();
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// From CActive.
-// Handles line status change notifying.
-// -----------------------------------------------------------------------------
-//
-void TMSEtelDtmfStopMonitor::RunL()
-    {
-    TRACE_PRN_FN_ENT;
-    gint err = iStatus.Int();
-    TRACE_PRN_N1(_L("**TMS TMSEtelDtmfStopMonitor::RunL: status: %d"), err);
-
-    if (err != KErrCancel && err != KErrServerTerminated)
-        {
-        TChar tone = NULL;
-        TMSCCPDTMFObserver::TCCPDtmfEvent event =
-                TMSCCPDTMFObserver::ECCPDtmfStopInDtmfString;
-        iObserver.NotifyDTMFEvent(event, err, tone);
-        }
-    else
-        {
-        TRACE_PRN_N1(_L("**TMS TMSEtelDtmfStopMonitor::RunL: Error \
-                       from RMobilePhone: %d"),iStatus.Int());
-        }
-
-    // Continue if not in offline mode
-    if (err != KErrGsmOfflineOpNotAllowed && err != KErrCancel
-            && err != KErrNotSupported)
-        {
-        StartMonitoring();
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// From CActive
-// Canceling functionality.
-// -----------------------------------------------------------------------------
-//
-void TMSEtelDtmfStopMonitor::DoCancel()
-    {
-    TRACE_PRN_FN_ENT;
-    if (iStatus == KRequestPending)
-        {
-        iPhone.CancelAsyncRequest(EMobilePhoneNotifyStopInDTMFString);
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// End of file
--- a/mmserv/tms/tmscallserver/src/csuplink.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,204 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#include <AudioPreference.h>
-#include "csuplink.h"
-#include "mcspdevsoundobserver.h"
-
-using namespace TMS;
-
-// Mute value
-const gint KSetMuteToDevSound = 0;
-
-// -----------------------------------------------------------------------------
-// Static constructor.
-// -----------------------------------------------------------------------------
-//
-TMSCSUplink* TMSCSUplink::NewL(TMSCSPDevSoundObserver& aObserver)
-    {
-    TMSCSUplink* self = new (ELeave) TMSCSUplink(aObserver);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// Destructor
-// -----------------------------------------------------------------------------
-//
-TMSCSUplink::~TMSCSUplink()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// Gives mic mute state
-// -----------------------------------------------------------------------------
-//
-TBool TMSCSUplink::IsMuted()
-    {
-    TBool isMuted = EFalse;
-    gint gain = 0;
-    if (iDevSound)
-        {
-        gain = iDevSound->Gain();
-        }
-    if (!gain)
-        {
-        // Mute is on
-        isMuted = ETrue;
-        }
-    //   CSPLOGSTRING( CSPINT, "TMSCSUplink::IsMuted" );
-    return isMuted;
-    }
-
-// -----------------------------------------------------------------------------
-// Set mic muted.
-// -----------------------------------------------------------------------------
-//
-void TMSCSUplink::SetMuted()
-    {
-    if (iDevSound)
-        {
-        iDevSound->SetGain(KSetMuteToDevSound);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// Set mic unmuted
-// -----------------------------------------------------------------------------
-//
-void TMSCSUplink::SetUnmuted()
-    {
-    if (iDevSound)
-        {
-        iDevSound->SetGain(iDevSound->MaxGain());
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// Sets gain
-// -----------------------------------------------------------------------------
-//
-void TMSCSUplink::SetGain(gint aGain)
-    {
-    if (iDevSound)
-        {
-        iDevSound->SetGain(aGain);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// Gives volume
-// -----------------------------------------------------------------------------
-//
-gint TMSCSUplink::Gain()
-    {
-    gint gain = 0;
-    if (iDevSound)
-        {
-        gain = iDevSound->Gain();
-        }
-    return gain;
-    }
-
-// -----------------------------------------------------------------------------
-// Gives max gain
-// -----------------------------------------------------------------------------
-//
-gint TMSCSUplink::MaxGain()
-    {
-    gint gain = 0;
-    if (iDevSound)
-        {
-        gain = iDevSound->MaxGain();
-        }
-    return gain;
-    }
-
-// -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Activation was successfull.
-// -----------------------------------------------------------------------------
-//
-void TMSCSUplink::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
-    {
-    //  CSPLOGSTRING( CSPINT, "TMSCSUplink::BufferToBeEmptied" );
-
-    // We dont react to devsound messages unless we are activating.
-    if (IsActivationOngoing())
-        {
-        iActive = ETrue;
-        iActivationOngoing = EFalse;
-        iObserver.UplinkActivatedSuccessfully();
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Activation feiled
-// -----------------------------------------------------------------------------
-//
-void TMSCSUplink::RecordError(TInt aError)
-    {
-    //  CSPLOGSTRING( CSPINT, "TMSCSUplink::RecordError" );
-
-    // We dont react to devsound messages unless we are activating.
-    if (IsActivationOngoing())
-        {
-        if (aError == KErrAccessDenied)
-            {
-            iActivationOngoing = EFalse;
-            iObserver.UplinkActivationFailed();
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// From class TMSCSPDevSound
-// Tries to activate mic stream. Stream becomes active when BufferToBeFilled
-// gets called.
-// -----------------------------------------------------------------------------
-//
-void TMSCSUplink::DoActivateL()
-    {
-    if (iDevSound)
-        {
-        iDevSound->RecordInitL();
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// Constructor
-// -----------------------------------------------------------------------------
-//
-TMSCSUplink::TMSCSUplink(TMSCSPDevSoundObserver& aObserver) :
-    TMSCSPDevSound(aObserver)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// Second phase constructor
-// -----------------------------------------------------------------------------
-//
-void TMSCSUplink::ConstructL()
-    {
-    TMSCSPDevSound::ConstructL(EMMFStateRecording, KAudioPrefCSCallUplink,
-            KAudioPriorityCSCallUplink);
-    }
-
-//  End of File
--- a/mmserv/tms/tmscallserver/src/delaytimer.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-// INCLUDE FILES
-#include "delaytimer.h"
-#include "tmsutility.h"
-
-using namespace TMS;
-
-// -----------------------------------------------------------------------------
-// TMSCallDelayTimer::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-TMSCallDelayTimer* TMSCallDelayTimer::NewL()
-    {
-    TRACE_PRN_FN_ENT;
-    TMSCallDelayTimer* self = new (ELeave) TMSCallDelayTimer;
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    TRACE_PRN_FN_EXT;
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallDelayTimer::TMSCallDelayTimer()
-// C++ constructor.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TMSCallDelayTimer::TMSCallDelayTimer() :
-    CActive(CActive::EPriorityStandard)
-    {
-    TRACE_PRN_FN_ENT;
-    CActiveScheduler::Add(this);
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallDelayTimer::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void TMSCallDelayTimer::ConstructL()
-    {
-    TRACE_PRN_FN_ENT;
-    User::LeaveIfError(iShutDownTimer.CreateLocal());
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallDelayTimer::~TMSCallDelayTimer
-// Destructor
-// -----------------------------------------------------------------------------
-//
-TMSCallDelayTimer::~TMSCallDelayTimer()
-    {
-    TRACE_PRN_FN_ENT;
-    Cancel();
-    iShutDownTimer.Close();
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallDelayTimer::SetDelay
-// Request a timeout after aDelay
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void TMSCallDelayTimer::SetDelay(TTimeIntervalMicroSeconds32 aDelay)
-    {
-    TRACE_PRN_FN_ENT;
-    if (!IsActive())
-        {
-        iStatus = KRequestPending;
-        SetActive();
-        iShutDownTimer.After(iStatus, aDelay);
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallDelayTimer::RunL
-// Called by Active object framework when timer times out.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void TMSCallDelayTimer::RunL()
-    {
-    TRACE_PRN_FN_ENT;
-    CActiveScheduler::Stop();
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallDelayTimer::DoCancel
-// Called by the Active object framework when user cancels active object.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void TMSCallDelayTimer::DoCancel()
-    {
-    TRACE_PRN_FN_ENT;
-    iShutDownTimer.Cancel();
-    TRACE_PRN_FN_EXT;
-    }
-
-//  End of File
--- a/mmserv/tms/tmscallserver/src/dtmfnotifier.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-// INCLUDE FILES
-#include "dtmfnotifier.h"
-#include "tmsclientserver.h"
-#include "tmsutility.h"
-
-using namespace TMS;
-
-// CONSTANTS
-_LIT_SECURITY_POLICY_PASS(KTMSServerReadPolicy);
-_LIT_SECURITY_POLICY_C1(KTMSServerWritePolicy, ECapabilityWriteUserData);
-
-// -----------------------------------------------------------------------------
-// TMSDtmfNotifier::TMSDtmfNotifier
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-TMSDtmfNotifier::TMSDtmfNotifier()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// TMSDtmfNotifier::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void TMSDtmfNotifier::ConstructL()
-    {
-    TRACE_PRN_FN_ENT;
-    TInt err = RProperty::Define(EDtmfPs, RProperty::EByteArray,
-            KTMSServerReadPolicy, KTMSServerWritePolicy);
-    TRACE_PRN_N1(_L("DtmfSetting::ConstructL err:%d"),err);
-
-    if (err != KErrAlreadyExists)
-        {
-        User::LeaveIfError(err);
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSDtmfNotifier::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-TMSDtmfNotifier* TMSDtmfNotifier::NewL()
-    {
-    TMSDtmfNotifier* self = new (ELeave) TMSDtmfNotifier();
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// Destructor
-TMSDtmfNotifier::~TMSDtmfNotifier()
-    {
-    TRACE_PRN_FN_ENT;
-    TInt err = RProperty::Delete(KTMSPropertyCategory, EDtmfPs);
-    TRACE_PRN_N1(_L("DtmfSetting::~TMSDtmfNotifier err:%d"),err);
-    TRACE_PRN_FN_ENT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSDtmfNotifier::SetVolume
-// -----------------------------------------------------------------------------
-//
-void TMSDtmfNotifier::SetDtmf(TmsMsgBufPckg dtmfpckg, TBool aPublish)
-    {
-    TRACE_PRN_FN_ENT;
-    //TInt err(KErrNone);
-    if (aPublish)
-        {
-        /*err =*/RProperty::Set(KTMSPropertyCategory, EDtmfPs, dtmfpckg);
-        }
-
-    //TRACE_PRN_N1(_L("DtmfSetting::SetDtmf err:%d"),err);
-    TRACE_PRN_FN_EXT;
-    }
-
-//  End of File
--- a/mmserv/tms/tmscallserver/src/ipcalldownlink.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,911 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#include <audiopreference.h>
-#include <audiooutput.h>
-#include <mmcccodecinformation.h>
-#include <gstappsrc.h>
-#include "tmsutility.h"
-#include "gsterrorconcealmentinterface.h"
-#include "gstg711decoderinterface.h"
-#include "gstilbcdecoderinterface.h"
-#include "gstg729decoderinterface.h"
-#include "ipcallstream.h"
-
-using namespace TMS;
-
-static TMSIPDownlink* iSelfDn;
-#ifdef _DEBUG
-static TInt iHeap;
-#endif //_DEBUG
-GstBuffer* gstDnlBuffer;
-GstCaps* caps;
-gint requestBufLen;
-
-#ifdef __PLAY_WAV_FROM_FILE__
-_LIT16(KTestFile1, "c:\\data\\sounds\\digital\\sample1.wav");
-#endif
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::cb_raw_playback_handoff
-// -----------------------------------------------------------------------------
-//
-void TMSIPDownlink::cb_raw_playback_handoff(GstElement* /*appsrc*/,
-        guint size)
-    {
-    TRACE_PRN_N(_L("TMS->DNL: cb_raw_playback_handoff"));
-
-    requestBufLen = size;
-
-#ifdef _DEBUG
-    TInt block;
-    RHeap &heap = User::Heap();
-    TInt avail = heap.Available(block);
-    RDebug::Print(_L("TMS->PRINT-HEAP-DN:Size[%d], Available[%d], delta[%d]"),
-    heap.Size(), avail, (iHeap - avail));
-    iHeap = avail;
-#endif //_DEBUG
-    iSelfDn->BufferToBeFilled();
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::bus_call
-// -----------------------------------------------------------------------------
-//
-gboolean TMSIPDownlink::bus_call(GstBus* /*bus*/, GstMessage* msg,
-        gpointer /*data*/)
-    {
-    switch (GST_MESSAGE_TYPE(msg))
-        {
-        case GST_MESSAGE_EOS:
-            {
-            gst_element_set_state(iSelfDn->iPipelinePlay, GST_STATE_NULL);
-            gst_object_unref(GST_OBJECT(iSelfDn->iPipelinePlay));
-            break;
-            }
-        case GST_MESSAGE_ERROR:
-            {
-            gchar* debug;
-            GError* err;
-            gst_message_parse_error(msg, &err, &debug);
-            g_free(debug);
-            g_print("Error: %s\n", err->message);
-            g_error_free(err);
-            break;
-            }
-        default:
-            {
-            break;
-            }
-        }
-
-    return ETrue;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::gst_initialize_play
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::gst_initialize_play()
-    {
-    TRACE_PRN_FN_ENT;
-
-    gint err = KErrNone;
-
-    // create elements
-    iPipelinePlay = gst_pipeline_new("pipelinePlay");
-    iAppSrc = gst_element_factory_make("appsrc", "source");
-    iSink = gst_element_factory_make("devsoundsink", "sink");
-
-    if (!iAppSrc || !iSink)
-        {
-        err = KErrNotFound;
-        TRACE_PRN_IF_ERR(err);
-        return err;
-        }
-
-    iBusPlay = gst_pipeline_get_bus(GST_PIPELINE(iPipelinePlay));
-    gst_bus_add_watch(iBusPlay, TMSIPDownlink::bus_call, NULL);
-    gst_object_unref(iBusPlay);
-
-    iMaxBufLen = ConfigureMedia(iCodecID);
-
-    g_object_set(iAppSrc, "stream-type", 0, "blocksize", iMaxBufLen, NULL);
-    gst_bin_add_many(GST_BIN(iPipelinePlay), iAppSrc, iSink, NULL);
-    gst_element_link(iAppSrc, iSink);
-
-    caps = gst_caps_new_simple(iMediaType,
-                               "width", G_TYPE_INT, 16,
-                               "depth", G_TYPE_INT, 16,
-                               "signed", G_TYPE_BOOLEAN, TRUE,
-                               "endianness", G_TYPE_INT, G_BYTE_ORDER,
-                               "rate", G_TYPE_INT, 8000,
-                               "channels", G_TYPE_INT, 1,
-                               NULL);
-
-    //NOTE: d/s is not ready at this time to return true maxvolume
-    TInt maxvol = 10;
-#ifdef __WINSCW__
-    maxvol = 10000;
-#endif //__WINSCW__
-    g_object_set(G_OBJECT(iSink),
-                 "volume", maxvol,
-#ifndef __WINSCW__
-                "priority", (gint)iPriority.iPriority,
-                "preference", (gint)iPriority.iPref,
-#endif
-                NULL);
-
-    gst_app_src_set_caps(GST_APP_SRC(iAppSrc), caps);
-    gst_app_src_set_max_bytes(GST_APP_SRC(iAppSrc), iMaxBufLen);
-    err = SetCodecCi();
-    //gst_element_set_state(iPipelinePlay, GST_STATE_READY);
-
-    TRACE_PRN_FN_EXT;
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::gst_play_raw
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::gst_play_raw()
-    {
-    TRACE_PRN_FN_ENT;
-
-    // start playback
-    gst_element_set_state(iPipelinePlay, GST_STATE_PLAYING);
-
-    //configure the appsrc, we will push buffer to appsrc when it needs more data
-    g_signal_connect(iAppSrc, "need-data",
-                     G_CALLBACK (cb_raw_playback_handoff),
-                     NULL);
-    TRACE_PRN_FN_EXT;
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::TMSIPDownlink
-// Standard Constructor
-// -----------------------------------------------------------------------------
-//
-TMSIPDownlink::TMSIPDownlink()
-    {
-    iSelfDn = this;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::~TMSIPDownlink
-// Standard Constructor
-// -----------------------------------------------------------------------------
-//
-TMSIPDownlink::~TMSIPDownlink()
-    {
-    TRACE_PRN_FN_ENT;
-
-    Stop();
-    gst_caps_unref(caps);
-    gst_object_unref(GST_OBJECT(iPipelinePlay));
-    gst_deinit();
-
-    delete iErrConcealmentIntfc;
-    delete iG711DecoderIntfc;
-    delete iG729DecoderIntfc;
-    delete iIlbcDecoderIntfc;
-
-#ifdef __PLAY_WAV_FROM_FILE__
-    iFs.Close();
-    delete fbuf;
-#endif
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::NewL
-// Symbian two-phase constructor
-// -----------------------------------------------------------------------------
-//
-TMSIPDownlink* TMSIPDownlink::NewL(const guint32 codecID,
-        const TMMFPrioritySettings priority)
-    {
-    TMSIPDownlink* self = new (ELeave) TMSIPDownlink();
-    CleanupStack::PushL(self);
-    self->ConstructL(codecID, priority);
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::ConstructL
-// Part two of Symbian two phase construction
-// -----------------------------------------------------------------------------
-//
-void TMSIPDownlink::ConstructL(const guint32 codecID,
-        const TMMFPrioritySettings priority)
-    {
-    TRACE_PRN_FN_ENT;
-
-    iCodecID = codecID;
-    iPriority = priority;
-    //    SetTime();
-    gst_init(NULL, NULL);
-    //    CalcLatency();
-    //    SetTime();
-
-    gint err = gst_initialize_play();
-    if (err != TMS_RESULT_SUCCESS)
-        {
-        User::Leave(err);
-        }
-
-    // Client must set these before querying!
-    iG711DecodeMode = TMS_G711_CODEC_MODE_ALAW;
-    iILBCDecodeMode = TMS_ILBC_CODEC_MODE_20MS_FRAME;
-
-#ifdef __PLAY_WAV_FROM_FILE__
-    iReadSize = KVoIPPCM16FrameLen;
-    err = iFs.Connect();
-    if (err == KErrNone)
-        {
-        err = iFile.Open(iFs, KTestFile1, EFileShareAny | EFileRead);
-        }
-    if (err == KErrNone)
-        {
-        iFile.Size(fsize);
-        }
-    fbuf = HBufC8::NewL(fsize);
-    TPtr8 p = fbuf->Des();
-    iFile.Read(p, fsize);
-    iFile.Close();
-#endif
-    //    CalcLatency();
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::Start
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPDownlink::Start()
-    {
-    TRACE_PRN_FN_ENT;
-
-    gst_play_raw();
-    iStatus = EStreaming;
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::Stop
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPDownlink::Stop()
-    {
-    TRACE_PRN_FN_ENT;
-
-    if (iStatus == EStreaming)
-        {
-        if (iPipelinePlay != NULL &&
-            iPipelinePlay->current_state == GST_STATE_PLAYING)
-            {
-            gst_element_set_state(iPipelinePlay, GST_STATE_NULL);
-            }
-
-        iStatus = EReady;
-        }
-
-    if (gstDnlBuffer)
-        {
-        gst_buffer_unref(gstDnlBuffer);
-        }
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::BufferToBeFilled
-// -----------------------------------------------------------------------------
-//
-void TMSIPDownlink::BufferToBeFilled()
-    {
-    TRACE_PRN_N1(_L("TMS->DNL->BTBF: requestBufLen[%d]"), requestBufLen);
-
-#ifndef __PLAY_WAV_FROM_FILE__
-    // Create or adjust the chunk
-    TInt err = DoChunk(requestBufLen, iMsgBuffer);
-
-    if (err != TMS_RESULT_SUCCESS)
-        {
-        Stop();
-        iMsgBuffer.iStatus = err;
-        }
-    else
-        {
-        // Notify client there is buffer ready to be filled
-        iMsgBuffer.iStatus = iChunk.Handle();
-        iMsgBuffer.iInt = requestBufLen;
-        iStatus = EStreaming;
-        // If chunk is opened, we will expect a call from the client to
-        // get chunk handle. When we get a call to copy chunk handle,
-        // check these variables and see if they match. This is not
-        // completely secure, but will provide some level of security
-        if (iMsgBuffer.iBool == TRUE)
-            {
-            iWriteDataXferHndlToClient = TRUE;
-            iKey = iMsgBuffer.iUint32;
-            }
-        }
-
-    iMsgBuffer.iRequest = ECmdFillBuffer;
-    iMsgQueue.Send(iMsgBuffer);
-
-#else //__PLAY_WAV_FROM_FILE__
-    TInt err = KErrNone;
-    BufferFilled();
-#endif //__PLAY_WAV_FROM_FILE__
-    TRACE_PRN_IF_ERR(err);
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::BufferFilled
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPDownlink::BufferFilled(const guint buflen)
-    {
-#ifndef __PLAY_WAV_FROM_FILE__
-    gstDnlBuffer = gst_buffer_new();
-    gst_buffer_set_caps(gstDnlBuffer, caps);
-    GST_BUFFER_SIZE(gstDnlBuffer) = buflen;
-
-    //TODO: what if bufLen > requestBufLen?
-
-    // IMPL#1:
-    // gstDnlBuffer->data pointer is set to use chunk pointer.
-    // Although unlikely in the pull mode, this may potentially result
-    // in data loss if chunk gets overwritten before it is consumed.
-    gst_buffer_set_data(gstDnlBuffer, iChunk.Base(), buflen);
-
-    // IMPL#2
-    // Alternative implementation with new buffer alloc and memcpy.
-    // GStreamer will free this memory when buffer refcount becomes 0.
-    //guint8* ptr = (guint8*)g_malloc(buflen);
-    //GST_BUFFER_MALLOCDATA(gstDnlBuffer) = GST_BUFFER_DATA(gstDnlBuffer) = ptr;
-    //memcpy(ptr, iChunk.Base(), buflen);
-
-#else //__PLAY_WAV_FROM_FILE__
-    User::After(TTimeIntervalMicroSeconds32(150000));
-
-    TPtr8 p = fbuf->Des();
-    TInt buflen = iReadSize;
-    gstDnlBuffer = gst_buffer_new_and_alloc(buflen);
-    gst_buffer_set_caps(gstDnlBuffer, caps);
-    unsigned char* ptr = (unsigned char*)((fbuf->Ptr())+iReadBytes);
-    gst_buffer_set_data(gstDnlBuffer, ptr, buflen);
-
-    if ((iReadBytes + iReadSize> fsize))
-        {
-        // start over from the beginning
-        iReadBytes = 0;
-        }
-    else
-        {
-        iReadBytes += iReadSize;
-        }
-
-#endif //__PLAY_WAV_FROM_FILE__
-    gst_app_src_push_buffer(GST_APP_SRC(iAppSrc), gstDnlBuffer);
-    TRACE_PRN_N1(_L("TMS->DNL->BF: LEN[%d]"), buflen);
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::SetCodecCi
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::SetCodecCi()
-    {
-    TRAPD(err, SetCodecCiL());
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::SetCodecCiL
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPDownlink::SetCodecCiL()
-    {
-    TRACE_PRN_FN_ENT;
-
-    switch (iCodecID)
-        {
-        case KMccFourCCIdG711:
-            {
-            if (!iG711DecoderIntfc)
-                {
-                iG711DecoderIntfc = GST_G711_DECODER_GET_IFACE(iSink);
-                }
-            break;
-            }
-        case KMccFourCCIdG729:
-            {
-            if (!iG729DecoderIntfc)
-                {
-                iG729DecoderIntfc = GST_G729_DECODER_GET_IFACE(iSink);
-                }
-            break;
-            }
-        case KMccFourCCIdILBC:
-            {
-            if (!iIlbcDecoderIntfc)
-                {
-                iIlbcDecoderIntfc = GST_ILBC_DECODER_GET_IFACE(iSink);
-                }
-            break;
-            }
-        case KMccFourCCIdAMRNB:
-        case KMMFFourCCCodePCM16:
-            {
-            break;
-            }
-        default:
-            {
-            User::Leave(TMS_RESULT_INVALID_ARGUMENT);
-            }
-        }
-
-    if (iCodecID == KMccFourCCIdG711 ||
-        iCodecID == KMccFourCCIdG729 ||
-        iCodecID == KMccFourCCIdILBC ||
-        iCodecID == KMccFourCCIdAMRNB)
-        {
-        if (!iErrConcealmentIntfc)
-            {
-            iErrConcealmentIntfc = GST_ERROR_CONCEALMENT_GET_IFACE(iSink);
-            }
-        }
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::SetVolume
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::SetVolume(const guint volume)
-    {
-    g_object_set(G_OBJECT(iSink), "volume", volume, NULL);
-    TRACE_PRN_N1(_L("TMS->DNL: SetVolume [%d]"), volume);
-    return TMS_RESULT_SUCCESS;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::GetVolume
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::GetVolume(guint& volume)
-    {
-    g_object_get(G_OBJECT(iSink), "volume", &volume, NULL);
-    TRACE_PRN_N1(_L("TMS->DNL: GetVolume [%d]"), volume);
-    return TMS_RESULT_SUCCESS;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::GetMaxVolume
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::GetMaxVolume(guint& volume)
-    {
-    g_object_get(G_OBJECT(iSink), "maxvolume", &volume, NULL);
-    TRACE_PRN_N1(_L("TMS->DNL: MaxVolume [%d]"), volume);
-    return TMS_RESULT_SUCCESS;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::GetDataXferChunkHndl
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::GetDataXferChunkHndl(const TUint32 key, RChunk& chunk)
-    {
-    gint status = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iChunk.Handle())
-        {
-        if (iWriteDataXferHndlToClient && (iKey == key))
-            {
-            chunk = iChunk;
-            iWriteDataXferHndlToClient = FALSE;
-            iKey = 0;
-            status = TMS_RESULT_SUCCESS;
-            }
-        else
-            {
-            status = TMS_RESULT_ILLEGAL_OPERATION;
-            }
-        }
-
-    TRACE_PRN_IF_ERR(status);
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::SetIlbcCodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::SetIlbcCodecMode(gint mode)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EReady)
-        {
-        iILBCDecodeMode = mode;
-
-        if (iIlbcDecoderIntfc && iCodecID == KMccFourCCIdILBC)
-            {
-            if (mode == TMS_ILBC_CODEC_MODE_20MS_FRAME)
-                {
-                err = iIlbcDecoderIntfc->SetDecoderMode(E20msFrame);
-                TRACE_PRN_N(_L("TMS->DNL: iLBC Mode Set [20ms]"));
-                }
-            else if (mode == TMS_ILBC_CODEC_MODE_30MS_FRAME)
-                {
-                err = iIlbcDecoderIntfc->SetDecoderMode(E30msFrame);
-                TRACE_PRN_N(_L("TMS->DNL: iLBC Mode Set [30ms]"));
-                }
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::GetIlbcCodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::GetIlbcCodecMode(gint& mode)
-    {
-    // not available through CIs -> return cashed value
-    mode = iILBCDecodeMode;
-    TRACE_PRN_N1(_L("TMS->DNL: GetIlbcCodecMode [%d]"), mode);
-    return TMS_RESULT_SUCCESS;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::SetG711CodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::SetG711CodecMode(gint mode)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EReady)
-        {
-        iG711DecodeMode = mode;
-
-        if (iG711DecoderIntfc && iCodecID == KMccFourCCIdG711)
-            {
-            if (mode == TMS_G711_CODEC_MODE_ALAW)
-                {
-                err = iG711DecoderIntfc->SetDecoderMode(EDecALaw);
-                TRACE_PRN_N(_L("TMS->DNL: G711 Mode Set [ALaw]"));
-                }
-            else if (mode == TMS_G711_CODEC_MODE_MULAW)
-                {
-                err = iG711DecoderIntfc->SetDecoderMode(EDecULaw);
-                TRACE_PRN_N(_L("TMS->DNL: G711 Mode Set [uLaw]"));
-                }
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::GetG711CodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::GetG711CodecMode(gint& mode)
-    {
-    // not available through CIs -> return cached value
-    mode = iG711DecodeMode;
-    TRACE_PRN_N1(_L("TMS->DNL: GetG711CodecMode [%d]"), mode);
-    return TMS_RESULT_SUCCESS;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::FrameModeRqrdForEC
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::FrameModeRqrdForEC(gboolean& frmodereq)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EReady)
-        {
-        if (iErrConcealmentIntfc)
-            {
-            err = iErrConcealmentIntfc->FrameModeRqrdForEC(&frmodereq);
-            TRACE_PRN_N1(_L("TMS->DNL: FrameModeRqrdForEC [%d]"), frmodereq);
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::SetFrameMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::SetFrameMode(const gboolean frmode)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EReady)
-        {
-        iFrameMode = frmode;
-
-        if (iErrConcealmentIntfc)
-            {
-            err = iErrConcealmentIntfc->SetFrameMode(frmode);
-            TRACE_PRN_N1(_L("TMS->DNL: SetFrameMode [%d]"), frmode);
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::GetFrameMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::GetFrameMode(gboolean& frmode)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iErrConcealmentIntfc)
-        {
-        // not available through CIs -> return cached value
-        frmode = iFrameMode;
-        TRACE_PRN_N1(_L("TMS->DNL: GetFrameMode [%d]"), frmode);
-        err = TMS_RESULT_SUCCESS;
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::ConcealErrorForNextBuffer
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::ConcealErrorForNextBuffer()
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iErrConcealmentIntfc)
-        {
-        err = iErrConcealmentIntfc->ConcealErrorForNextBuffer();
-        TRACE_PRN_N(_L("TMS->DNL: ConcealErrorForNextBuffer"));
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::SetCng
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::SetCng(const TMSFormatType fmttype, const gboolean cng)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EReady)
-        {
-        if (fmttype == TMS_FORMAT_G711 && iG711DecoderIntfc)
-            {
-            err = iG711DecoderIntfc->SetCng(cng);
-            TRACE_PRN_N1(_L("TMS->DNL: SetCng [%d]"), cng);
-            }
-        else if (fmttype == TMS_FORMAT_ILBC && iIlbcDecoderIntfc)
-            {
-            err = iIlbcDecoderIntfc->SetCng(cng);
-            TRACE_PRN_N1(_L("TMS->DNL: SetCng [%d]"), cng);
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::GetCng
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::GetCng(const TMSFormatType fmttype, gboolean& cng)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EReady)
-        {
-        if (fmttype == TMS_FORMAT_G711 && iG711DecoderIntfc)
-            {
-            err = iG711DecoderIntfc->GetCng(&cng);
-            TRACE_PRN_N1(_L("TMS->DNL: GetCng [%d]"), cng);
-            }
-        else if (fmttype == TMS_FORMAT_ILBC && iIlbcDecoderIntfc)
-            {
-            err = iIlbcDecoderIntfc->GetCng(&cng);
-            TRACE_PRN_N1(_L("TMS->DNL: GetCng [%d]"), cng);
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::SetPlc
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::SetPlc(const TMSFormatType fmttype, const gboolean plc)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EReady)
-        {
-        if (fmttype == TMS_FORMAT_G711 && iG711DecoderIntfc)
-            {
-            iPlc = plc;
-            err = iG711DecoderIntfc->SetPlc(iPlc);
-            TRACE_PRN_N1(_L("TMS->DNL: SetPlc [%d]"), plc);
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::GetPlc
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::GetPlc(const TMSFormatType fmttype, gboolean& plc)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (fmttype == TMS_FORMAT_G711 && iG711DecoderIntfc)
-        {
-        // not available through CIs -> return cached value
-        plc = iPlc;
-        err = TMS_RESULT_SUCCESS;
-        TRACE_PRN_N1(_L("TMS->DNL: GetPlc [%d]"), plc);
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::BadLsfNextBuffer
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::BadLsfNextBuffer()
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EStreaming)
-        {
-        if (iCodecID == KMccFourCCIdG729 && iG729DecoderIntfc)
-            {
-            err = iG729DecoderIntfc->BadLsfNextBuffer();
-            TRACE_PRN_N(_L("TMS->DNL: BadLsfNextBuffer"));
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::SetAudioDeviceL
-//
-// -----------------------------------------------------------------------------
-void TMSIPDownlink::SetAudioDeviceL(TMSAudioOutput output)
-    {
-    gint outputDev;
-
-    // ENoPreference=0, EAll=1, ENoOutput=2, EPrivate=3, EPublic=4
-    switch (output)
-        {
-        case TMS_AUDIO_OUTPUT_PRIVATE:
-        case TMS_AUDIO_OUTPUT_HANDSET:
-            outputDev = (gint)CAudioOutput::EPrivate;
-            break;
-        case TMS_AUDIO_OUTPUT_PUBLIC:
-        case TMS_AUDIO_OUTPUT_LOUDSPEAKER:
-            outputDev = (gint)CAudioOutput::EPublic;
-            break;
-        default: // Use default device routing
-            outputDev = (gint)CAudioOutput::ENoPreference;
-            break;
-        }
-
-    g_object_set(G_OBJECT(iSink), "outputdevice", outputDev, NULL);
-    TRACE_PRN_N1(_L("TMS->DNL: SetAudioDeviceL [%d]"), outputDev);
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::GetAudioDeviceL
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPDownlink::GetAudioDeviceL(TMSAudioOutput& output)
-    {
-    TRACE_PRN_FN_ENT;
-
-    gint outputDev;
-    g_object_get(G_OBJECT(iSink), "outputdevice", &outputDev, NULL);
-    TRACE_PRN_N1(_L("TMS->DNL: GetAudioDevice [%d]"), outputDev);
-
-    switch (outputDev)
-        {
-        case CAudioOutput::ENoPreference:
-        case CAudioOutput::EAll:
-        case CAudioOutput::ENoOutput:
-        case CAudioOutput::EPrivate:
-            output = TMS_AUDIO_OUTPUT_PRIVATE;
-            break;
-        case CAudioOutput::EPublic:
-            output = TMS_AUDIO_OUTPUT_PUBLIC;
-            break;
-        default:
-            output = TMS_AUDIO_OUTPUT_PRIVATE;
-            break;
-        }
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// End of file
--- a/mmserv/tms/tmscallserver/src/ipcalldownlinkds.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,822 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#include <AudioPreference.h>
-#include <AudioOutput.h>
-#include <mmcccodecinformation.h>
-#include <IlbcDecoderIntfc.h>
-#include <G711DecoderIntfc.h>
-#include <G729DecoderIntfc.h>
-#include <ErrorConcealmentIntfc.h>
-#include "tmsutility.h"
-#include "ipcallstream.h"
-
-using namespace TMS;
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::TMSIPDownlink
-// Standard Constructor
-// -----------------------------------------------------------------------------
-//
-TMSIPDownlink::TMSIPDownlink()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::~TMSIPDownlink
-// Standard Constructor
-// -----------------------------------------------------------------------------
-//
-TMSIPDownlink::~TMSIPDownlink()
-    {
-    TRACE_PRN_FN_ENT;
-
-    Stop();
-
-    delete iAudioOutput;
-    delete iErrConcealmentIntfc;
-    delete iG711DecoderIntfc;
-    delete iG729DecoderIntfc;
-    delete iIlbcDecoderIntfc;
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::NewL
-// Symbian two-phase constructor
-// -----------------------------------------------------------------------------
-//
-TMSIPDownlink* TMSIPDownlink::NewL(const guint32 codecID,
-        const TMMFPrioritySettings priority)
-    {
-    TMSIPDownlink* self = new (ELeave) TMSIPDownlink();
-    CleanupStack::PushL(self);
-    self->ConstructL(codecID, priority);
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::ConstructL
-// Part two of Symbian two phase construction
-// -----------------------------------------------------------------------------
-//
-void TMSIPDownlink::ConstructL(const guint32 codecID,
-        const TMMFPrioritySettings priority)
-    {
-    TRACE_PRN_FN_ENT;
-
-    iCodecID = codecID;
-    iPriority = priority;
-
-    // Client must set these before querying!
-    iG711DecodeMode = TMS_G711_CODEC_MODE_ALAW;
-    iILBCDecodeMode = TMS_ILBC_CODEC_MODE_20MS_FRAME;
-
-    TRAPD(err, InitDevSoundL(EMMFStatePlaying, priority));
-    if (err != TMS_RESULT_SUCCESS)
-        {
-        User::Leave(err);
-        }
-
-    iMaxBufLen = ConfigureMedia(iCodecID);
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::Start
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPDownlink::Start()
-    {
-    TRACE_PRN_FN_ENT;
-
-    gint err = TMS_RESULT_ILLEGAL_OPERATION;
-
-    if (iStatus == EReady && iDevSound)
-        {
-        TRAP(err, iDevSound->PlayInitL());
-        TRACE_PRN_IF_ERR(err);
-
-#ifdef _DEBUG
-        iSamplesPlayedCount = 0;
-#endif
-        if (err != TMS_RESULT_SUCCESS)
-            {
-            iStatus = EReady;
-            }
-        }
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::Stop
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPDownlink::Stop()
-    {
-    TRACE_PRN_FN_ENT;
-
-    if (iStatus == EStreaming && iDevSound)
-        {
-        iDevSound->Stop();
-        iStatus = EReady;
-        }
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::BufferToBeFilled
-// A reference to the buffer delivered from the DevSound is stored locally
-// for later use. It will be filled with the data passed from the client
-// when it calls BufferFilled.
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPDownlink::BufferToBeFilled(CMMFBuffer* aBuffer)
-    {
-    // Store pointer to the received buffer
-    iDevSoundBufPtr = static_cast<CMMFDataBuffer*> (aBuffer);
-    iBufLen = iDevSoundBufPtr->RequestSize();
-    TRACE_PRN_N1(_L("TMS->DNL->BTBF: LEN[%d]"), iBufLen);
-
-#ifndef __WINSCW__
-    //TODO: revisit this!
-    // The first AMR buffer returns 1 for no data frame.
-    /*if (iCodecID == KMccFourCCIdAMRNB)
-     {
-     iBufLen = iMaxBufLen;
-     }*/
-#endif //__WINSCW__
-    // Create or adjust the chunk
-    gint err = DoChunk(iBufLen, iMsgBuffer);
-
-    if (err != TMS_RESULT_SUCCESS)
-        {
-        Stop();
-        iMsgBuffer.iStatus = err;
-        }
-    else
-        {
-        // Notify client there is buffer ready to be filled
-        iMsgBuffer.iStatus = err;
-        iMsgBuffer.iInt = iBufLen;
-        iStatus = EStreaming;
-        // If chunk is opened, we will expect a call from the client to
-        // get chunk handle. When we get a call to copy chunk handle,
-        // check these variables and see if they match. This is not
-        // completely secure, but will provide some level of security
-        if (iMsgBuffer.iBool == TRUE)
-            {
-            iWriteDataXferHndlToClient = TRUE;
-            iKey = iMsgBuffer.iUint32;
-            }
-        }
-
-    iMsgBuffer.iRequest = ECmdFillBuffer;
-    err = iMsgQueue.Send(iMsgBuffer);
-
-    TRACE_PRN_IF_ERR(err);
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::BufferFilled
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPDownlink::BufferFilled(const guint buflen)
-    {
-    TRACE_PRN_N1(_L("TMS->DNL->BF: LEN[%d]"), buflen);
-
-    // Copy data over from chunk
-    TPtr8 dataPtr(iChunk.Base(), buflen, iMaxBufLen);
-    //    RDebug::RawPrint(dataPtr);
-
-    if (iStatus == EStreaming && iDevSound && iDevSoundBufPtr)
-        {
-        // Fill D/S buffer and send it for playback
-        iDevSoundBufPtr->Data() = dataPtr;
-        TRAPD(ignore, iDevSoundBufPtr->SetRequestSizeL(buflen));
-        if (ignore) //makes compiler happy
-            {
-            //try playing anyway
-            iDevSound->PlayData();
-            }
-        else
-            {
-            iDevSound->PlayData();
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::SetCodecCi
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::SetCodecCi()
-    {
-    TRAPD(err, SetCodecCiL());
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::SetCodecCiL
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPDownlink::SetCodecCiL()
-    {
-    TRACE_PRN_FN_ENT;
-
-    switch (iCodecID)
-        {
-        case KMccFourCCIdG711:
-            {
-            if (!iG711DecoderIntfc)
-                {
-                iG711DecoderIntfc = CG711DecoderIntfc::NewL(*iDevSound);
-                }
-            break;
-            }
-        case KMccFourCCIdG729:
-            {
-            if (!iG729DecoderIntfc)
-                {
-                iG729DecoderIntfc = CG729DecoderIntfc::NewL(*iDevSound);
-                }
-            break;
-            }
-        case KMccFourCCIdILBC:
-            {
-            if (!iIlbcDecoderIntfc)
-                {
-                iIlbcDecoderIntfc = CIlbcDecoderIntfc::NewL(*iDevSound);
-                }
-            break;
-            }
-        case KMccFourCCIdAMRNB:
-        case KMMFFourCCCodePCM16:
-            {
-            break;
-            }
-        default:
-            {
-            User::Leave(TMS_RESULT_INVALID_ARGUMENT);
-            break;
-            }
-        }
-
-    if (!iErrConcealmentIntfc && iCodecID != KMMFFourCCCodePCM16)
-        {
-        iErrConcealmentIntfc = CErrorConcealmentIntfc::NewL(*iDevSound);
-        }
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::SetVolume
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::SetVolume(const guint volume)
-    {
-    gint ret(TMS_RESULT_UNINITIALIZED_OBJECT);
-    if (iDevSound)
-        {
-        iDevSound->SetVolume(volume);
-        ret = TMS_RESULT_SUCCESS;
-        }
-    TRACE_PRN_N1(_L("TMS->DNL: SetVolume [%d]"), volume);
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::GetVolume
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::GetVolume(guint& volume)
-    {
-    gint ret(TMS_RESULT_UNINITIALIZED_OBJECT);
-    if (iDevSound)
-        {
-        volume = iDevSound->Volume();
-        ret = TMS_RESULT_SUCCESS;
-        }
-    TRACE_PRN_N1(_L("TMS->DNL: GetVolume [%d]"), volume);
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::GetMaxVolume
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::GetMaxVolume(guint& volume)
-    {
-    gint ret(TMS_RESULT_UNINITIALIZED_OBJECT);
-    if (iDevSound)
-        {
-        volume = iDevSound->MaxVolume();
-        ret = TMS_RESULT_SUCCESS;
-        }
-    TRACE_PRN_N1(_L("TMS->DNL: MaxVolume [%d]"), volume);
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::GetDataXferChunkHndl
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::GetDataXferChunkHndl(const TUint32 key, RChunk& chunk)
-    {
-    gint status = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iChunk.Handle())
-        {
-        if (iWriteDataXferHndlToClient && (iKey == key))
-            {
-            chunk = iChunk;
-            iWriteDataXferHndlToClient = FALSE;
-            iKey = 0;
-            status = TMS_RESULT_SUCCESS;
-            }
-        else
-            {
-            status = TMS_RESULT_ILLEGAL_OPERATION;
-            }
-        }
-
-    TRACE_PRN_IF_ERR(status);
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::SetIlbcCodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::SetIlbcCodecMode(gint mode)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EReady)
-        {
-        iILBCDecodeMode = mode;
-
-        if (iIlbcDecoderIntfc && iCodecID == KMccFourCCIdILBC)
-            {
-            if (mode == TMS_ILBC_CODEC_MODE_20MS_FRAME)
-                {
-                err = iIlbcDecoderIntfc->SetDecoderMode(
-                        CIlbcDecoderIntfc::E20msFrame);
-                TRACE_PRN_N(_L("TMS->DNL: iLBC Mode Set [20ms]"));
-                }
-            else if (mode == TMS_ILBC_CODEC_MODE_30MS_FRAME)
-                {
-                err = iIlbcDecoderIntfc->SetDecoderMode(
-                        CIlbcDecoderIntfc::E30msFrame);
-                TRACE_PRN_N(_L("TMS->DNL: iLBC Mode Set [30ms]"));
-                }
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::GetIlbcCodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::GetIlbcCodecMode(gint& mode)
-    {
-    // not available through CIs -> return cashed value
-    mode = iILBCDecodeMode;
-    TRACE_PRN_N1(_L("TMS->DNL: GetIlbcCodecMode [%d]"), mode);
-    return TMS_RESULT_SUCCESS;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::SetG711CodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::SetG711CodecMode(gint mode)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EReady)
-        {
-        iG711DecodeMode = mode;
-
-        if (iG711DecoderIntfc && iCodecID == KMccFourCCIdG711)
-            {
-            if (mode == TMS_G711_CODEC_MODE_ALAW)
-                {
-                err = iG711DecoderIntfc->SetDecoderMode(
-                        CG711DecoderIntfc::EDecALaw);
-                TRACE_PRN_N(_L("TMS->DNL: G711 Mode Set [ALaw]"));
-                }
-            else if (mode == TMS_G711_CODEC_MODE_MULAW)
-                {
-                err = iG711DecoderIntfc->SetDecoderMode(
-                        CG711DecoderIntfc::EDecULaw);
-                TRACE_PRN_N(_L("TMS->DNL: G711 Mode Set [uLaw]"));
-                }
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::GetG711CodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::GetG711CodecMode(gint& mode)
-    {
-    // not available through CIs -> return cached value
-    mode = iG711DecodeMode;
-    TRACE_PRN_N1(_L("TMS->DNL: GetG711CodecMode [%d]"), mode);
-    return TMS_RESULT_SUCCESS;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::FrameModeRqrdForEC
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::FrameModeRqrdForEC(gboolean& frmodereq)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EReady)
-        {
-        if (iErrConcealmentIntfc)
-            {
-            err = iErrConcealmentIntfc->FrameModeRqrdForEC(frmodereq);
-            TRACE_PRN_N1(_L("TMS->DNL: FrameModeRqrdForEC [%d]"), frmodereq);
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::SetFrameMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::SetFrameMode(const gboolean frmode)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EReady)
-        {
-        iFrameMode = frmode;
-
-        if (iErrConcealmentIntfc)
-            {
-            err = iErrConcealmentIntfc->SetFrameMode(frmode);
-            TRACE_PRN_N1(_L("TMS->DNL: SetFrameMode [%d]"), frmode);
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::GetFrameMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::GetFrameMode(gboolean& frmode)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iErrConcealmentIntfc)
-        {
-        // not available through CIs -> return cached value
-        frmode = iFrameMode;
-        TRACE_PRN_N1(_L("TMS->DNL: GetFrameMode [%d]"), frmode);
-        err = TMS_RESULT_SUCCESS;
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::ConcealErrorForNextBuffer
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::ConcealErrorForNextBuffer()
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iErrConcealmentIntfc)
-        {
-        err = iErrConcealmentIntfc->ConcealErrorForNextBuffer();
-        TRACE_PRN_N(_L("TMS->DNL: ConcealErrorForNextBuffer"));
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::SetCng
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::SetCng(const TMSFormatType fmttype, const gboolean cng)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EReady)
-        {
-        if (fmttype == TMS_FORMAT_G711 && iG711DecoderIntfc)
-            {
-            err = iG711DecoderIntfc->SetCng(cng);
-            TRACE_PRN_N1(_L("TMS->DNL: SetCng [%d]"), cng);
-            }
-        else if (fmttype == TMS_FORMAT_ILBC && iIlbcDecoderIntfc)
-            {
-            err = iIlbcDecoderIntfc->SetCng(cng);
-            TRACE_PRN_N1(_L("TMS->DNL: SetCng [%d]"), cng);
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::GetCng
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::GetCng(const TMSFormatType fmttype, gboolean& cng)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EReady)
-        {
-        if (fmttype == TMS_FORMAT_G711 && iG711DecoderIntfc)
-            {
-            err = iG711DecoderIntfc->GetCng(cng);
-            TRACE_PRN_N1(_L("TMS->DNL: GetCng [%d]"), cng);
-            }
-        else if (fmttype == TMS_FORMAT_ILBC && iIlbcDecoderIntfc)
-            {
-            err = iIlbcDecoderIntfc->GetCng(cng);
-            TRACE_PRN_N1(_L("TMS->DNL: GetCng [%d]"), cng);
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::SetPlc
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::SetPlc(const TMSFormatType fmttype, const gboolean plc)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EReady)
-        {
-        if (fmttype == TMS_FORMAT_G711 && iG711DecoderIntfc)
-            {
-            iPlc = plc;
-            err = iG711DecoderIntfc->SetPlc(iPlc);
-            TRACE_PRN_N1(_L("TMS->DNL: SetPlc [%d]"), plc);
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::GetPlc
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::GetPlc(const TMSFormatType fmttype, gboolean& plc)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (fmttype == TMS_FORMAT_G711 && iG711DecoderIntfc)
-        {
-        // not available through CIs -> return cached value
-        plc = iPlc;
-        err = TMS_RESULT_SUCCESS;
-        TRACE_PRN_N1(_L("TMS->DNL: GetPlc [%d]"), plc);
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::BadLsfNextBuffer
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPDownlink::BadLsfNextBuffer()
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EStreaming)
-        {
-        if (iCodecID == KMccFourCCIdG729 && iG729DecoderIntfc)
-            {
-            err = iG729DecoderIntfc->BadLsfNextBuffer();
-            TRACE_PRN_N(_L("TMS->DNL: BadLsfNextBuffer"));
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::SetAudioDeviceL
-//
-// -----------------------------------------------------------------------------
-void TMSIPDownlink::SetAudioDeviceL(TMSAudioOutput output)
-    {
-    TRACE_PRN_FN_ENT;
-
-    if (!iAudioOutput)
-        {
-        iAudioOutput = CAudioOutput::NewL(*iDevSound);
-        }
-
-    if (iAudioOutput)
-        {
-        // ENoPreference=0, EAll=1, ENoOutput=2, EPrivate=3, EPublic=4
-        CAudioOutput::TAudioOutputPreference outputDev;
-
-        switch (output)
-            {
-            case TMS_AUDIO_OUTPUT_PRIVATE:
-            case TMS_AUDIO_OUTPUT_HANDSET:
-                outputDev = CAudioOutput::EPrivate;
-                break;
-            case TMS_AUDIO_OUTPUT_PUBLIC:
-            case TMS_AUDIO_OUTPUT_LOUDSPEAKER:
-                outputDev = CAudioOutput::EPublic;
-                break;
-            default: // Use default device routing
-                outputDev = CAudioOutput::ENoPreference;
-                break;
-            }
-
-        iAudioOutput->SetAudioOutputL(outputDev);
-        TRACE_PRN_N1(_L("TMS->DNL: SetAudioDeviceL [%d]"), outputDev);
-        }
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::GetAudioDeviceL
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPDownlink::GetAudioDeviceL(TMSAudioOutput& output)
-    {
-    TRACE_PRN_FN_ENT;
-
-    if (!iAudioOutput)
-        {
-        iAudioOutput = CAudioOutput::NewL(*iDevSound);
-        }
-
-    if (iAudioOutput)
-        {
-        CAudioOutput::TAudioOutputPreference outputDev =
-                iAudioOutput->AudioOutput();
-
-        switch (outputDev)
-            {
-            case CAudioOutput::ENoPreference:
-            case CAudioOutput::EAll:
-            case CAudioOutput::ENoOutput:
-            case CAudioOutput::EPrivate:
-                output = TMS_AUDIO_OUTPUT_PRIVATE;
-                break;
-            case CAudioOutput::EPublic:
-                output = TMS_AUDIO_OUTPUT_PUBLIC;
-                break;
-            default:
-                output = TMS_AUDIO_OUTPUT_PRIVATE;
-                break;
-            }
-        }
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// CALLBACKS
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::InitializeComplete
-// A callback from the DevSound indicating completion of the initialization.
-// It will send config data to the D/S and configure the encoder via CI.
-// If everything goes well, the state of the thread is set EReady.
-// The initialization completion message is sent back to the main thread.
-// -----------------------------------------------------------------------------
-//
-void TMSIPDownlink::InitializeComplete(TInt aError)
-    {
-    TRACE_PRN_FN_ENT;
-
-    gint err = aError;
-
-    if (err == TMS_RESULT_SUCCESS && iDevSound)
-        {
-        TMMFCapabilities conf;
-        conf = iDevSound->Config();
-        conf.iRate = EMMFSampleRate8000Hz;
-        conf.iChannels = EMMFMono;
-        TRAP(err, iDevSound->SetConfigL(conf));
-        if (err == TMS_RESULT_SUCCESS)
-            {
-            // We are ready to stream even in case of later CI setting failure
-            iStatus = EReady;
-            iMaxVolume = iDevSound->MaxVolume();
-            }
-
-        // Init Custom Interface API to the decoder
-        err = SetCodecCi();
-        if (err != TMS_RESULT_SUCCESS)
-            {
-            // DEBUG only
-            // Can ignore error - although decoder is not fully configured but
-            // it can still run in the default mode.
-            TRACE_PRN_IF_ERR(err);
-            }
-        }
-
-    // TODO: Notify client
-
-    TRACE_PRN_IF_ERR(err);
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPDownlink::PlayError
-// From MDevSoundObserver
-// Record error is send to client over comm channel.
-// The state of recorder is rolled back to EReady.
-// -----------------------------------------------------------------------------
-//
-void TMSIPDownlink::PlayError(TInt /*aError*/)
-    {
-    //TRACE_PRN_IF_ERR(aError);
-
-#ifdef _DEBUG
-    iSamplesPlayedCount = 0;
-#endif
-    iStatus = EReady;
-
-    // TODO: Notify client
-    }
-
-// End of file
--- a/mmserv/tms/tmscallserver/src/ipcallstreambase.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,174 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#include <e32math.h>
-#include <mmcccodecinformation.h>
-#include "tmsutility.h"
-#include "tmsshared.h"
-#include "ipcallstream.h"
-
-using namespace TMS;
-
-// -----------------------------------------------------------------------------
-// TMSIPCallStreamBase::~TMSIPCallStreamBase
-// Destructor
-// -----------------------------------------------------------------------------
-//
-TMSIPCallStreamBase::~TMSIPCallStreamBase()
-    {
-    TRACE_PRN_FN_ENT;
-
-    if (iChunk.Handle() > 0)
-        {
-        iChunk.Close();
-        }
-
-#ifndef __USE_GSTREAMER__
-    delete iDevSound;
-#endif //__USE_GSTREAMER__
-    TRACE_PRN_FN_EXT;
-    }
-
-#ifndef __USE_GSTREAMER__
-// -----------------------------------------------------------------------------
-// TMSIPCallStreamBase::InitDevSoundL
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPCallStreamBase::InitDevSoundL(const TMMFState aDevSoundState,
-        const TMMFPrioritySettings priority)
-    {
-    TRACE_PRN_FN_ENT;
-
-    if (!iDevSound)
-        {
-        // Create D/S recording/playing device
-        iDevSound = CMMFDevSound::NewL();
-        }
-
-    if (iDevSound)
-        {
-        iDevSound->InitializeL(*this, TFourCC(iCodecID), aDevSoundState);
-        iDevSound->SetPrioritySettings(priority);
-        }
-    }
-#endif //__USE_GSTREAMER__
-
-// -----------------------------------------------------------------------------
-// TMSIPCallStreamBase::SetMsgQueue
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPCallStreamBase::SetMsgQueue(const RMsgQueue<TmsMsgBuf> aMsgQueue)
-    {
-    iMsgQueue = aMsgQueue;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPCallStreamBase::ConfigureMedia
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPCallStreamBase::ConfigureMedia(const guint32 aCodecID)
-    {
-    gint framelen = 0;
-
-    switch (aCodecID)
-        {
-        case KMccFourCCIdG711:
-            iMediaType = "audio/x-alaw";
-            // iMediaType = "audio/x-mulaw";
-            framelen = KTMSG711FrameLen10ms; //TODO: may be H/W specific!
-            //framelen = KTMSG711FrameLen20ms;
-            break;
-        case KMccFourCCIdG729:
-            iMediaType = "audio/g729";
-            framelen = KTMSG729FrameLen;
-            break;
-        case KMccFourCCIdILBC:
-            iMediaType = "audio/ilbc";
-            framelen = KTMSILBCFrameLen20ms;
-            //framelen = KTMSILBCFrameLen30ms;
-            break;
-        case KMccFourCCIdAMRNB:
-            iMediaType = "audio/amr";
-            framelen = KTMSAMRNBFrameLen;
-            //framelen = KTMSAMRNBFrameLenFM;
-            break;
-        case KMMFFourCCCodePCM16:
-        default:
-            iMediaType = "audio/x-raw-int";
-            framelen = KTMSPCM16FrameLen;
-#ifdef __WINSCW__
-            framelen *= 4; //16kB
-#endif
-            break;
-        }
-
-    //TODO: DEVLON TEST
-    if (iCodecID != KMMFFourCCCodePCM16)
-        {
-        framelen *= 10;
-        }
-    //TODO: DEVLON TEST
-
-    return framelen;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPCallStreamBase::DoChunk
-// Checks, adjusts and creates global RChunk.
-// -----------------------------------------------------------------------------
-//
-gint TMSIPCallStreamBase::DoChunk(const gint aDataLen, TmsMsgBuf& aMsgBuffer)
-    {
-    gint status(KErrNone);
-
-    // If chunk already created, try to reuse it
-    if (iChunk.Handle())
-        {
-        // committed size is smaller but chunk is large enough to hold data
-        if ((iChunk.Size() < aDataLen) && (aDataLen <= iChunk.MaxSize()))
-            {
-            status = iChunk.Adjust(aDataLen);
-            TRACE_PRN_N1(_L("IP_CALL: DoChunk->Chunk Adjusted [%d]"), aDataLen);
-            }
-        else if (aDataLen > iChunk.MaxSize())
-            {
-            iChunk.Close();
-            TRACE_PRN_N(_L("IP_CALL: DoChunk->Chunk Closed"));
-            }
-        }
-    RET_ERR_IF_ERR(status);
-
-    // Request kernel to create global RChunk if needed
-    aMsgBuffer.iBool = FALSE;
-    if (!iChunk.Handle())
-        {
-        // TODO consider using some max instead
-        status = iChunk.CreateGlobal(KNullDesC, aDataLen, aDataLen);
-        // Mark to re-open chunk handle
-        aMsgBuffer.iBool = TRUE;
-        aMsgBuffer.iUint32 = Math::Random();
-        TRACE_PRN_N2(_L("IP_CALL: DoChunk->Chunk Created [%d]key[%d]"),
-                aDataLen, aMsgBuffer.iUint32);
-        }
-    TRACE_PRN_IF_ERR(status);
-    return status;
-    }
-
-// End of file
--- a/mmserv/tms/tmscallserver/src/ipcalluplink.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,758 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#include <audiopreference.h>
-#include <mmcccodecinformation.h>
-#include <gstappsink.h>
-#include "tmsutility.h"
-#include "ipcallstream.h"
-
-using namespace TMS;
-
-static TMSIPUplink* iSelfUp;
-GstBuffer* gstUplBuffer;
-#ifdef _DEBUG
-//static TInt iHeapUp;
-#endif //_DEBUG
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::cb_record_raw_handoff
-// -----------------------------------------------------------------------------
-//
-void TMSIPUplink::cb_record_raw_handoff(GstElement *sink)
-    {
-    TRACE_PRN_N(_L("TMS->UPL: cb_record_raw_handoff Enter"));
-
-#ifdef _DEBUG
-    /*    TInt block;
-     RHeap &heap = User::Heap();
-     TInt avail = heap.Available(block);
-     RDebug::Print(_L("VoIP->PRINT-HEAP-UP:Available:[%d], delta:[%d]"),
-     avail, iHeapUp-avail);
-     iHeapUp = avail;*/
-#endif
-
-    gstUplBuffer = gst_app_sink_pull_buffer(GST_APP_SINK(sink));
-    iSelfUp->BufferToBeEmptied();
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::bus_call
-// -----------------------------------------------------------------------------
-//
-gboolean TMSIPUplink::bus_call(GstBus* /*bus*/, GstMessage* msg,
-        gpointer /*data*/)
-    {
-    switch (GST_MESSAGE_TYPE(msg))
-        {
-        case GST_MESSAGE_EOS:
-            {
-            gst_element_set_state(iSelfUp->iPipelineRec, GST_STATE_NULL);
-            gst_object_unref(GST_OBJECT(iSelfUp->iPipelineRec));
-            break;
-            }
-        case GST_MESSAGE_ERROR:
-            {
-            gchar *debug;
-            GError *err;
-            gst_message_parse_error(msg, &err, &debug);
-            g_free(debug);
-            g_print("Error: %s\n", err->message);
-            g_error_free(err);
-            break;
-            }
-        default:
-            {
-            break;
-            }
-        }
-    return ETrue;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::gst_initialize_record
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::gst_initialize_record()
-    {
-    TRACE_PRN_FN_ENT;
-
-    gint err = KErrNone;
-
-    // create a new bin to hold the elements
-    iPipelineRec = gst_pipeline_new("pipelineRec");
-    iSource = gst_element_factory_make("devsoundsrc", "record_audio");
-    iAppSink = gst_element_factory_make("appsink", "appsink");
-
-    if (!iSource || !iAppSink)
-        {
-        err = KErrNotFound;
-        TRACE_PRN_IF_ERR(err);
-        return err;
-        }
-
-    iMaxBufLen = ConfigureMedia(iCodecID);
-
-    GstCaps* caps = gst_caps_new_simple(iMediaType,
-                                        "width", G_TYPE_INT, 16,
-                                        "depth", G_TYPE_INT, 16,
-                                        "signed", G_TYPE_BOOLEAN, TRUE,
-                                        "endianness", G_TYPE_INT, G_BYTE_ORDER,
-                                        "rate", G_TYPE_INT, 8000,
-                                        "channels", G_TYPE_INT, 1,
-                                        NULL);
-
-    iBusRec = gst_pipeline_get_bus(GST_PIPELINE(iPipelineRec));
-    gst_bus_add_watch(iBusRec, (TMSIPUplink::bus_call), NULL);
-    gst_object_unref(iBusRec);
-
-    // add objects to the main iPipelineRec
-    gst_bin_add_many(GST_BIN(iPipelineRec), iSource, iAppSink, NULL);
-
-    // link the elements
-    gst_element_link_filtered(iSource, iAppSink, caps);
-
-    g_object_set(G_OBJECT(iAppSink),
-                 "max-buffers", 1,
-                 "emit-signals", TRUE,
-                 "sync", FALSE,
-                 NULL);
-
-    g_signal_connect(iAppSink, "new-buffer",
-                     G_CALLBACK(cb_record_raw_handoff),
-                     NULL);
-
-    gst_app_sink_set_caps(GST_APP_SINK(iAppSink), caps);
-    gst_caps_unref(caps);
-
-    //NOTE: d/s is not ready at this time to return true maxgain
-    TInt maxgain = 1;
-#ifdef __WINSCW__
-    maxgain = 64;
-#endif //__WINSCW__
-    g_object_set(G_OBJECT(iSource),
-                 "blocksize", iMaxBufLen,
-                 "gain", maxgain,
-#ifndef __WINSCW__
-                 "priority", (gint)iPriority.iPriority,
-                 "preference", (gint)iPriority.iPref,
-#endif
-                 NULL);
-
-    err = SetCodecCi();
-    //gst_element_set_state(iPipelineRec, GST_STATE_READY);
-
-    TRACE_PRN_FN_EXT;
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::gst_record_raw
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::gst_record_raw()
-    {
-    // start recording
-    gst_element_set_state(iPipelineRec, GST_STATE_PLAYING);
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::TMSIPUplink
-// Standard Constructor
-// -----------------------------------------------------------------------------
-//
-TMSIPUplink::TMSIPUplink()
-    {
-    iSelfUp = this;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::~TMSIPUplink
-// Standard Constructor
-// -----------------------------------------------------------------------------
-//
-TMSIPUplink::~TMSIPUplink()
-    {
-    TRACE_PRN_FN_ENT;
-
-    Stop();
-    gst_object_unref(GST_OBJECT(iPipelineRec));
-    gst_deinit();
-
-    delete iSpeechEncoderConfig;
-    delete iG711EncoderIntfc;
-    delete iG729EncoderIntfc;
-    delete iIlbcEncoderIntfc;
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::NewL
-// Symbian two-phase constructor
-// -----------------------------------------------------------------------------
-//
-TMSIPUplink* TMSIPUplink::NewL(const guint32 codecID,
-        const TMMFPrioritySettings priority)
-    {
-    TMSIPUplink* self = new (ELeave) TMSIPUplink();
-    CleanupStack::PushL(self);
-    self->ConstructL(codecID, priority);
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::ConstructL
-// Part two of Symbian two phase construction
-// -----------------------------------------------------------------------------
-//
-void TMSIPUplink::ConstructL(const guint32 codecID,
-        const TMMFPrioritySettings priority)
-    {
-    TRACE_PRN_FN_ENT;
-
-    iCodecID = codecID;
-    iPriority = priority;
-    //    SetTime();
-    gst_init(NULL, NULL);
-    //    CalcLatency();
-    //    SetTime();
-    gint err = gst_initialize_record();
-    if (err != TMS_RESULT_SUCCESS)
-        {
-        User::Leave(err);
-        }
-
-    // Client must set these before querying!
-    iG711EncodeMode = TMS_G711_CODEC_MODE_ALAW;
-    iILBCEncodeMode = TMS_ILBC_CODEC_MODE_20MS_FRAME;
-    //    CalcLatency();
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::Start
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPUplink::Start()
-    {
-    TRACE_PRN_FN_ENT;
-
-    gst_record_raw();
-    iStatus = EStreaming;
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::Stop
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPUplink::Stop()
-    {
-    TRACE_PRN_FN_ENT;
-
-    if (iStatus == EStreaming)
-        {
-        if (iPipelineRec != NULL &&
-            iPipelineRec->current_state == GST_STATE_PLAYING)
-            {
-            GstStateChangeReturn ret;
-            ret = gst_element_set_state(iPipelineRec, GST_STATE_NULL);
-            if (ret == GST_STATE_CHANGE_FAILURE)
-                {
-                ;// retry???
-                //GST_STATE_CHANGE_SUCCESS
-                }
-            }
-        iStatus = EReady;
-        }
-
-    if (gstUplBuffer)
-        {
-        gst_buffer_unref(gstUplBuffer);
-        }
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::BufferToBeEmptied
-// From MDevSoundObserver
-// -----------------------------------------------------------------------------
-//
-void TMSIPUplink::BufferToBeEmptied()
-    {
-    TInt buflen = GST_BUFFER_SIZE(gstUplBuffer);
-    TRACE_PRN_N1(_L("TMS->UPL: BTBE->LEN [%d]"), buflen);
-
-    // Adjust/create RChunk if necessary
-    TInt err = DoChunk(buflen, iMsgBuffer);
-
-    if (err != TMS_RESULT_SUCCESS)
-        {
-        Stop();
-        iMsgBuffer.iStatus = err;
-        }
-    else
-        {
-        // Pass buffer parameters to the client
-        iMsgBuffer.iStatus = err;
-        iMsgBuffer.iInt = buflen;
-
-        // Copy data over to RChunk
-        TPtr8 dataPtr(iChunk.Base(), buflen, iMaxBufLen);
-        dataPtr.Copy(GST_BUFFER_DATA(gstUplBuffer), buflen);
-        gst_buffer_unref(gstUplBuffer);
-
-        //RDebug::RawPrint(dataPtr);
-        iStatus = EStreaming;
-
-        // If chunk is opened, we will expect a call from the client to
-        // get chunk handle. When we get a call to copy chunk handle,
-        // check these variables and see if they match. This is not
-        // completely secure, but will provide some level of security.
-        if (iMsgBuffer.iBool == TRUE)
-            {
-            iWriteDataXferHndlToClient = TRUE;
-            iKey = iMsgBuffer.iUint32;
-            }
-        }
-
-    // Notify client there is buffer ready to be emptied
-    iMsgBuffer.iRequest = ECmdEmptyBuffer;
-    err = iMsgQueue.Send(iMsgBuffer);
-    TRACE_PRN_IF_ERR(err);
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::BufferEmptied
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPUplink::BufferEmptied()
-    {
-    //TRACE_PRN_N(_L("TMS->UPL->BE"));
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::SetCodecCi
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::SetCodecCi()
-    {
-    TRAPD(err, SetCodecCiL());
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::SetCodecCiL
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPUplink::SetCodecCiL()
-    {
-    TRACE_PRN_FN_ENT;
-
-    switch (iCodecID)
-        {
-        case KMccFourCCIdG711:
-            {
-            if (!iG711EncoderIntfc)
-                {
-                iG711EncoderIntfc = GST_G711_ENCODER_GET_IFACE(iSource);
-                }
-            break;
-            }
-        case KMccFourCCIdG729:
-            {
-            if (!iG729EncoderIntfc)
-                {
-                iG729EncoderIntfc = GST_G729_ENCODER_GET_IFACE(iSource);
-                }
-            break;
-            }
-        case KMccFourCCIdILBC:
-            {
-            if (!iIlbcEncoderIntfc)
-                {
-                iIlbcEncoderIntfc = GST_ILBC_ENCODER_GET_IFACE(iSource);
-                }
-            break;
-            }
-        case KMccFourCCIdAMRNB:
-        case KMMFFourCCCodePCM16:
-            {
-            break;
-            }
-        default:
-            {
-            User::Leave(TMS_RESULT_INVALID_ARGUMENT);
-            }
-        }
-
-    if (!iSpeechEncoderConfig && iCodecID != KMMFFourCCCodePCM16)
-        {
-        iSpeechEncoderConfig = GST_SPEECH_ENCODER_CONFIG_GET_IFACE(iSource);
-        }
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::SetGain
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::SetGain(const guint gain)
-    {
-    g_object_set(G_OBJECT(iSource), "gain", gain, NULL);
-    TRACE_PRN_N1(_L("TMS->UPL: SetGain [%d]"), gain);
-    return TMS_RESULT_SUCCESS;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::GetGain
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::GetGain(guint& gain)
-    {
-    g_object_get(G_OBJECT(iSource), "gain", &gain, NULL);
-    TRACE_PRN_N1(_L("TMS->UPL: GetGain [%d]"), gain);
-    return TMS_RESULT_SUCCESS;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::GetMaxGain
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::GetMaxGain(guint& gain)
-    {
-    g_object_get(G_OBJECT(iSource), "maxgain", &gain, NULL);
-    TRACE_PRN_N1(_L("TMS->UPL: MaxGain [%d]"), gain);
-    return TMS_RESULT_SUCCESS;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::GetDataXferChunkHndl
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::GetDataXferChunkHndl(const TUint32 key, RChunk& chunk)
-    {
-    gint status = TMS_RESULT_SUCCESS;
-
-    if (iChunk.Handle())
-        {
-        if (iWriteDataXferHndlToClient && (iKey == key))
-            {
-            chunk = iChunk;
-            iWriteDataXferHndlToClient = FALSE;
-            iKey = 0;
-            }
-        else
-            {
-            status = TMS_RESULT_ILLEGAL_OPERATION;
-            }
-        }
-
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::SetIlbcCodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::SetIlbcCodecMode(const gint mode)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EReady)
-        {
-        iILBCEncodeMode = mode;
-
-        if (iIlbcEncoderIntfc && iCodecID == KMccFourCCIdILBC)
-            {
-            if (mode == TMS_ILBC_CODEC_MODE_20MS_FRAME)
-                {
-                err = iIlbcEncoderIntfc->SetEncoderMode(EIlbc20msFrame);
-                TRACE_PRN_N(_L("TMS->UPL: SetIlbcCodecMode [20ms Frame]"));
-                }
-            else if (mode == TMS_ILBC_CODEC_MODE_30MS_FRAME)
-                {
-                err = iIlbcEncoderIntfc->SetEncoderMode(EIlbc30msFrame);
-                TRACE_PRN_N(_L("TMS->UPL: SetIlbcCodecMode [30ms Frame]"));
-                }
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::GetIlbcCodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::GetIlbcCodecMode(gint& mode)
-    {
-    // not available through CIs -> return cached value
-    mode = iILBCEncodeMode;
-    TRACE_PRN_N1(_L("TMS->UPL: GetIlbcCodecMode [%d]"), mode);
-    return TMS_RESULT_SUCCESS;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::SetG711CodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::SetG711CodecMode(const gint mode)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EReady)
-        {
-        iG711EncodeMode = mode;
-
-        if (iG711EncoderIntfc && iCodecID == KMccFourCCIdG711)
-            {
-            if (mode == TMS_G711_CODEC_MODE_ALAW)
-                {
-                err = iG711EncoderIntfc->SetEncoderMode(EEncALaw);
-                TRACE_PRN_N(_L("TMS->UPL: SetG711CodecMode [ALaw]"));
-                }
-            else if (mode == TMS_G711_CODEC_MODE_MULAW)
-                {
-                err = iG711EncoderIntfc->SetEncoderMode(EEncULaw);
-                TRACE_PRN_N(_L("TMS->UPL: SetG711CodecMode [uLaw]"));
-                }
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::GetG711CodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::GetG711CodecMode(gint& mode)
-    {
-    // not available through CIs -> return cached value
-    mode = iG711EncodeMode;
-    TRACE_PRN_N1(_L("TMS->UPL: GetG711CodecMode [%d]"), mode);
-    return TMS_RESULT_SUCCESS;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::GetSupportedBitrates
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::GetSupportedBitrates(RArray<guint>& bitrates)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-    bitrates.Reset();
-
-    if (iSpeechEncoderConfig)
-        {
-        gint i = 0;
-        GList* gbitrates = NULL;
-        //        GList* walk;
-        err = iSpeechEncoderConfig->GetSupportedBitrates(&gbitrates);
-
-        //TODO: try returning GList and do not convert to RArray
-        for (; gbitrates; gbitrates = g_list_next (gbitrates))
-            {
-            //            guint br = GPOINTER_TO_INT(gbitrates->data);
-            guint br = GPOINTER_TO_UINT(gbitrates->data);
-            bitrates.Append(br);
-            TRACE_PRN_N2(_L("TMS->UPL: GetSupportedBitrates %d:[%d]"), i+1, br);
-            i++;
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::SetBitrate
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::SetBitrate(guint bitrate)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iSpeechEncoderConfig)
-        {
-        err = iSpeechEncoderConfig->SetBitrate(bitrate);
-        TRACE_PRN_N1(_L("TMS->UPL: SetBitrate [%d]"), bitrate);
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::GetBitrate
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::GetBitrate(guint& bitrate)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iSpeechEncoderConfig)
-        {
-        err = iSpeechEncoderConfig->GetBitrate(&bitrate);
-        TRACE_PRN_N1(_L("TMS->UPL: GetBitrate [%d]"), bitrate);
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::SetVad
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::SetVad(const TMSFormatType fmttype, const gboolean vad)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    switch (fmttype)
-        {
-        case TMS_FORMAT_G711:
-            {
-            if (iG711EncoderIntfc)
-                {
-                err = iG711EncoderIntfc->SetVadMode(vad);
-                TRACE_PRN_N1(_L("TMS->UPL: SetVad [%d]"), vad);
-                }
-            break;
-            }
-        case TMS_FORMAT_G729:
-            {
-            if (iG729EncoderIntfc)
-                {
-                err = iG729EncoderIntfc->SetVadMode(vad);
-                TRACE_PRN_N1(_L("TMS->UPL: SetVad [%d]"), vad);
-                }
-            break;
-            }
-        case TMS_FORMAT_ILBC:
-            {
-            if (iIlbcEncoderIntfc)
-                {
-                err = iIlbcEncoderIntfc->SetVadMode(vad);
-                TRACE_PRN_N1(_L("TMS->UPL: SetVad [%d]"), vad);
-                }
-            break;
-            }
-        case TMS_FORMAT_AMR:
-            {
-            if (iSpeechEncoderConfig)
-                {
-                err = iSpeechEncoderConfig->SetVadMode(vad);
-                TRACE_PRN_N1(_L("TMS->UPL: SetVad [%d]"), vad);
-                }
-            break;
-            }
-        default:
-            {
-            break; //TMS_RESULT_DOES_NOT_EXIST
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::GetVad
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::GetVad(const TMSFormatType fmttype, gboolean& vad)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    switch (fmttype)
-        {
-        case TMS_FORMAT_G711:
-            {
-            if (iG711EncoderIntfc)
-                {
-                err = iG711EncoderIntfc->GetVadMode(&vad);
-                TRACE_PRN_N1(_L("TMS->UPL: GetVad [%d]"), vad);
-                }
-            break;
-            }
-        case TMS_FORMAT_G729:
-            {
-            if (iG729EncoderIntfc)
-                {
-                err = iG729EncoderIntfc->GetVadMode(&vad);
-                TRACE_PRN_N1(_L("TMS->UPL: GetVad [%d]"), vad);
-                }
-            break;
-            }
-        case TMS_FORMAT_ILBC:
-            {
-            if (iIlbcEncoderIntfc)
-                {
-                err = iIlbcEncoderIntfc->GetVadMode(&vad);
-                TRACE_PRN_N1(_L("TMS->UPL: GetVad [%d]"), vad);
-                }
-            break;
-            }
-        case TMS_FORMAT_AMR:
-            {
-            if (iSpeechEncoderConfig)
-                {
-                err = iSpeechEncoderConfig->GetVadMode(&vad);
-                TRACE_PRN_N1(_L("TMS->UPL: GetVad [%d]"), vad);
-                }
-            break;
-            }
-        default:
-            {
-            break; //TMS_RESULT_DOES_NOT_EXIST
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// End of file
--- a/mmserv/tms/tmscallserver/src/ipcalluplinkds.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,690 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-#include <AudioPreference.h>
-#include <mmcccodecinformation.h>
-#include <IlbcEncoderIntfc.h>
-#include <G711EncoderIntfc.h>
-#include <G729EncoderIntfc.h>
-#include <SpeechEncoderConfig.h>
-#include "tmsutility.h"
-#include "ipcallstream.h"
-
-using namespace TMS;
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::TMSIPUplink
-// Standard Constructor
-// -----------------------------------------------------------------------------
-//
-TMSIPUplink::TMSIPUplink()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::~TMSIPUplink
-// Standard Constructor
-// -----------------------------------------------------------------------------
-//
-TMSIPUplink::~TMSIPUplink()
-    {
-    TRACE_PRN_FN_ENT;
-
-    Stop();
-
-    delete iSpeechEncoderConfig;
-    delete iG711EncoderIntfc;
-    delete iG729EncoderIntfc;
-    delete iIlbcEncoderIntfc;
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::NewL
-// Symbian two-phase constructor
-// -----------------------------------------------------------------------------
-//
-TMSIPUplink* TMSIPUplink::NewL(const guint32 codecID,
-        const TMMFPrioritySettings priority)
-    {
-    TMSIPUplink* self = new (ELeave) TMSIPUplink();
-    CleanupStack::PushL(self);
-    self->ConstructL(codecID, priority);
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::ConstructL
-// Part two of Symbian two phase construction
-// -----------------------------------------------------------------------------
-//
-void TMSIPUplink::ConstructL(const guint32 codecID,
-        const TMMFPrioritySettings priority)
-    {
-    TRACE_PRN_FN_ENT;
-
-    iCodecID = codecID;
-    iPriority = priority;
-
-    // Client must set these before querying!
-    iG711EncodeMode = TMS_G711_CODEC_MODE_ALAW;
-    iILBCEncodeMode = TMS_ILBC_CODEC_MODE_20MS_FRAME;
-
-    TRAPD(err, InitDevSoundL(EMMFStateRecording, priority));
-    if (err != TMS_RESULT_SUCCESS)
-        {
-        User::Leave(err);
-        }
-
-    iMaxBufLen = ConfigureMedia(iCodecID);
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::Start
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPUplink::Start()
-    {
-    TRACE_PRN_FN_ENT;
-
-    gint err = TMS_RESULT_ILLEGAL_OPERATION;
-    iWriteDataXferHndlToClient = FALSE;
-
-    if (iStatus == EReady && iDevSound)
-        {
-        TRAP(err, iDevSound->RecordInitL());
-        TRACE_PRN_IF_ERR(err);
-
-        if (err != TMS_RESULT_SUCCESS)
-            {
-            //TODO: Notify main thread
-            iStatus = EReady;
-            }
-#ifdef _DEBUG
-        else
-            {
-            iSamplesRecCount = 0;
-            }
-#endif
-        }
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::Stop
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPUplink::Stop()
-    {
-    TRACE_PRN_FN_ENT;
-
-    if (iStatus == EStreaming && iDevSound)
-        {
-        iDevSound->Stop();
-        iStatus = EReady;
-        }
-    else
-        {
-        //TODO: Notify main thread
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::BufferToBeEmptied
-// From MDevSoundObserver
-// -----------------------------------------------------------------------------
-//
-void TMSIPUplink::BufferToBeEmptied(CMMFBuffer* aBuffer)
-    {
-    iDevSoundBufPtr = static_cast<CMMFDataBuffer*> (aBuffer);
-    TDes8& data = iDevSoundBufPtr->Data();
-
-    iBufLen = iDevSoundBufPtr->BufferSize();
-    TRACE_PRN_N1(_L("TMS->UPL: BTBE->LEN [%d]"), iBufLen);
-
-    // Adjust/create RChunk if necessary
-    gint err = DoChunk(iBufLen, iMsgBuffer);
-
-    if (err != TMS_RESULT_SUCCESS)
-        {
-        Stop();
-        iMsgBuffer.iStatus = err;
-        }
-    else
-        {
-        // Pass buffer parameters to the client
-        iMsgBuffer.iStatus = err;
-        iMsgBuffer.iInt = iBufLen;
-
-        // Copy data over to RChunk
-        TPtr8 dataPtr(iChunk.Base(), iBufLen, iBufLen);
-        dataPtr = data;
-        iStatus = EStreaming;
-
-        // If chunk is opened, we will expect a call from the client to
-        // get chunk handle. When we get a call to copy chunk handle,
-        // check these variables and see if they match. This is not
-        // completely secure, but will provide some level of security.
-        if (iMsgBuffer.iBool == TRUE)
-            {
-            iWriteDataXferHndlToClient = TRUE;
-            iKey = iMsgBuffer.iUint32;
-            }
-        }
-
-    // Notify client there is buffer ready to be emptied
-    iMsgBuffer.iRequest = ECmdEmptyBuffer;
-    err = iMsgQueue.Send(iMsgBuffer);
-    TRACE_PRN_IF_ERR(err);
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::BufferEmptied
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPUplink::BufferEmptied()
-    {
-    //TRACE_PRN_N(_L("TMS->UPL->BE"));
-    if (iDevSound)
-        {
-        iDevSound->RecordData();
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::SetCodecCi
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::SetCodecCi()
-    {
-    TRAPD(err, SetCodecCiL());
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::SetCodecCiL
-//
-// -----------------------------------------------------------------------------
-//
-void TMSIPUplink::SetCodecCiL()
-    {
-    TRACE_PRN_FN_ENT;
-
-    switch (iCodecID)
-        {
-        case KMccFourCCIdG711:
-            {
-            if (!iG711EncoderIntfc)
-                {
-                iG711EncoderIntfc = CG711EncoderIntfc::NewL(*iDevSound);
-                }
-            break;
-            }
-        case KMccFourCCIdG729:
-            {
-            if (!iG729EncoderIntfc)
-                {
-                iG729EncoderIntfc = CG729EncoderIntfc::NewL(*iDevSound);
-                }
-            break;
-            }
-        case KMccFourCCIdILBC:
-            {
-            if (!iIlbcEncoderIntfc)
-                {
-                iIlbcEncoderIntfc = CIlbcEncoderIntfc::NewL(*iDevSound);
-                }
-            break;
-            }
-        case KMccFourCCIdAMRNB:
-        case KMMFFourCCCodePCM16:
-            {
-            break;
-            }
-        default:
-            {
-            User::Leave(TMS_RESULT_INVALID_ARGUMENT);
-            break;
-            }
-        }
-
-    if (!iSpeechEncoderConfig && iCodecID != KMMFFourCCCodePCM16)
-        {
-        iSpeechEncoderConfig = CSpeechEncoderConfig::NewL(*iDevSound);
-        }
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::SetGain
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::SetGain(const guint gain)
-    {
-    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
-    if (iDevSound)
-        {
-        iDevSound->SetGain(gain);
-        status = TMS_RESULT_SUCCESS;
-        }
-    TRACE_PRN_N1(_L("TMS->UPL: SetGain [%d]"), gain);
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::GetGain
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::GetGain(guint& gain)
-    {
-    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
-    if (iDevSound)
-        {
-        gain = iDevSound->Gain();
-        status = TMS_RESULT_SUCCESS;
-        }
-    TRACE_PRN_N1(_L("TMS->UPL: GetGain [%d]"), gain);
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::GetMaxGain
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::GetMaxGain(guint& gain)
-    {
-    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
-    if (iDevSound)
-        {
-        gain = iDevSound->MaxGain();
-        status = TMS_RESULT_SUCCESS;
-        }
-    TRACE_PRN_N1(_L("TMS->UPL: MaxGain [%d]"), gain);
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::GetDataXferChunkHndl
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::GetDataXferChunkHndl(const TUint32 key, RChunk& chunk)
-    {
-    gint status = TMS_RESULT_SUCCESS;
-
-    if (iChunk.Handle())
-        {
-        if (iWriteDataXferHndlToClient && (iKey == key))
-            {
-            chunk = iChunk;
-            iWriteDataXferHndlToClient = FALSE;
-            iKey = 0;
-            }
-        else
-            {
-            status = TMS_RESULT_ILLEGAL_OPERATION;
-            }
-        }
-
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::SetIlbcCodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::SetIlbcCodecMode(const gint mode)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EReady)
-        {
-        iILBCEncodeMode = mode;
-
-        if (iIlbcEncoderIntfc && iCodecID == KMccFourCCIdILBC)
-            {
-            if (mode == TMS_ILBC_CODEC_MODE_20MS_FRAME)
-                {
-                err = iIlbcEncoderIntfc->SetEncoderMode(
-                        CIlbcEncoderIntfc::E20msFrame);
-                TRACE_PRN_N(_L("TMS->UPL: SetIlbcCodecMode [20ms Frame]"));
-                }
-            else if (mode == TMS_ILBC_CODEC_MODE_30MS_FRAME)
-                {
-                err = iIlbcEncoderIntfc->SetEncoderMode(
-                        CIlbcEncoderIntfc::E30msFrame);
-                TRACE_PRN_N(_L("TMS->UPL: SetIlbcCodecMode [30ms Frame]"));
-                }
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::GetIlbcCodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::GetIlbcCodecMode(gint& mode)
-    {
-    // not available through CIs -> return cached value
-    mode = iILBCEncodeMode;
-    TRACE_PRN_N1(_L("TMS->UPL: GetIlbcCodecMode [%d]"), mode);
-    return TMS_RESULT_SUCCESS;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::SetG711CodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::SetG711CodecMode(const gint mode)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iStatus == EReady)
-        {
-        iG711EncodeMode = mode;
-
-        if (iG711EncoderIntfc && iCodecID == KMccFourCCIdG711)
-            {
-            if (mode == TMS_G711_CODEC_MODE_ALAW)
-                {
-                err = iG711EncoderIntfc->SetEncoderMode(
-                        CG711EncoderIntfc::EEncALaw);
-                TRACE_PRN_N(_L("TMS->UPL: SetG711CodecMode [ALaw]"));
-                }
-            else if (mode == TMS_G711_CODEC_MODE_MULAW)
-                {
-                err = iG711EncoderIntfc->SetEncoderMode(
-                        CG711EncoderIntfc::EEncULaw);
-                TRACE_PRN_N(_L("TMS->UPL: SetG711CodecMode [uLaw]"));
-                }
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::GetG711CodecMode
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::GetG711CodecMode(gint& mode)
-    {
-    // not available through CIs -> return cached value
-    mode = iG711EncodeMode;
-    TRACE_PRN_N1(_L("TMS->UPL: GetG711CodecMode [%d]"), mode);
-    return TMS_RESULT_SUCCESS;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::GetSupportedBitrates
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::GetSupportedBitrates(RArray<guint>& bitrates)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-    bitrates.Reset();
-
-    if (iSpeechEncoderConfig)
-        {
-        err = iSpeechEncoderConfig->GetSupportedBitrates(bitrates);
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::SetBitrate
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::SetBitrate(guint bitrate)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iSpeechEncoderConfig)
-        {
-        err = iSpeechEncoderConfig->SetBitrate(bitrate);
-        TRACE_PRN_N1(_L("TMS->UPL: SetBitrate [%d]"), bitrate);
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::GetBitrate
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::GetBitrate(guint& bitrate)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    if (iSpeechEncoderConfig)
-        {
-        err = iSpeechEncoderConfig->GetBitrate(bitrate);
-        TRACE_PRN_N1(_L("TMS->UPL: GetBitrate [%d]"), bitrate);
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::SetVad
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::SetVad(const TMSFormatType fmttype, const gboolean vad)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    switch (fmttype)
-        {
-        case TMS_FORMAT_G711:
-            {
-            if (iG711EncoderIntfc)
-                {
-                err = iG711EncoderIntfc->SetVadMode(vad);
-                TRACE_PRN_N1(_L("TMS->UPL: SetVad [%d]"), vad);
-                }
-            break;
-            }
-        case TMS_FORMAT_G729:
-            {
-            if (iG729EncoderIntfc)
-                {
-                err = iG729EncoderIntfc->SetVadMode(vad);
-                TRACE_PRN_N1(_L("TMS->UPL: SetVad [%d]"), vad);
-                }
-            break;
-            }
-        case TMS_FORMAT_ILBC:
-            {
-            if (iIlbcEncoderIntfc)
-                {
-                err = iIlbcEncoderIntfc->SetVadMode(vad);
-                TRACE_PRN_N1(_L("TMS->UPL: SetVad [%d]"), vad);
-                }
-            break;
-            }
-        case TMS_FORMAT_AMR:
-            {
-            if (iSpeechEncoderConfig)
-                {
-                err = iSpeechEncoderConfig->SetVadMode(vad);
-                TRACE_PRN_N1(_L("TMS->UPL: SetVad [%d]"), vad);
-                }
-            break;
-            }
-        default:
-            {
-            break; //TMS_RESULT_DOES_NOT_EXIST
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::GetVad
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSIPUplink::GetVad(const TMSFormatType fmttype, gboolean& vad)
-    {
-    gint err = TMS_RESULT_DOES_NOT_EXIST;
-
-    switch (fmttype)
-        {
-        case TMS_FORMAT_G711:
-            {
-            if (iG711EncoderIntfc)
-                {
-                err = iG711EncoderIntfc->GetVadMode(vad);
-                TRACE_PRN_N1(_L("TMS->UPL: GetVad [%d]"), vad);
-                }
-            break;
-            }
-        case TMS_FORMAT_G729:
-            {
-            if (iG729EncoderIntfc)
-                {
-                err = iG729EncoderIntfc->GetVadMode(vad);
-                TRACE_PRN_N1(_L("TMS->UPL: GetVad [%d]"), vad);
-                }
-            break;
-            }
-        case TMS_FORMAT_ILBC:
-            {
-            if (iIlbcEncoderIntfc)
-                {
-                err = iIlbcEncoderIntfc->GetVadMode(vad);
-                TRACE_PRN_N1(_L("TMS->UPL: GetVad [%d]"), vad);
-                }
-            break;
-            }
-        case TMS_FORMAT_AMR:
-            {
-            if (iSpeechEncoderConfig)
-                {
-                err = iSpeechEncoderConfig->GetVadMode(vad);
-                TRACE_PRN_N1(_L("TMS->UPL: GetVad [%d]"), vad);
-                }
-            break;
-            }
-        default:
-            {
-            break; //TMS_RESULT_DOES_NOT_EXIST
-            }
-        }
-
-    TRACE_PRN_IF_ERR(err);
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::InitializeComplete
-// A callback from the DevSound indicating completion of the initialization.
-// It will send config data to the D/S and configure the encoder via CI.
-// If everything goes well, the state of the thread is set EReady.
-// The initialization completion message is sent back to the main thread.
-// -----------------------------------------------------------------------------
-//
-void TMSIPUplink::InitializeComplete(TInt aError)
-    {
-    TRACE_PRN_FN_ENT;
-
-    gint err = aError;
-
-    if (err == TMS_RESULT_SUCCESS && iDevSound)
-        {
-        TMMFCapabilities conf;
-        conf = iDevSound->Config();
-        conf.iRate = EMMFSampleRate8000Hz;
-        conf.iChannels = EMMFMono;
-        TRAP(err, iDevSound->SetConfigL(conf));
-        if (err == TMS_RESULT_SUCCESS)
-            {
-            // We are ready to stream even in case of CI setting failure
-            iStatus = EReady;
-            iMaxGain = iDevSound->MaxGain();
-            }
-
-        // Init Custom Interface API to the Encoder
-        err = SetCodecCi();
-        if (err != TMS_RESULT_SUCCESS)
-            {
-            // DEBUG only
-            // Can ignore error - although encoder is not fully configured but
-            // it can still run in the default mode.
-            TRACE_PRN_IF_ERR(err);
-            }
-        }
-
-    // TODO: Notify client
-
-    TRACE_PRN_IF_ERR(err);
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSIPUplink::RecordError
-// From MDevSoundObserver
-// Recording error is send to the main thread.
-// The state of recorder is rolled back to EReady.
-// -----------------------------------------------------------------------------
-//
-void TMSIPUplink::RecordError(TInt /*aError*/)
-    {
-    //TRACE_PRN_IF_ERR(aError);
-
-#ifdef _DEBUG
-    iSamplesRecCount = 0;
-#endif
-    iStatus = EReady;
-
-    // TODO: Notify client
-    }
-
-// End of file
-
--- a/mmserv/tms/tmscallserver/src/tarsettings.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-// INCLUDE FILES
-#include "tarsettings.h"
-#include "tmsclientserver.h"
-#include "tmsutility.h"
-
-using namespace TMS;
-
-// CONSTANTS
-_LIT_SECURITY_POLICY_PASS(KTMSServerReadPolicy);
-_LIT_SECURITY_POLICY_C1(KTMSServerWritePolicy, ECapabilityWriteUserData);
-
-// -----------------------------------------------------------------------------
-// TMSTarSettings::TMSTarSettings
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-TMSTarSettings::TMSTarSettings()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// TMSTarSettings::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void TMSTarSettings::ConstructL()
-    {
-    TRACE_PRN_FN_ENT;
-    TInt err = RProperty::Define(ERoutingPs, RProperty::EByteArray,
-            KTMSServerReadPolicy, KTMSServerWritePolicy);
-    TRACE_PRN_N1(_L("TarSetting::ConstructL err:%d"),err);
-
-    if (err != KErrAlreadyExists)
-        {
-        User::LeaveIfError(err);
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSTarSettings::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-TMSTarSettings* TMSTarSettings::NewL()
-    {
-    TMSTarSettings* self = new (ELeave) TMSTarSettings();
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// Destructor
-TMSTarSettings::~TMSTarSettings()
-    {
-    TRACE_PRN_FN_ENT;
-    TInt err = RProperty::Delete(KTMSPropertyCategory, ERoutingPs);
-    TRACE_PRN_N1(_L("TarSetting::~TMSTarSettings err:%d"),err);
-    TRACE_PRN_FN_ENT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSTarSettings::SetVolume
-// -----------------------------------------------------------------------------
-//
-void TMSTarSettings::SetTar(TRoutingMsgBufPckg rountingpckg, TBool aPublish)
-    {
-    TRACE_PRN_FN_ENT;
-    //    TInt err(KErrNone);
-    if (aPublish)
-        {
-        /*err =*/RProperty::Set(KTMSPropertyCategory, ERoutingPs, rountingpckg);
-        }
-
-    //TRACE_PRN_N1(_L("TarSetting::SetTar err:%d"),err);
-    TRACE_PRN_FN_EXT;
-    }
-
-//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/src/tmscalladpt.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#include <tms.h>
+#include "tmscallipadpt.h"
+#include "tmscallcsadpt.h"
+#include "tmscalladpt.h"
+#include "tmsutility.h"
+
+using namespace TMS;
+
+// -----------------------------------------------------------------------------
+// TMSCallAdpt::TMSCallAdpt
+//
+// -----------------------------------------------------------------------------
+//
+TMSCallAdpt::TMSCallAdpt()
+    {
+    TRACE_PRN_FN_ENT;
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallAdpt::~TMSCallAdpt
+//
+// -----------------------------------------------------------------------------
+//
+TMSCallAdpt::~TMSCallAdpt()
+    {
+    TRACE_PRN_FN_ENT;
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallAdpt::CreateCallL
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallAdpt::CreateCallL(gint callType, TMSCallAdpt*& callAdpt)
+    {
+    TRACE_PRN_FN_ENT;
+    TMSCallAdpt* self(NULL);
+    gint retVal(TMS_RESULT_SUCCESS);
+    switch (callType)
+        {
+        case TMS_CALL_IP:
+            retVal = TMS_RESULT_INSUFFICIENT_MEMORY;
+            self = TMSCallIPAdpt::NewL();
+            if (self)
+                {
+                retVal = self->PostConstruct();
+                if (retVal != TMS_RESULT_SUCCESS)
+                    {
+                    delete self;
+                    self = NULL;
+                    }
+                }
+            break;
+
+        case TMS_CALL_CS:
+            retVal = TMS_RESULT_INSUFFICIENT_MEMORY;
+            self = new TMSCallCSAdpt();
+            if (self)
+                {
+                retVal = self->PostConstruct();
+                if (retVal != TMS_RESULT_SUCCESS)
+                    {
+                    delete self;
+                    self = NULL;
+                    }
+                }
+            break;
+        default:
+            retVal = TMS_RESULT_CALL_TYPE_NOT_SUPPORTED;
+            break;
+        }
+    callAdpt = self;
+    TRACE_PRN_FN_EXT;
+    return retVal;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallAdpt::PostConstruct
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallAdpt::PostConstruct()
+    {
+    return TMS_RESULT_SUCCESS;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/src/tmscallcsadpt.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,1277 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#include <tms.h>
+#include <S60FourCC.h>
+#include <AudioPreference.h>
+#include <TelephonyAudioRouting.h>
+#include "tmscsuplink.h"
+#include "tmscsdownlink.h"
+#include "tmscallcsadpt.h"
+#include "tmsutility.h"
+#include "tmsshared.h"
+#include "tmsclientserver.h"
+#include "tmstarsettings.h"
+#include "tmsdtmftoneplayer.h"
+#include "tmsdtmfprovider.h"
+#include "tmsdtmfnotifier.h"
+
+using namespace TMS;
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::TMSCallCSAdpt
+//
+// -----------------------------------------------------------------------------
+//
+TMSCallCSAdpt::TMSCallCSAdpt()
+    {
+    TRACE_PRN_FN_ENT;
+
+    iCSDownlink = NULL;
+    iCSUplink = NULL;
+    iRouting = NULL;
+    iTarSettings = NULL;
+    iDTMFDnlinkPlayer = NULL;
+    iDTMFUplinkPlayer = NULL;
+    iDTMFNotifier = NULL;
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::~TMSCallCSAdpt
+//
+// -----------------------------------------------------------------------------
+//
+TMSCallCSAdpt::~TMSCallCSAdpt()
+    {
+    TRACE_PRN_FN_ENT;
+    delete iCSDownlink;
+    delete iCSUplink;
+    delete iRouting;
+    delete iTarSettings;
+    delete iDTMFDnlinkPlayer;
+    delete iDTMFUplinkPlayer;
+    delete iDTMFNotifier;
+
+    if (iMsgQueueUp.Handle() > 0)
+        {
+        iMsgQueueUp.Close();
+        }
+
+    if (iMsgQueueDn.Handle() > 0)
+        {
+        iMsgQueueDn.Close();
+        }
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::PostConstruct
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::PostConstruct()
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+    iNextStreamId = 1;
+    iUplinkInitialized = FALSE;
+    iDnlinkInitialized = FALSE;
+
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::CreateStream
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::CreateStream(TMSCallType /*callType*/,
+        TMSStreamType strmType, gint& outStrmId)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+    switch (strmType)
+        {
+        case TMS_STREAM_UPLINK:
+            status = TMS_RESULT_ALREADY_EXIST;
+            if (!iUplinkInitialized)
+                {
+                iUplinkInitialized = TRUE;
+                iUplinkStreamId = iNextStreamId;
+                outStrmId = iUplinkStreamId;
+                iNextStreamId++;
+                iUplinkInitialized = TRUE;
+                status = TMS_RESULT_SUCCESS;
+                }
+            break;
+        case TMS_STREAM_DOWNLINK:
+            status = TMS_RESULT_ALREADY_EXIST;
+            if (!iDnlinkInitialized)
+                {
+                iDnlinkInitialized = TRUE;
+                iDnlinkStreamId = iNextStreamId;
+                outStrmId = iDnlinkStreamId;
+                iNextStreamId++;
+                iDnlinkInitialized = TRUE;
+                status = TMS_RESULT_SUCCESS;
+                }
+            break;
+        default:
+            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
+            break;
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::InitStream
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::InitStreamL(TMSCallType /*callType*/,
+        TMSStreamType strmType, gint strmId, TMSFormatType /*frmtType*/,
+        const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+
+    switch (strmType)
+        {
+        case TMS_STREAM_UPLINK:
+            if (strmId == iUplinkStreamId)
+                {
+                // Open message queue handling client-server communication
+                if (iMsgQueueUp.Handle() <= 0)
+                    {
+                    // Third argument in TMSCallProxy::InitStream
+                    status = iMsgQueueUp.Open(aMessage, 1);
+                    }
+                if (status == TMS_RESULT_SUCCESS)
+                    {
+                    TRAP(status, iCSUplink = TMSCSUplink::NewL(*this));
+
+                    if (status == TMS_RESULT_SUCCESS)
+                        {
+                        iDTMFUplinkPlayer =  TMSDTMFProvider::NewL();
+                        iDTMFUplinkPlayer->AddObserverL(*this);
+                        if(!iDTMFNotifier)
+                            {
+                            iDTMFNotifier = TMSDtmfNotifier::NewL();
+                            }
+                        }
+                    }
+                iStrmtype = TMS_STREAM_UPLINK;
+                }
+            else
+                {
+                status = TMS_RESULT_DOES_NOT_EXIST;
+                }
+            break;
+        case TMS_STREAM_DOWNLINK:
+            if (strmId == iDnlinkStreamId)
+                {
+                // Open message queue handling client-server communication
+                if (iMsgQueueDn.Handle() <= 0)
+                    {
+                    // Third argument in TMSCallProxy::InitStream
+                    status = iMsgQueueDn.Open(aMessage, 1);
+                    }
+                if (status == TMS_RESULT_SUCCESS)
+                    {
+                    TRAP(status, iCSDownlink = TMSCSDownlink::NewL(*this));
+                    if (status == TMS_RESULT_SUCCESS)
+                        {
+                        TRAP(status, iRouting =
+                             CTelephonyAudioRouting::NewL(*this));
+                        if (status == TMS_RESULT_SUCCESS)
+                            {
+                            iTarSettings = TMSTarSettings::NewL();
+                            }
+                        if (status == TMS_RESULT_SUCCESS)
+                            {
+                            TRAP(status, iDTMFDnlinkPlayer =
+                                 TMSAudioDtmfTonePlayer::NewL(*this,
+                                 KAudioPrefKeyDownDTMF,
+                                 KAudioPriorityDtmfKeyPress));
+                            if(!iDTMFNotifier)
+                                {
+                                iDTMFNotifier = TMSDtmfNotifier::NewL();
+                                }
+                            }
+                        }
+                    }
+                iStrmtype = TMS_STREAM_DOWNLINK;
+                }
+            else
+                {
+                status = TMS_RESULT_DOES_NOT_EXIST;
+                }
+            break;
+        default:
+            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
+            break;
+        }
+
+    TRACE_PRN_IF_ERR(status);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::StartStream
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::StartStream(TMSCallType /*callType*/,
+        TMSStreamType strmType, gint strmId)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+    switch (strmType)
+        {
+        case TMS_STREAM_UPLINK:
+            if (iCSUplink && strmId == iUplinkStreamId)
+                {
+                iCSUplink->Activate();
+                }
+            break;
+        case TMS_STREAM_DOWNLINK:
+            if (iCSDownlink && strmId == iDnlinkStreamId)
+                {
+                iCSDownlink->Activate();
+                }
+            break;
+        default:
+            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
+            break;
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::PauseStream
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::PauseStream(TMSCallType /*callType*/,
+        TMSStreamType /*strmType*/, gint /*strmId*/)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::StopStream
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::StopStream(TMSCallType /*callType*/, TMSStreamType strmType,
+        gint strmId)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+    switch (strmType)
+        {
+        case TMS_STREAM_UPLINK:
+            if (iCSUplink && strmId == iUplinkStreamId)
+                {
+                iCSUplink->Deactivate();
+                NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete,
+                        status, 0);
+                }
+            break;
+        case TMS_STREAM_DOWNLINK:
+            if (iCSDownlink && strmId == iDnlinkStreamId)
+                {
+                iCSDownlink->Deactivate();
+                NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete,
+                        status, 0);
+                }
+            break;
+        default:
+            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
+            break;
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::DeinitStream
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::DeinitStream(TMSCallType /*callType*/,
+        TMSStreamType strmType, gint strmId)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+    switch (strmType)
+        {
+        case TMS_STREAM_UPLINK:
+            if (iCSUplink && strmId == iUplinkStreamId)
+                {
+                iCSUplink->Deactivate();
+                iUplinkInitialized = FALSE;
+                NotifyClient(iUplinkStreamId, ECmdUplinkDeInitComplete,
+                        status, 0);
+                }
+            break;
+        case TMS_STREAM_DOWNLINK:
+            if (iCSDownlink && strmId == iDnlinkStreamId)
+                {
+                iCSDownlink->Deactivate();
+                iDnlinkInitialized = FALSE;
+                NotifyClient(iDnlinkStreamId, ECmdDownlinkDeInitComplete,
+                        status, 0);
+                }
+            break;
+        default:
+            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
+            break;
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::DeleteStream
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::DeleteStream(TMSCallType /*callType*/,
+        TMSStreamType strmType, gint strmId)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+    switch (strmType)
+        {
+        case TMS_STREAM_UPLINK:
+            if (strmId == iUplinkStreamId)
+                {
+                iUplinkStreamId = -1;
+                iUplinkInitialized = FALSE;
+                }
+            break;
+        case TMS_STREAM_DOWNLINK:
+            if (strmId == iDnlinkStreamId)
+                {
+                iDnlinkStreamId = -1;
+                iDnlinkInitialized = FALSE;
+                }
+            break;
+        default:
+            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
+            break;
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::DataXferBufferEmptied
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::DataXferBufferEmptied(TMSCallType /*callType*/,
+        TMSStreamType /*strmType*/, gint /*strmId*/)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::DataXferBufferFilled
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::DataXferBufferFilled(TMSCallType /*callType*/,
+        TMSStreamType /*strmType*/, gint /*strmId*/, guint /*datasize*/)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetDataXferBufferHndl
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::GetDataXferBufferHndl(const TMSCallType /*callType*/,
+        const TMSStreamType /*strmType*/, const gint /*strmId*/,
+        const guint32 /*key*/, RChunk& /*chunk*/)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetMaxVolume
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::GetMaxVolume(guint& volume)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_ILLEGAL_OPERATION);
+    if (iCSDownlink && iDnlinkInitialized)
+        {
+        volume = iCSDownlink->MaxVolume();
+        status = TMS_RESULT_SUCCESS;
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::SetVolume
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::SetVolume(const guint volume)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_ILLEGAL_OPERATION);
+    if (iCSDownlink && iDnlinkInitialized)
+        {
+        iCSDownlink->SetVolume(volume);
+        status = TMS_RESULT_SUCCESS;
+        NotifyClient(iDnlinkStreamId, ECmdSetVolume, status, 0);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetVolume
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::GetVolume(guint& volume)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_ILLEGAL_OPERATION);
+    if (iCSDownlink && iDnlinkInitialized)
+        {
+        volume = iCSDownlink->Volume();
+        status = TMS_RESULT_SUCCESS;
+        }
+
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetMaxGain
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::GetMaxGain(guint& gain)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_ILLEGAL_OPERATION);
+    if (iCSUplink && iUplinkInitialized)
+        {
+        gain = iCSUplink->MaxGain();
+        status = TMS_RESULT_SUCCESS;
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::SetGain
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::SetGain(const guint gain)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_ILLEGAL_OPERATION);
+    if (iUplinkInitialized)
+        {
+        iCSUplink->SetGain(gain);
+        status = TMS_RESULT_SUCCESS;
+        NotifyClient(iUplinkInitialized, ECmdSetGain, status, 0);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetGain
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::GetGain(guint& gain)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_ILLEGAL_OPERATION);
+    if (iCSUplink && iUplinkInitialized)
+        {
+        gain = iCSUplink->Gain();
+        status = TMS_RESULT_SUCCESS;
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetGlobalMaxVolume
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::GetGlobalMaxVolume(guint& volume)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_ILLEGAL_OPERATION);
+    if (iCSDownlink && iDnlinkInitialized)
+        {
+        volume = iCSDownlink->MaxVolume();
+        status = TMS_RESULT_SUCCESS;
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::SetGlobalVolume
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::SetGlobalVolume(const guint volume)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+
+    iGlobalVol = volume;
+    if (iCSDownlink && iDnlinkInitialized)
+        {
+        iCSDownlink->SetVolume(volume);
+        status = TMS_RESULT_SUCCESS;
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetGlobalVolume
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::GetGlobalVolume(guint& volume)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_ILLEGAL_OPERATION);
+    if (iCSDownlink && iDnlinkInitialized)
+        {
+        volume = iCSDownlink->Volume();
+        status = TMS_RESULT_SUCCESS;
+        }
+
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetMaxGain
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::GetGlobalMaxGain(guint& gain)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_ILLEGAL_OPERATION);
+    if (iCSUplink && iUplinkInitialized)
+        {
+        gain = iCSUplink->MaxGain();
+        status = TMS_RESULT_SUCCESS;
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::SetGain
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::SetGlobalGain(const guint gain)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+
+    iGlobalGain = gain;
+    if (iCSUplink && iUplinkInitialized)
+        {
+        iCSUplink->SetGain(gain);
+        status = TMS_RESULT_SUCCESS;
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetGlobalGain
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::GetGlobalGain(guint& gain)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_ILLEGAL_OPERATION);
+    if (iCSUplink && iUplinkInitialized)
+        {
+        gain = iCSUplink->Gain();
+        status = TMS_RESULT_SUCCESS;
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetCodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::GetCodecMode(const TMSFormatType /*fmttype*/,
+        const TMSStreamType /*strmtype*/, gint& /*mode*/)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::SetCodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::SetCodecMode(const TMSFormatType /*fmttype*/,
+        const TMSStreamType /*strmtype*/, const gint /*mode*/)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetSupportedBitRatesCount
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::GetSupportedBitRatesCount(guint& /*count*/)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetSupportedBitRates
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::GetSupportedBitRates(CBufFlat*& brbuffer)
+    {
+    TRACE_PRN_FN_ENT;
+    TRAPD(status, GetSupportedBitRatesL(brbuffer));
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetSupportedBitRatesL
+//
+// GetSupportedBitRates implementation which can leave.
+// -----------------------------------------------------------------------------
+//
+void TMSCallCSAdpt::GetSupportedBitRatesL(CBufFlat*& /*brbuffer*/)
+    {
+    User::Leave(TMS_RESULT_FEATURE_NOT_SUPPORTED);
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetBitRate
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::GetBitRate(guint& /*bitrate*/)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::SetBitRate
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::SetBitRate(const guint /*bitrate*/)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetVAD
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::GetVAD(const TMSFormatType /*fmttype*/, gboolean& /*vad*/)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::SetVAD
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::SetVAD(const TMSFormatType /*fmttype*/, const gboolean /*vad*/)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetCNG
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::GetCNG(const TMSFormatType /*fmttype*/, gboolean& /*cng*/)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::SetCNG
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::SetCNG(const TMSFormatType /*fmttype*/,
+        const gboolean /*cng*/)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetPlc
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::GetPlc(const TMSFormatType /*fmttype*/, gboolean& /*plc*/)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::SetPlc
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::SetPlc(const TMSFormatType /*fmttype*/,
+        const gboolean /*plc*/)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::SetOutput
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::SetOutput(TMSAudioOutput output)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
+
+    if (iRouting)
+        {
+        CTelephonyAudioRouting::TAudioOutput taroutput = TOTAROUTPUT(output);
+        TRAP(status, iRouting->SetOutputL(taroutput));
+        if (status == KErrArgument)
+            {
+            status = TMS_RESULT_INVALID_ARGUMENT;
+            }
+        else
+            {
+            status = TMS_RESULT_SUCCESS;
+            }
+        }
+
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetOutput
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::GetOutput(TMSAudioOutput& output)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
+
+    if (iRouting)
+        {
+        CTelephonyAudioRouting::TAudioOutput taroutput;
+        taroutput = iRouting->Output();
+        status = TMS_RESULT_SUCCESS;
+        output = TOTMSOUTPUT(taroutput);
+        }
+
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetPreviousOutput
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::GetPreviousOutput(TMSAudioOutput& output)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
+
+    if (iRouting)
+        {
+        CTelephonyAudioRouting::TAudioOutput taroutput;
+        taroutput = iRouting->PreviousOutput();
+        status = TMS_RESULT_SUCCESS;
+        output = TOTMSOUTPUT(taroutput);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::GetAvailableOutputsL
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::GetAvailableOutputsL(gint& count, CBufFlat*& outputsbuffer)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
+    TMSAudioOutput tmsoutput;
+
+    if (iRouting)
+        {
+        RBufWriteStream stream;
+        stream.Open(*outputsbuffer);
+        CleanupClosePushL(stream);
+
+        TArray<CTelephonyAudioRouting::TAudioOutput> availableOutputs =
+                iRouting->AvailableOutputs();
+
+        guint numOfItems = availableOutputs.Count();
+        count = numOfItems;
+        for (guint i = 0; i < numOfItems; i++)
+            {
+            tmsoutput = TOTMSOUTPUT(availableOutputs[i]);
+            stream.WriteUint32L(tmsoutput);
+            //TRACE_PRN_N1(_L("TMS->CallIPAdpt: outputs: [%d]"), availableOutputs[i]);
+            }
+
+        CleanupStack::PopAndDestroy(&stream);
+        status = TMS_RESULT_SUCCESS;
+        }
+
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::StartDTMF
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::StartDTMF(TMSStreamType strmtype, TDes& dtmfstring)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+
+    TmsMsgBufPckg dtmfpckg;
+
+    if (strmtype == TMS_STREAM_DOWNLINK && iDnlinkInitialized)
+        {
+        if (iDTMFDnlinkPlayer)
+            {
+            iDTMFDnlinkPlayer->PlayDtmfTone(dtmfstring);
+            }
+
+        dtmfpckg().iStatus = TMS_RESULT_SUCCESS;
+        //TMS_EVENT_DTMF_TONE_STARTED;
+        dtmfpckg().iRequest = ECmdDTMFOpenDnlinkComplete;
+        if (iDTMFNotifier)
+            {
+            iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
+            }
+        }
+    else if (strmtype == TMS_STREAM_UPLINK && iUplinkInitialized)
+        {
+        //use etel for uplink
+        if (iDTMFUplinkPlayer)
+            {
+            status = iDTMFUplinkPlayer->SendDtmfToneString(dtmfstring);
+            }
+
+        dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(status);
+        //TMS_EVENT_DTMF_TONE_STARTED;
+        dtmfpckg().iRequest = ECmdDTMFOpenUplinkComplete;
+
+        if (iDTMFNotifier)
+            {
+            iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
+            }
+        }
+
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::StopDTMF
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::StopDTMF(TMSStreamType streamtype)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+
+    if (streamtype == TMS_STREAM_DOWNLINK && iDTMFDnlinkPlayer)
+        {
+        iDTMFDnlinkPlayer->Cancel();
+        }
+    else if (streamtype == TMS_STREAM_UPLINK && iDTMFUplinkPlayer)
+        {
+        status = iDTMFUplinkPlayer->StopDtmfTone();
+        status = TMSUtility::EtelToTMSResult(status);
+        }
+
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::ContinueDTMF
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::ContinueDTMF(TBool continuesending)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+
+    if (iDTMFUplinkPlayer)
+        {
+        status = iDTMFUplinkPlayer->ContinueDtmfStringSending(continuesending);
+        status = TMSUtility::EtelToTMSResult(status);
+        }
+
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+//From DTMFTonePlayerObserver
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::DTMFInitCompleted
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallCSAdpt::DTMFInitCompleted(TInt /*error*/)
+    {
+    TRACE_PRN_FN_ENT;
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::DTMFToneFinished
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallCSAdpt::DTMFToneFinished(TInt error)
+    {
+    TRACE_PRN_FN_ENT;
+    TmsMsgBufPckg dtmfpckg;
+
+    if (error == KErrUnderflow || error == KErrInUse)
+        {
+        error = TMS_RESULT_SUCCESS;
+        }
+
+    dtmfpckg().iStatus = TMSUtility::TMSResult(error);
+    //TMS_EVENT_DTMF_TONE_STOPPED
+    dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
+    if (iDTMFNotifier)
+        {
+        iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
+        }
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::HandleDTMFEvent
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallCSAdpt::HandleDTMFEvent(
+        const TMSDTMFObserver::TCCPDtmfEvent aEvent, const TInt aError,
+        const TChar /*aTone*/)
+    {
+    TRACE_PRN_FN_ENT;
+    TmsMsgBufPckg dtmfpckg;
+
+    TRACE_PRN_N1(_L("**TMS TMSCallCSAdpt::HandleDTMFEvent error:%d"),aError);
+
+    dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(aError);
+
+    switch (aEvent)
+        {
+            /** Unknown */
+        case ECCPDtmfUnknown:
+            break;
+            /** DTMF sending started manually */
+        case ECCPDtmfManualStart:
+            /** Automatic DTMF sending initialized */
+        case ECCPDtmfSequenceStart:
+            //TMS_EVENT_DTMF_TONE_STARTED
+            dtmfpckg().iRequest = ECmdDTMFOpenUplinkComplete;
+            break;
+
+            /** DTMF sending stopped manually */
+        case ECCPDtmfManualStop:
+            //break;
+            /** DTMF sending aborted manually */
+        case ECCPDtmfManualAbort:
+            //break;
+            /** Automatic DTMF sending stopped */
+        case ECCPDtmfSequenceStop:
+            //break;
+            /** Automatic DTMF sending aborted */
+        case ECCPDtmfSequenceAbort:
+            //break;
+            /** There was stop mark in DTMF string */
+        case ECCPDtmfStopInDtmfString:
+            //break;
+            /** DTMF sending completed succesfully */
+        case ECCPDtmfStringSendingCompleted:
+            //TMS_EVENT_DTMF_TONE_STOPPED
+            dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
+            break;
+        default:
+            break;
+        }
+
+    if (iDTMFNotifier)
+        {
+        iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// From TMSCSPDevSoundObserver
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::DownlinkInitCompleted
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallCSAdpt::DownlinkInitCompleted(TInt status)
+    {
+    TRACE_PRN_FN_ENT;
+    NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status, 0);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::UplinkInitCompleted
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallCSAdpt::UplinkInitCompleted(TInt status)
+    {
+    TRACE_PRN_FN_ENT;
+    NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status, 0);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::UplinkActivatedSuccessfully
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallCSAdpt::UplinkActivatedSuccessfully()
+    {
+    TRACE_PRN_FN_ENT;
+    NotifyClient(iUplinkStreamId, ECmdUplinkStarted, KErrNone, 0);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::DownlinkActivatedSuccessfully
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallCSAdpt::DownlinkActivatedSuccessfully()
+    {
+    TRACE_PRN_FN_ENT;
+    NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, KErrNone, 0);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::UplinkActivationFailed
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallCSAdpt::UplinkActivationFailed()
+    {
+    TRACE_PRN_FN_ENT;
+    NotifyClient(iUplinkStreamId, ECmdUplinkStarted, TMS_RESULT_FATAL_ERROR, 0);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::DownlinkActivationFailed
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallCSAdpt::DownlinkActivationFailed()
+    {
+    TRACE_PRN_FN_ENT;
+    NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted,
+            TMS_RESULT_FATAL_ERROR, 0);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::AvailableOutputsChanged
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallCSAdpt::AvailableOutputsChanged(
+        CTelephonyAudioRouting& /*aTelephonyAudioRouting*/)
+    {
+    TRACE_PRN_FN_ENT;
+    TRoutingMsgBufPckg pckg;
+    pckg().iEvent = TMS_EVENT_ROUTING_AVAIL_OUTPUTS_CHANGED;
+    iTarSettings->SetTar(pckg, ETrue);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::OutputChanged
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallCSAdpt::OutputChanged(
+        CTelephonyAudioRouting& aTelephonyAudioRouting)
+    {
+    TRACE_PRN_FN_ENT;
+    TRoutingMsgBufPckg pckg;
+    pckg().iEvent = TMS_EVENT_ROUTING_OUTPUT_CHANGED;
+    pckg().iOutput = TOTMSOUTPUT(aTelephonyAudioRouting.Output());
+    iTarSettings->SetTar(pckg, ETrue);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::SetOutputComplete
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallCSAdpt::SetOutputComplete(
+        CTelephonyAudioRouting& aTelephonyAudioRouting, gint /*aError*/)
+    {
+    TRACE_PRN_FN_ENT;
+    TRoutingMsgBufPckg pckg;
+    pckg().iEvent = TMS_EVENT_ROUTING_SET_OUTPUT_COMPLETE;
+    pckg().iOutput = TOTMSOUTPUT(aTelephonyAudioRouting.Output());
+    if (iTarSettings)
+        {
+        iTarSettings->SetTar(pckg, ETrue);
+        }
+    //TRACE_PRN_IF_ERR(aError);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::NotifyClient
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallCSAdpt::NotifyClient(const gint strmId, const gint aCommand,
+        const gint aStatus, const gint64 /*aInt64*/)
+    {
+    iMsgBuffer.iRequest = aCommand;
+    iMsgBuffer.iStatus = aStatus;
+
+    if (strmId == iUplinkStreamId)
+        {
+        iMsgQueueUp.Send(iMsgBuffer);
+        }
+    else if (strmId == iDnlinkStreamId)
+        {
+        iMsgQueueDn.Send(iMsgBuffer);
+        }
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/src/tmscallipadpt.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,1536 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#include <AudioPreference.h>
+#include "tmsutility.h"
+#include "tmsclientserver.h"
+#include "tmsshared.h"
+#include "tmsipcallstream.h"
+#include "tmscallipadpt.h"
+
+using namespace TMS;
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::NewL
+// Symbian constructor.
+// -----------------------------------------------------------------------------
+//
+TMSCallIPAdpt* TMSCallIPAdpt::NewL()
+    {
+    TMSCallIPAdpt* self = new (ELeave) TMSCallIPAdpt();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::ConstructL
+// 2-nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void TMSCallIPAdpt::ConstructL()
+    {
+    TRACE_PRN_FN_ENT;
+    iIPUplink = NULL;
+    iIPDownlink = NULL;
+    iDTMFDnlinkPlayer = NULL;
+    iDTMFUplinkPlayer = NULL;
+    iDTMFNotifier = NULL;
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::TMSCallIPAdpt
+//
+// -----------------------------------------------------------------------------
+//
+TMSCallIPAdpt::TMSCallIPAdpt()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::~TMSCallIPAdpt
+//
+// -----------------------------------------------------------------------------
+//
+TMSCallIPAdpt::~TMSCallIPAdpt()
+    {
+    TRACE_PRN_FN_ENT;
+
+    iCodecs.Reset();
+    iCodecs.Close();
+    iArrBitrates.Reset();
+    delete iDTMFUplinkPlayer;
+    delete iDTMFDnlinkPlayer;
+    delete iDTMFNotifier;
+    delete iIPUplink;
+    delete iIPDownlink;
+
+    if (iMsgQueueUp.Handle() > 0)
+        {
+        iMsgQueueUp.Close();
+        }
+    if (iMsgQueueDn.Handle() > 0)
+        {
+        iMsgQueueDn.Close();
+        }
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::PostConstruct
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::PostConstruct()
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+    iNextStreamId = 1;
+    iUplinkInitialized = FALSE;
+    iDnlinkInitialized = FALSE;
+
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::CreateStream
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::CreateStream(TMSCallType /*callType*/,
+        TMSStreamType strmType, gint& outStrmId)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+    switch (strmType)
+        {
+        case TMS_STREAM_UPLINK:
+            {
+            status = TMS_RESULT_ALREADY_EXIST;
+            if (!iUplinkInitialized)
+                {
+                iUplinkInitialized = TRUE;
+                iUplinkStreamId = iNextStreamId;
+                outStrmId = iUplinkStreamId;
+                iNextStreamId++;
+                status = TMS_RESULT_SUCCESS;
+                }
+            break;
+            }
+        case TMS_STREAM_DOWNLINK:
+            {
+            status = TMS_RESULT_ALREADY_EXIST;
+            if (!iDnlinkInitialized)
+                {
+                iDnlinkInitialized = TRUE;
+                iDnlinkStreamId = iNextStreamId;
+                outStrmId = iDnlinkStreamId;
+                iNextStreamId++;
+                status = TMS_RESULT_SUCCESS;
+                }
+            break;
+            }
+        default:
+            {
+            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
+            break;
+            }
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::InitStream
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::InitStreamL(TMSCallType /*callType*/,
+        TMSStreamType strmType, gint strmId, TMSFormatType frmtType,
+        const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+
+    TUint32 fourCC = TOFOURCC(frmtType);
+    if (fourCC == NULL)
+        {
+        return TMS_RESULT_INVALID_ARGUMENT;
+        }
+
+    switch (strmType)
+        {
+        case TMS_STREAM_UPLINK:
+            {
+            status = TMS_RESULT_DOES_NOT_EXIST;
+            if (strmId == iUplinkStreamId)
+                {
+                SetFormat(iUplinkStreamId, fourCC);
+                status = OpenUplinkL(aMessage);
+
+                iDTMFUplinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this,
+                        KAudioPrefUnknownVoipAudioUplink,
+                        KAudioPriorityUnknownVoipAudioUplink);
+
+                if (!iDTMFNotifier)
+                    {
+                    iDTMFNotifier = TMSDtmfNotifier::NewL();
+                    }
+
+                NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
+                }
+            break;
+            }
+        case TMS_STREAM_DOWNLINK:
+            {
+            status = TMS_RESULT_DOES_NOT_EXIST;
+            if (strmId == iDnlinkStreamId)
+                {
+                SetFormat(iDnlinkStreamId, fourCC);
+                status = OpenDownlinkL(aMessage);
+
+                iDTMFDnlinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this,
+                        KAudioPrefUnknownVoipAudioDownlink,
+                        KAudioPriorityUnknownVoipAudioDownlink);
+
+                if (!iDTMFNotifier)
+                    {
+                    iDTMFNotifier = TMSDtmfNotifier::NewL();
+                    }
+
+                NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
+                }
+            break;
+            }
+        default:
+            {
+            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
+            break;
+            }
+        }
+
+    TRACE_PRN_IF_ERR(status);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::StartStream
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::StartStream(TMSCallType /*callType*/,
+        TMSStreamType strmType, gint strmId)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    switch (strmType)
+        {
+        case TMS_STREAM_UPLINK:
+            {
+            if (strmId == iUplinkStreamId && iIPUplink)
+                {
+                iIPUplink->Start();
+                status = TMS_RESULT_SUCCESS;
+                NotifyClient(iUplinkStreamId, ECmdUplinkStarted, status);
+                }
+            break;
+            }
+        case TMS_STREAM_DOWNLINK:
+            {
+            if (strmId == iDnlinkStreamId && iIPDownlink)
+                {
+                iIPDownlink->Start();
+                status = TMS_RESULT_SUCCESS;
+                NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, status);
+                }
+            break;
+            }
+        default:
+            {
+            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
+            break;
+            }
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::PauseStream
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::PauseStream(TMSCallType /*callType*/,
+        TMSStreamType strmType, gint strmId)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    switch (strmType)
+        {
+        case TMS_STREAM_UPLINK:
+            {
+            if (strmId == iUplinkStreamId && iIPUplink)
+                {
+                iIPUplink->Stop();
+                status = TMS_RESULT_SUCCESS;
+                NotifyClient(iUplinkStreamId, ECmdUplinkPaused, status);
+                }
+            break;
+            }
+        case TMS_STREAM_DOWNLINK:
+            {
+            if (strmId == iDnlinkStreamId && iIPDownlink)
+                {
+                iIPDownlink->Stop();
+                status = TMS_RESULT_SUCCESS;
+                NotifyClient(iDnlinkStreamId, ECmdDownlinkPaused, status);
+                }
+            break;
+            }
+        default:
+            {
+            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
+            break;
+            }
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::StopStream
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::StopStream(TMSCallType /*callType*/, TMSStreamType strmType,
+        gint strmId)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+
+    switch (strmType)
+        {
+        case TMS_STREAM_UPLINK:
+            {
+            if (strmId == iUplinkStreamId && iIPUplink)
+                {
+                iIPUplink->Stop();
+                status = TMS_RESULT_SUCCESS;
+                NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
+                }
+            break;
+            }
+        case TMS_STREAM_DOWNLINK:
+            {
+            if (strmId == iDnlinkStreamId && iIPDownlink)
+                {
+                iIPDownlink->Stop();
+                status = TMS_RESULT_SUCCESS;
+                NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
+                }
+            break;
+            }
+        default:
+            {
+            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
+            break;
+            }
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::DeinitStream
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::DeinitStream(TMSCallType /*callType*/,
+        TMSStreamType strmType, gint strmId)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+
+    switch (strmType)
+        {
+        case TMS_STREAM_UPLINK:
+            {
+            if (strmId == iUplinkStreamId && iIPUplink)
+                {
+                iIPUplink->Stop();
+                //iUplinkStreamId = -1;
+                iUplinkInitialized = FALSE;
+                status = TMS_RESULT_SUCCESS;
+                NotifyClient(iUplinkStreamId, ECmdDownlinkDeInitComplete,
+                        status);
+                }
+            break;
+            }
+        case TMS_STREAM_DOWNLINK:
+            {
+            if (strmId == iDnlinkStreamId && iIPDownlink)
+                {
+                iIPDownlink->Stop();
+                //iDnlinkStreamId = -1;
+                iDnlinkInitialized = FALSE;
+                status = TMS_RESULT_SUCCESS;
+                NotifyClient(iDnlinkStreamId, ECmdDownlinkDeInitComplete,
+                        status);
+                }
+            break;
+            }
+        default:
+            {
+            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
+            break;
+            }
+        }
+
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::DeleteStream
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::DeleteStream(TMSCallType /*callType*/,
+        TMSStreamType strmType, gint strmId)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+    switch (strmType)
+        {
+        case TMS_STREAM_UPLINK:
+            {
+            // This is additional error checking
+            if (strmId == iUplinkStreamId)
+                {
+                iUplinkStreamId = -1;
+                iUplinkInitialized = FALSE;
+                }
+            break;
+            }
+        case TMS_STREAM_DOWNLINK:
+            {
+            // This is additional error checking
+            if (strmId == iDnlinkStreamId)
+                {
+                iDnlinkStreamId = -1;
+                iDnlinkInitialized = FALSE;
+                }
+            break;
+            }
+        default:
+            {
+            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
+            break;
+            }
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::DataXferBufferEmptied
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::DataXferBufferEmptied(TMSCallType /*callType*/,
+        TMSStreamType strmType, gint strmId)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+    switch (strmType)
+        {
+        case TMS_STREAM_UPLINK:
+            {
+            if (strmId == iUplinkStreamId)
+                {
+                TRAP(status, BufferEmptiedL());
+                }
+            break;
+            }
+        case TMS_STREAM_DOWNLINK:
+            status = TMS_RESULT_ILLEGAL_OPERATION;
+            break;
+        default:
+            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
+            break;
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::DataXferBufferFilled
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::DataXferBufferFilled(TMSCallType /*callType*/,
+        TMSStreamType strmType, gint strmId, guint datasize)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+    switch (strmType)
+        {
+        case TMS_STREAM_DOWNLINK:
+            if (strmId == iDnlinkStreamId)
+                {
+                TRAP(status, BufferFilledL(datasize));
+                }
+            break;
+        case TMS_STREAM_UPLINK:
+            status = TMS_RESULT_ILLEGAL_OPERATION;
+            break;
+        default:
+            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
+            break;
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetDataXferBufferHndl
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetDataXferBufferHndl(const TMSCallType /*callType*/,
+        const TMSStreamType strmType, const gint strmId, const guint32 key,
+        RChunk& chunk)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+    switch (strmType)
+        {
+        case TMS_STREAM_DOWNLINK:
+            {
+            if (strmId == iDnlinkStreamId)
+                {
+                TRAP(status, GetDataXferChunkHndl(strmType, key, chunk));
+                }
+            break;
+            }
+        case TMS_STREAM_UPLINK:
+            {
+            if (strmId == iUplinkStreamId)
+                {
+                TRAP(status, GetDataXferChunkHndl(strmType, key, chunk));
+                }
+            break;
+            }
+        default:
+            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
+            break;
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetMaxVolume
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetMaxVolume(guint& volume)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+
+    if (iDnlinkInitialized && iIPDownlink)
+        {
+        status = iIPDownlink->GetMaxVolume(volume);
+        iMaxVolume = volume;
+        TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt: GetMaxVolume [%d]"), iMaxVolume);
+        }
+
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::SetVolume
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::SetVolume(const guint volume)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iDnlinkInitialized && iIPDownlink)
+        {
+        status = iIPDownlink->SetVolume(volume);
+        NotifyClient(iDnlinkStreamId, ECmdSetVolume, status);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetVolume
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetVolume(guint& volume)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iDnlinkInitialized && iIPDownlink)
+        {
+        status = iIPDownlink->GetVolume(volume);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetMaxGain
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetMaxGain(guint& gain)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iUplinkInitialized && iIPUplink)
+        {
+        status = iIPUplink->GetMaxGain(gain);
+        iMaxGain = gain;
+        TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt::GetMaxGain [%d]"), iMaxGain);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::SetGain
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::SetGain(const guint gain)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iUplinkInitialized && iIPUplink)
+        {
+        status = iIPUplink->SetGain(gain);
+        NotifyClient(iUplinkStreamId, ECmdSetGain, status);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetGain
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetGain(guint& gain)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iUplinkInitialized && iIPUplink)
+        {
+        status = iIPUplink->GetGain(gain);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetGlobalMaxVolume
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetGlobalMaxVolume(guint& volume)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iDnlinkInitialized && iIPDownlink)
+        {
+        status = iIPDownlink->GetMaxVolume(volume);
+        iMaxVolume = volume;
+        TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt: GetMaxVolume [%d]"), iMaxVolume);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::SetGlobalVolume
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::SetGlobalVolume(const guint volume)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iDnlinkInitialized && iIPDownlink)
+        {
+        status = iIPDownlink->SetVolume(volume);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetGlobalVolume
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetGlobalVolume(guint& volume)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iDnlinkInitialized && iIPDownlink)
+        {
+        status = iIPDownlink->GetVolume(volume);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetGlobalMaxGain
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetGlobalMaxGain(guint& gain)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iUplinkInitialized && iIPUplink)
+        {
+        status = iIPUplink->GetMaxGain(gain);
+        iMaxGain = gain;
+        TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt::GetMaxGain [%d]"), iMaxGain);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::SetGlobalGain
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::SetGlobalGain(const guint gain)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iUplinkInitialized && iIPUplink)
+        {
+        status = iIPUplink->SetGain(gain);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetGlobalGain
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetGlobalGain(guint& gain)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iUplinkInitialized && iIPUplink)
+        {
+        status = iIPUplink->GetGain(gain);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetCodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetCodecMode(const TMSFormatType fmttype,
+        const TMSStreamType strmtype, gint& mode)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+    switch (fmttype)
+        {
+        case TMS_FORMAT_ILBC:
+            status = GetIlbcCodecMode(mode, strmtype);
+            break;
+        case TMS_FORMAT_G711:
+            status = GetG711CodecMode(mode, strmtype);
+            break;
+        default:
+            status = TMS_RESULT_FORMAT_TYPE_NOT_SUPPORTED;
+            break;
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::SetCodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::SetCodecMode(const TMSFormatType fmttype,
+        const TMSStreamType strmtype, const gint mode)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+    switch (fmttype)
+        {
+        case TMS_FORMAT_ILBC:
+            status = SetIlbcCodecMode(mode, strmtype);
+            break;
+        case TMS_FORMAT_G711:
+            status = SetG711CodecMode(mode, strmtype);
+            break;
+        default:
+            status = TMS_RESULT_FORMAT_TYPE_NOT_SUPPORTED;
+            break;
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetSupportedBitRatesCount
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetSupportedBitRatesCount(guint& count)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iIPUplink)
+        {
+        status = iIPUplink->GetSupportedBitrates(iArrBitrates);
+        count = iArrBitrates.Count();
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetSupportedBitRates
+//
+// Bitrates are already returned from the codec as a result of call to
+// GetSupportedBitratesCount(). Just pack them into a descriptor and return
+// back to the client.
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetSupportedBitRates(CBufFlat*& brbuffer)
+    {
+    TRAPD(status, GetSupportedBitRatesL(brbuffer));
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetSupportedBitRatesL
+//
+// GetSupportedBitRates implementation which can leave.
+// -----------------------------------------------------------------------------
+//
+void TMSCallIPAdpt::GetSupportedBitRatesL(CBufFlat*& brbuffer)
+    {
+    TRACE_PRN_FN_ENT;
+    RBufWriteStream stream;
+    stream.Open(*brbuffer);
+    CleanupClosePushL(stream);
+    guint numOfItems = iArrBitrates.Count();
+
+    for (guint i = 0; i < numOfItems; i++)
+        {
+        stream.WriteUint32L(iArrBitrates[i]);
+        //TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt: BR: [%d]"), iArrBitrates[i]);
+        }
+
+    CleanupStack::PopAndDestroy(&stream);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetBitRate
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetBitRate(guint& bitrate)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iIPUplink)
+        {
+        status = iIPUplink->GetBitrate(bitrate);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::SetBitRate
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::SetBitRate(const guint bitrate)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iIPUplink)
+        {
+        status = iIPUplink->SetBitrate(bitrate);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetVAD
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetVAD(const TMSFormatType fmttype, gboolean& vad)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iIPUplink)
+        {
+        status = iIPUplink->GetVad(fmttype, vad);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::SetVAD
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::SetVAD(const TMSFormatType fmttype, const gboolean vad)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iIPUplink)
+        {
+        status = iIPUplink->SetVad(fmttype, vad);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetCNG
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetCNG(const TMSFormatType fmttype, gboolean& cng)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iIPDownlink)
+        {
+        status = iIPDownlink->GetCng(fmttype, cng);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::SetCNG
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::SetCNG(const TMSFormatType fmttype, const gboolean cng)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iIPDownlink)
+        {
+        status = iIPDownlink->SetCng(fmttype, cng);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetPlc
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetPlc(const TMSFormatType fmttype, gboolean& plc)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iIPDownlink)
+        {
+        status = iIPDownlink->GetPlc(fmttype, plc);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::SetPlc
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::SetPlc(const TMSFormatType fmttype, const gboolean plc)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iIPDownlink)
+        {
+        status = iIPDownlink->SetPlc(fmttype, plc);
+        }
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::OpenDownlinkL
+// Method for player initialization.
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::OpenDownlinkL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+
+    // Clients must have MultimediaDD capability to use this priority/pref.
+    // TODO: Also, TMS will monitor for emergency call and if detected it
+    //       will deny access to audio resources.
+    iPriority.iPref = KAudioPrefVoipAudioDownlink;
+    iPriority.iPriority = KAudioPriorityVoipAudioDownlink;
+
+    if (!iIPDownlink)
+        {
+        iIPDownlink = TMSIPDownlink::NewL(iDnFourCC, iPriority);
+        }
+
+    if (iIPDownlink)
+        {
+        // Open message queue for handling server notifications to the client
+        if (iMsgQueueDn.Handle() <= 0)
+            {
+            // Second argument in TMSCallProxy::InitStream
+            status = iMsgQueueDn.Open(aMessage, 1);
+            }
+
+        if (status == TMS_RESULT_SUCCESS)
+            {
+            // For transfer data buffer processing
+            iIPDownlink->SetMsgQueue(iMsgQueueDn);
+            }
+        }
+
+    TRACE_PRN_IF_ERR(status);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::OpenUplinkL
+// Method for recorder initialization.
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::OpenUplinkL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+
+    // Ensure clients have MultimediaDD capability to use this priority/pref
+    iPriority.iPref = KAudioPrefVoipAudioUplink;
+    iPriority.iPriority = KAudioPriorityVoipAudioUplink;
+
+    if (!iIPUplink)
+        {
+        iIPUplink = TMSIPUplink::NewL(iUpFourCC, iPriority);
+        }
+
+    if (iIPUplink)
+        {
+        // Open message queue for handling server notifications to the client
+        if (iMsgQueueUp.Handle() <= 0)
+            {
+            // Second argument in TMSCallProxy::InitStream
+            status = iMsgQueueUp.Open(aMessage, 1);
+            }
+
+        if (status == TMS_RESULT_SUCCESS)
+            {
+            // For transfer data buffer processing
+            iIPUplink->SetMsgQueue(iMsgQueueUp);
+            }
+        }
+
+    TRACE_PRN_IF_ERR(status);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::SetFormat
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallIPAdpt::SetFormat(const gint strmId, const TUint32 aFormat)
+    {
+    if (strmId == iUplinkStreamId)
+        {
+        iUpFourCC = aFormat;
+        }
+    else if (strmId == iDnlinkStreamId)
+        {
+        iDnFourCC = aFormat;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::BufferFilled
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallIPAdpt::BufferFilledL(TUint dataSize)
+    {
+    if (iIPDownlink)
+        {
+        iIPDownlink->BufferFilled(dataSize);
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::BufferEmptied
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallIPAdpt::BufferEmptiedL()
+    {
+    if (iIPUplink)
+        {
+        iIPUplink->BufferEmptied();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetDataXferChunkHndl
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetDataXferChunkHndl(const TMSStreamType strmType,
+        const TUint32 key, RChunk& chunk)
+    {
+    TRACE_PRN_FN_ENT;
+
+    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
+    switch (strmType)
+        {
+        case TMS_STREAM_DOWNLINK:
+            {
+            if (iIPDownlink)
+                {
+                status = iIPDownlink->GetDataXferChunkHndl(key, chunk);
+                }
+            break;
+            }
+        case TMS_STREAM_UPLINK:
+            {
+            if (iIPUplink)
+                {
+                status = iIPUplink->GetDataXferChunkHndl(key, chunk);
+                }
+            break;
+            }
+        default:
+            status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
+            break;
+        }
+
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::SetIlbcCodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::SetIlbcCodecMode(const gint mode,
+        const TMSStreamType strmtype)
+    {
+    gint status(TMS_RESULT_INVALID_ARGUMENT);
+
+    if (strmtype == TMS_STREAM_DOWNLINK)
+        {
+        if (iDnlinkInitialized && iIPDownlink)
+            {
+            status = iIPDownlink->SetIlbcCodecMode(mode);
+            }
+        }
+    else if (strmtype == TMS_STREAM_UPLINK)
+        {
+        if (iUplinkInitialized && iIPUplink)
+            {
+            status = iIPUplink->SetIlbcCodecMode(mode);
+            }
+        }
+
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetIlbcCodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetIlbcCodecMode(gint& mode, const TMSStreamType strmtype)
+    {
+    gint status(TMS_RESULT_INVALID_ARGUMENT);
+
+    if (strmtype == TMS_STREAM_DOWNLINK)
+        {
+        if (iDnlinkInitialized && iIPDownlink)
+            {
+            status = iIPDownlink->GetIlbcCodecMode(mode);
+            }
+        }
+    else if (strmtype == TMS_STREAM_UPLINK)
+        {
+        if (iUplinkInitialized && iIPUplink)
+            {
+            status = iIPUplink->GetIlbcCodecMode(mode);
+            }
+        }
+
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::SetG711CodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::SetG711CodecMode(const gint mode,
+        const TMSStreamType strmtype)
+    {
+    gint status(TMS_RESULT_INVALID_ARGUMENT);
+
+    if (strmtype == TMS_STREAM_DOWNLINK)
+        {
+        if (iDnlinkInitialized && iIPDownlink)
+            {
+            status = iIPDownlink->SetG711CodecMode(mode);
+            }
+        }
+    else if (strmtype == TMS_STREAM_UPLINK)
+        {
+        if (iUplinkInitialized && iIPUplink)
+            {
+            status = iIPUplink->SetG711CodecMode(mode);
+            }
+        }
+
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetG711CodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetG711CodecMode(gint& mode, const TMSStreamType strmtype)
+    {
+    gint status(TMS_RESULT_INVALID_ARGUMENT);
+
+    if (strmtype == TMS_STREAM_DOWNLINK)
+        {
+        if (iDnlinkInitialized && iIPDownlink)
+            {
+            status = iIPDownlink->GetG711CodecMode(mode);
+            }
+        }
+    else if (strmtype == TMS_STREAM_UPLINK)
+        {
+        if (iUplinkInitialized && iIPUplink)
+            {
+            status = iIPUplink->GetG711CodecMode(mode);
+            }
+        }
+
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::FrameModeRequiredForEC
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::FrameModeRqrdForEC(gboolean& frmodereq)
+    {
+    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
+    if (iIPDownlink)
+        {
+        status = iIPDownlink->FrameModeRqrdForEC(frmodereq);
+        }
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::SetFrameMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::SetFrameMode(const gboolean frmode)
+    {
+    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
+    if (iIPDownlink)
+        {
+        status = iIPDownlink->SetFrameMode(frmode);
+        }
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetFrameMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetFrameMode(gboolean& frmode)
+    {
+    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
+    if (iIPDownlink)
+        {
+        status = iIPDownlink->GetFrameMode(frmode);
+        }
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::ConcealErrorForNextBuffer
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::ConcealErrorForNextBuffer()
+    {
+    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
+    if (iIPDownlink)
+        {
+        status = iIPDownlink->ConcealErrorForNextBuffer();
+        }
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::BadLsfNextBuffer
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::BadLsfNextBuffer()
+    {
+    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
+    if (iIPDownlink)
+        {
+        status = iIPDownlink->BadLsfNextBuffer();
+        }
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::SetOutput
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::SetOutput(TMSAudioOutput output)
+    {
+    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
+    if (iDnlinkInitialized && iIPDownlink)
+        {
+        TRAP(status, iIPDownlink->SetAudioDeviceL(output));
+        }
+    return status;
+    }
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetOutput
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetOutput(TMSAudioOutput& output)
+    {
+    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
+    if (iDnlinkInitialized && iIPDownlink)
+        {
+        TRAP(status, iIPDownlink->GetAudioDeviceL(output));
+        }
+    return status;
+    }
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetPreviousOutput
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetPreviousOutput(TMSAudioOutput& /*output*/)
+    {
+    return TMS_RESULT_FEATURE_NOT_SUPPORTED;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::GetAvailableOutputsL
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::GetAvailableOutputsL(gint& /*count*/,
+        CBufFlat*& /*outputsbuffer*/)
+    {
+    return TMS_RESULT_FEATURE_NOT_SUPPORTED;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::StartDTMF
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::StartDTMF(TMSStreamType strmtype, TDes& dtmfstring)
+    {
+    TRACE_PRN_FN_ENT;
+    TmsMsgBufPckg dtmfpckg;
+    if (strmtype == TMS_STREAM_DOWNLINK)
+        {
+        if (iDTMFDnlinkPlayer /*&& iDTMFDnlinkStatus*/)
+            {
+            iDTMFDnlinkPlayer->PlayDtmfTone(dtmfstring);
+            dtmfpckg().iStatus = TMS_RESULT_SUCCESS;
+            //TMS_EVENT_DTMF_TONE_STARTED
+            dtmfpckg().iRequest = ECmdDTMFOpenDnlinkComplete;
+            }
+        }
+    else if (strmtype == TMS_STREAM_UPLINK)
+        {
+        if (iDTMFUplinkPlayer /*&& iDTMFUplinkStatus*/)
+            {
+            iDTMFUplinkPlayer->PlayDtmfTone(dtmfstring);
+            dtmfpckg().iStatus = TMS_RESULT_SUCCESS;
+            //TMS_EVENT_DTMF_TONE_STARTED
+            dtmfpckg().iRequest = ECmdDTMFOpenUplinkComplete;
+            }
+        }
+
+    if (iDTMFNotifier)
+        {
+        iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
+        }
+    TRACE_PRN_FN_EXT;
+    return TMS_RESULT_SUCCESS;
+    }
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::StopDTMF
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::StopDTMF(TMSStreamType streamtype)
+    {
+    TRACE_PRN_FN_ENT;
+
+    if (streamtype == TMS_STREAM_DOWNLINK)
+        {
+        iDTMFDnlinkPlayer->Cancel();
+        }
+    else
+        {
+        iDTMFUplinkPlayer->Cancel();
+        }
+
+    TRACE_PRN_FN_EXT;
+    return TMS_RESULT_SUCCESS;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::ContinueDTMF
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::ContinueDTMF(TBool /*continuesending*/)
+    {
+    TRACE_PRN_FN_ENT;
+    TRACE_PRN_FN_EXT;
+    return TMS_RESULT_FEATURE_NOT_SUPPORTED;
+    }
+
+//From DTMFTonePlayerObserver
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::DTMFInitCompleted
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallIPAdpt::DTMFInitCompleted(TInt /*error*/)
+    {
+    //DTMF init status
+    TRACE_PRN_FN_ENT;
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::DTMFToneFinished
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallIPAdpt::DTMFToneFinished(TInt error)
+    {
+    TRACE_PRN_FN_ENT;
+    TmsMsgBufPckg dtmfpckg;
+
+     if(error == KErrUnderflow || error == KErrInUse)
+         {
+         error = TMS_RESULT_SUCCESS;
+         }
+
+    dtmfpckg().iStatus = error;
+    //TMS_EVENT_DTMF_TONE_STOPPED
+    dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
+    if (iDTMFNotifier)
+        {
+        iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::NotifyClient
+// -----------------------------------------------------------------------------
+//
+void TMSCallIPAdpt::NotifyClient(const gint strmId, const TInt aCommand,
+        const TInt aStatus, const TInt64 /*aInt64*/)
+    {
+    iMsgBuffer.iRequest = aCommand;
+    iMsgBuffer.iStatus = aStatus;
+
+    if (strmId == iUplinkStreamId)
+        {
+        iMsgQueueUp.Send(iMsgBuffer);
+        }
+    else if (strmId == iDnlinkStreamId)
+        {
+        iMsgQueueDn.Send(iMsgBuffer);
+        }
+    }
+
+// End of file
--- a/mmserv/tms/tmscallserver/src/tmscallserver.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmscallserver/src/tmscallserver.cpp	Mon May 03 12:59:52 2010 +0300
@@ -16,7 +16,7 @@
  */
 
 #include "tmscallserver.h"
-#include "delaytimer.h"
+#include "tmsdelaytimer.h"
 #include "tmsutility.h"
 #include "tmscallsession.h"
 
--- a/mmserv/tms/tmscallserver/src/tmscallsession.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmscallserver/src/tmscallsession.cpp	Mon May 03 12:59:52 2010 +0300
@@ -17,7 +17,7 @@
 
 #include "tmsutility.h"
 #include "tmsutility.h"
-#include "calladpt.h"
+#include "tmscalladpt.h"
 #include "tmscallserver.h"
 #include "tmscallclisrv.h"
 #include "tmscallsession.h"
@@ -1062,7 +1062,7 @@
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_DOES_NOT_EXIST);
-    TMSAudioOutput outputtype;
+    TMSAudioOutput outputtype(TMS_AUDIO_OUTPUT_NONE);
     if (iCallAdpt)
         {
         status = iCallAdpt->GetOutput(outputtype);
@@ -1082,7 +1082,7 @@
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_DOES_NOT_EXIST);
-    TMSAudioOutput outputtype;
+    TMSAudioOutput outputtype(TMS_AUDIO_OUTPUT_NONE);
     if (iCallAdpt)
         {
         status = iCallAdpt->GetPreviousOutput(outputtype);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/src/tmscsdevsound.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,206 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#include <AudioPreference.h>
+#include <glib.h>
+#include <S60FourCC.h>
+#include "tmscsdevsound.h"
+#include "tmscsdevsoundobserver.h"
+
+using namespace TMS;
+
+// -----------------------------------------------------------------------------
+// TMSCSPDevSound
+// -----------------------------------------------------------------------------
+//
+TMSCSPDevSound::TMSCSPDevSound(TMSCSPDevSoundObserver& aObserver) :
+    iObserver(aObserver)
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// ConstructL
+// -----------------------------------------------------------------------------
+//
+void TMSCSPDevSound::ConstructL(TMMFState aMode, gint aAudioPreference,
+        gint aAudioPriority)
+    {
+    TMMFPrioritySettings audioPriority;
+    TFourCC modemFourCC;
+    modemFourCC.Set(KS60FourCCCodeModem);
+    iDevSound = CMMFDevSound::NewL();
+    if (iDevSound)
+        {
+#ifndef __WINSCW__
+        iDevSound->InitializeL(*this, modemFourCC, aMode);
+#else //For testing TMS in WINSCW
+        iDevSound->InitializeL(*this, KMMFFourCCCodePCM16, aMode);
+#endif
+        iStreamType = aAudioPreference;
+        audioPriority.iPriority = aAudioPriority;
+        audioPriority.iPref = aAudioPreference;
+        audioPriority.iState = aMode;
+        iDevSound->SetPrioritySettings(audioPriority);
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// From class MDevSoundObserver
+// Not implemented
+// -----------------------------------------------------------------------------
+//
+TMSCSPDevSound::~TMSCSPDevSound()
+    {
+    delete iDevSound;
+    }
+
+// -----------------------------------------------------------------------------
+// Tries to activate the audio stream if not active or activating
+// -----------------------------------------------------------------------------
+//
+void TMSCSPDevSound::Activate()
+    {
+    if (!IsActive() && !IsActivationOngoing())
+        {
+        iActivationOngoing = ETrue;
+        TRAP_IGNORE(DoActivateL());
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// Deactivates the audio device.
+// -----------------------------------------------------------------------------
+//
+void TMSCSPDevSound::Deactivate()
+    {
+    if (iDevSound && (IsActive() || IsActivationOngoing()))
+        {
+        iDevSound->Stop();
+        iActive = EFalse;
+        iActivationOngoing = EFalse;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// ActivationOngoing
+// -----------------------------------------------------------------------------
+//
+TBool TMSCSPDevSound::IsActivationOngoing() const
+    {
+    return iActivationOngoing;
+    }
+
+// -----------------------------------------------------------------------------
+// IsActive
+// -----------------------------------------------------------------------------
+//
+TBool TMSCSPDevSound::IsActive() const
+    {
+    return iActive;
+    }
+
+// -----------------------------------------------------------------------------
+// DevSound
+// -----------------------------------------------------------------------------
+//
+CMMFDevSound& TMSCSPDevSound::DevSound()
+    {
+    return *iDevSound;
+    }
+
+// -----------------------------------------------------------------------------
+// From class MDevSoundObserver
+// Not implemented
+// -----------------------------------------------------------------------------
+//
+void TMSCSPDevSound::InitializeComplete(TInt aError)
+    {
+    if (iStreamType == KAudioPrefCSCallDownlink)
+        {
+        iObserver.DownlinkInitCompleted(aError);
+        }
+    else
+        {
+        iObserver.UplinkInitCompleted(aError);
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// From class MDevSoundObserver
+// Not implemented
+// -----------------------------------------------------------------------------
+//
+void TMSCSPDevSound::BufferToBeFilled(CMMFBuffer* /*aBuffer*/)
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// From class MDevSoundObserver
+// Not implemented
+// -----------------------------------------------------------------------------
+//
+void TMSCSPDevSound::PlayError(TInt /*aError*/)
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// From class MDevSoundObserver
+// Not implemented
+// -----------------------------------------------------------------------------
+//
+void TMSCSPDevSound::ToneFinished(TInt /*aError*/)
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// From class MDevSoundObserver
+// Not implemented
+// -----------------------------------------------------------------------------
+//
+void TMSCSPDevSound::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// From class MDevSoundObserver
+// Not implemented
+// -----------------------------------------------------------------------------
+//
+void TMSCSPDevSound::RecordError(TInt /*aError*/)
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// From class MDevSoundObserver
+// Not implemented
+// -----------------------------------------------------------------------------
+//
+void TMSCSPDevSound::ConvertError(TInt /*aError*/)
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// From class MDevSoundObserver
+// Not implemented
+// -----------------------------------------------------------------------------
+//
+void TMSCSPDevSound::DeviceMessage(TUid /*aMessageType*/,
+        const TDesC8& /*aMsg*/)
+    {
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/src/tmscsdownlink.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#include <AudioPreference.h>
+#include "tmscsdownlink.h"
+#include "tmscsdevsoundobserver.h"
+
+using namespace TMS;
+
+const gint KDefaultVolume = 4;
+const gint KDefaultMaxVolume = 10;
+
+// -----------------------------------------------------------------------------
+// Static constructor
+// -----------------------------------------------------------------------------
+//
+TMSCSDownlink* TMSCSDownlink::NewL(TMSCSPDevSoundObserver& aObserver)
+    {
+    TMSCSDownlink* self = new (ELeave) TMSCSDownlink(aObserver);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+TMSCSDownlink::~TMSCSDownlink()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// Sets volume
+// -----------------------------------------------------------------------------
+//
+void TMSCSDownlink::SetVolume(gint aVolume)
+    {
+    if (iDevSound)
+        {
+        gint maxVolume(iDevSound->MaxVolume());
+        maxVolume = (maxVolume > 0) ? maxVolume : KDefaultMaxVolume;
+        gint scaledVolume = (aVolume * maxVolume) / KDefaultMaxVolume;
+        iDevSound->SetVolume(scaledVolume);
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// Gives volume
+// -----------------------------------------------------------------------------
+//
+gint TMSCSDownlink::Volume()
+    {
+    gint vol = 0;
+    if (iDevSound)
+        {
+        vol = iDevSound->Volume();
+        }
+    return vol;
+    }
+
+// -----------------------------------------------------------------------------
+// Gives max volume
+// -----------------------------------------------------------------------------
+//
+gint TMSCSDownlink::MaxVolume()
+    {
+    gint vol = 0;
+    if (iDevSound)
+        {
+        vol = iDevSound->MaxVolume();
+        }
+    return vol;
+    }
+
+// -----------------------------------------------------------------------------
+// From class MDevSoundObserver
+// Downlink stream has been activated successfully.
+// -----------------------------------------------------------------------------
+//
+void TMSCSDownlink::BufferToBeFilled(CMMFBuffer* /*aBuffer*/)
+    {
+    //CSPLOGSTRING( CSPINT, "TMSCSDownlink:: activated" );
+    // We dont react to devsound messages unless we are activating.
+    if (IsActivationOngoing())
+        {
+        iActive = ETrue;
+        iActivationOngoing = EFalse;
+        iObserver.DownlinkActivatedSuccessfully();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// From class MDevSoundObserver
+// Downlink stream activation failed
+// -----------------------------------------------------------------------------
+//
+void TMSCSDownlink::PlayError(TInt aError)
+    {
+    //CSPLOGSTRING( CSPINT, "TMSCSDownlink::PlayError" );
+
+    // We dont react to devsound messages unless we are activating.
+    if (IsActivationOngoing())
+        {
+        //CSPLOGSTRING( CSPINT, "TMSCSDownlink::PlayError activation failed" );
+        if (aError == KErrAccessDenied)
+            {
+            iActivationOngoing = EFalse;
+            iObserver.DownlinkActivationFailed();
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// From class CSPDevsound
+// Tries to activate Downlink stream.
+// -----------------------------------------------------------------------------
+//
+void TMSCSDownlink::DoActivateL()
+    {
+    if (iDevSound)
+        {
+        iDevSound->PlayInitL();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// Constructor
+// -----------------------------------------------------------------------------
+//
+TMSCSDownlink::TMSCSDownlink(TMSCSPDevSoundObserver& aObserver) :
+    TMSCSPDevSound(aObserver)
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// Second phase constructor
+// -----------------------------------------------------------------------------
+//
+void TMSCSDownlink::ConstructL()
+    {
+    TMSCSPDevSound::ConstructL(EMMFStatePlaying, KAudioPrefCSCallDownlink,
+            KAudioPriorityCSCallDownlink);
+
+    if (iDevSound)
+        {
+        iDevSound->SetVolume(KDefaultVolume);
+        }
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/src/tmscsuplink.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,204 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#include <AudioPreference.h>
+#include "tmscsuplink.h"
+#include "tmscsdevsoundobserver.h"
+
+using namespace TMS;
+
+// Mute value
+const gint KSetMuteToDevSound = 0;
+
+// -----------------------------------------------------------------------------
+// Static constructor.
+// -----------------------------------------------------------------------------
+//
+TMSCSUplink* TMSCSUplink::NewL(TMSCSPDevSoundObserver& aObserver)
+    {
+    TMSCSUplink* self = new (ELeave) TMSCSUplink(aObserver);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// Destructor
+// -----------------------------------------------------------------------------
+//
+TMSCSUplink::~TMSCSUplink()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// Gives mic mute state
+// -----------------------------------------------------------------------------
+//
+TBool TMSCSUplink::IsMuted()
+    {
+    TBool isMuted = EFalse;
+    gint gain = 0;
+    if (iDevSound)
+        {
+        gain = iDevSound->Gain();
+        }
+    if (!gain)
+        {
+        // Mute is on
+        isMuted = ETrue;
+        }
+    //   CSPLOGSTRING( CSPINT, "TMSCSUplink::IsMuted" );
+    return isMuted;
+    }
+
+// -----------------------------------------------------------------------------
+// Set mic muted.
+// -----------------------------------------------------------------------------
+//
+void TMSCSUplink::SetMuted()
+    {
+    if (iDevSound)
+        {
+        iDevSound->SetGain(KSetMuteToDevSound);
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// Set mic unmuted
+// -----------------------------------------------------------------------------
+//
+void TMSCSUplink::SetUnmuted()
+    {
+    if (iDevSound)
+        {
+        iDevSound->SetGain(iDevSound->MaxGain());
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// Sets gain
+// -----------------------------------------------------------------------------
+//
+void TMSCSUplink::SetGain(gint aGain)
+    {
+    if (iDevSound)
+        {
+        iDevSound->SetGain(aGain);
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// Gives volume
+// -----------------------------------------------------------------------------
+//
+gint TMSCSUplink::Gain()
+    {
+    gint gain = 0;
+    if (iDevSound)
+        {
+        gain = iDevSound->Gain();
+        }
+    return gain;
+    }
+
+// -----------------------------------------------------------------------------
+// Gives max gain
+// -----------------------------------------------------------------------------
+//
+gint TMSCSUplink::MaxGain()
+    {
+    gint gain = 0;
+    if (iDevSound)
+        {
+        gain = iDevSound->MaxGain();
+        }
+    return gain;
+    }
+
+// -----------------------------------------------------------------------------
+// From class MDevSoundObserver
+// Activation was successfull.
+// -----------------------------------------------------------------------------
+//
+void TMSCSUplink::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
+    {
+    //  CSPLOGSTRING( CSPINT, "TMSCSUplink::BufferToBeEmptied" );
+
+    // We dont react to devsound messages unless we are activating.
+    if (IsActivationOngoing())
+        {
+        iActive = ETrue;
+        iActivationOngoing = EFalse;
+        iObserver.UplinkActivatedSuccessfully();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// From class MDevSoundObserver
+// Activation feiled
+// -----------------------------------------------------------------------------
+//
+void TMSCSUplink::RecordError(TInt aError)
+    {
+    //  CSPLOGSTRING( CSPINT, "TMSCSUplink::RecordError" );
+
+    // We dont react to devsound messages unless we are activating.
+    if (IsActivationOngoing())
+        {
+        if (aError == KErrAccessDenied)
+            {
+            iActivationOngoing = EFalse;
+            iObserver.UplinkActivationFailed();
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// From class TMSCSPDevSound
+// Tries to activate mic stream. Stream becomes active when BufferToBeFilled
+// gets called.
+// -----------------------------------------------------------------------------
+//
+void TMSCSUplink::DoActivateL()
+    {
+    if (iDevSound)
+        {
+        iDevSound->RecordInitL();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// Constructor
+// -----------------------------------------------------------------------------
+//
+TMSCSUplink::TMSCSUplink(TMSCSPDevSoundObserver& aObserver) :
+    TMSCSPDevSound(aObserver)
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// Second phase constructor
+// -----------------------------------------------------------------------------
+//
+void TMSCSUplink::ConstructL()
+    {
+    TMSCSPDevSound::ConstructL(EMMFStateRecording, KAudioPrefCSCallUplink,
+            KAudioPriorityCSCallUplink);
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/src/tmsdelaytimer.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+// INCLUDE FILES
+#include "tmsdelaytimer.h"
+#include "tmsutility.h"
+
+using namespace TMS;
+
+// -----------------------------------------------------------------------------
+// TMSCallDelayTimer::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+TMSCallDelayTimer* TMSCallDelayTimer::NewL()
+    {
+    TRACE_PRN_FN_ENT;
+    TMSCallDelayTimer* self = new (ELeave) TMSCallDelayTimer;
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    TRACE_PRN_FN_EXT;
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallDelayTimer::TMSCallDelayTimer()
+// C++ constructor.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TMSCallDelayTimer::TMSCallDelayTimer() :
+    CActive(CActive::EPriorityStandard)
+    {
+    TRACE_PRN_FN_ENT;
+    CActiveScheduler::Add(this);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallDelayTimer::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void TMSCallDelayTimer::ConstructL()
+    {
+    TRACE_PRN_FN_ENT;
+    User::LeaveIfError(iShutDownTimer.CreateLocal());
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallDelayTimer::~TMSCallDelayTimer
+// Destructor
+// -----------------------------------------------------------------------------
+//
+TMSCallDelayTimer::~TMSCallDelayTimer()
+    {
+    TRACE_PRN_FN_ENT;
+    Cancel();
+    iShutDownTimer.Close();
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallDelayTimer::SetDelay
+// Request a timeout after aDelay
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void TMSCallDelayTimer::SetDelay(TTimeIntervalMicroSeconds32 aDelay)
+    {
+    TRACE_PRN_FN_ENT;
+    if (!IsActive())
+        {
+        iStatus = KRequestPending;
+        SetActive();
+        iShutDownTimer.After(iStatus, aDelay);
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallDelayTimer::RunL
+// Called by Active object framework when timer times out.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void TMSCallDelayTimer::RunL()
+    {
+    TRACE_PRN_FN_ENT;
+    CActiveScheduler::Stop();
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallDelayTimer::DoCancel
+// Called by the Active object framework when user cancels active object.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void TMSCallDelayTimer::DoCancel()
+    {
+    TRACE_PRN_FN_ENT;
+    iShutDownTimer.Cancel();
+    TRACE_PRN_FN_EXT;
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/src/tmsdtmfnotifier.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+// INCLUDE FILES
+#include "tmsdtmfnotifier.h"
+#include "tmsclientserver.h"
+#include "tmsutility.h"
+
+using namespace TMS;
+
+// CONSTANTS
+_LIT_SECURITY_POLICY_PASS(KTMSServerReadPolicy);
+_LIT_SECURITY_POLICY_C1(KTMSServerWritePolicy, ECapabilityWriteUserData);
+
+// -----------------------------------------------------------------------------
+// TMSDtmfNotifier::TMSDtmfNotifier
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+TMSDtmfNotifier::TMSDtmfNotifier()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// TMSDtmfNotifier::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void TMSDtmfNotifier::ConstructL()
+    {
+    TRACE_PRN_FN_ENT;
+    TInt err = RProperty::Define(EDtmfPs, RProperty::EByteArray,
+            KTMSServerReadPolicy, KTMSServerWritePolicy);
+    TRACE_PRN_N1(_L("DtmfSetting::ConstructL err:%d"),err);
+
+    if (err != KErrAlreadyExists)
+        {
+        User::LeaveIfError(err);
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSDtmfNotifier::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+TMSDtmfNotifier* TMSDtmfNotifier::NewL()
+    {
+    TMSDtmfNotifier* self = new (ELeave) TMSDtmfNotifier();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// Destructor
+TMSDtmfNotifier::~TMSDtmfNotifier()
+    {
+    TRACE_PRN_FN_ENT;
+    TInt err = RProperty::Delete(KTMSPropertyCategory, EDtmfPs);
+    TRACE_PRN_N1(_L("DtmfSetting::~TMSDtmfNotifier err:%d"),err);
+    TRACE_PRN_FN_ENT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSDtmfNotifier::SetVolume
+// -----------------------------------------------------------------------------
+//
+void TMSDtmfNotifier::SetDtmf(TmsMsgBufPckg dtmfpckg, TBool aPublish)
+    {
+    TRACE_PRN_FN_ENT;
+    //TInt err(KErrNone);
+    if (aPublish)
+        {
+        /*err =*/RProperty::Set(KTMSPropertyCategory, EDtmfPs, dtmfpckg);
+        }
+
+    //TRACE_PRN_N1(_L("DtmfSetting::SetDtmf err:%d"),err);
+    TRACE_PRN_FN_EXT;
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/src/tmsdtmfprovider.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,311 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#include <etelmm.h>
+#include <rmmcustomapi.h>
+#include "tmsdtmfprovider.h"
+#include "tmsdtmfobserver.h"
+#include "tmsutility.h"
+#include "tmseteldtmfmonitor.h"
+#include "tmseteldtmfstopmonitor.h"
+
+using namespace TMS;
+
+TMSDTMFProvider* TMSDTMFProvider::NewL()
+    {
+    TRACE_PRN_FN_ENT;
+    TMSDTMFProvider* self = new (ELeave) TMSDTMFProvider();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    TRACE_PRN_FN_EXT;
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// Destructor of the object.
+// -----------------------------------------------------------------------------
+//
+TMSDTMFProvider::~TMSDTMFProvider()
+    {
+    TRACE_PRN_FN_ENT;
+    Cancel();
+    iObservers.Close();
+    delete iMonitor;
+    delete iStopMonitor;
+
+    iMmCustom.Close();
+    iPhone.Close();
+    iServer.UnloadPhoneModule(iTsyname);
+    iServer.Close();
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// Notifies observers about a DTMF event
+// -----------------------------------------------------------------------------
+//
+void TMSDTMFProvider::NotifyDTMFEvent(
+        const TMSDTMFObserver::TCCPDtmfEvent aEvent, const gint aError,
+        const TChar aTone)
+    {
+    TRACE_PRN_FN_ENT;
+    for (gint i = 0; i < iObservers.Count(); i++)
+        {
+        TMSDTMFObserver* obs = iObservers[i];
+        if (obs)
+            {
+            iObservers[i]->HandleDTMFEvent(aEvent, aError, aTone);
+            }
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// Cancel DTMF string sending
+// -----------------------------------------------------------------------------
+//
+TInt TMSDTMFProvider::CancelDtmfStringSending()
+    {
+    TRACE_PRN_FN_ENT;
+    gint ret(KErrAlreadyExists);
+    if (IsActive())
+        {
+        Cancel();
+        ret = KErrNone;
+        }
+    TRACE_PRN_FN_EXT;
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// Starts DTMF string sending
+// -----------------------------------------------------------------------------
+//
+TInt TMSDTMFProvider::StartDtmfTone(const TChar aTone)
+    {
+    TRACE_PRN_FN_ENT;
+    gint ret(KErrAlreadyExists);
+    if (!IsActive())
+        {
+        ret = iPhone.StartDTMFTone(aTone);
+        }
+    TRACE_PRN_FN_EXT;
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// Stop DTMF tone
+// -----------------------------------------------------------------------------
+//
+TInt TMSDTMFProvider::StopDtmfTone()
+    {
+    TRACE_PRN_FN_ENT;
+    gint ret(KErrAlreadyExists);
+    if (!IsActive())
+        {
+        ret = iPhone.StopDTMFTone();
+        }
+    TRACE_PRN_FN_EXT;
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// Send DTMF string
+// -----------------------------------------------------------------------------
+//
+TInt TMSDTMFProvider::SendDtmfToneString(const TDesC& aString)
+    {
+    TRACE_PRN_FN_ENT;
+    gint ret = KErrInUse;
+    if (!IsActive())
+        {
+        iStatus = KRequestPending;
+        iPhone.SendDTMFTones(iStatus, aString);
+        SetActive();
+        ret = KErrNone;
+        }
+    TRACE_PRN_FN_EXT;
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// Continue DTMF string sending
+// -----------------------------------------------------------------------------
+//
+TInt TMSDTMFProvider::ContinueDtmfStringSending(const TBool aContinue)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status = iPhone.ContinueDTMFStringSending(aContinue);
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// Adds observer.
+// -----------------------------------------------------------------------------
+//
+void TMSDTMFProvider::AddObserverL(const TMSDTMFObserver& aObserver)
+    {
+    TRACE_PRN_FN_ENT;
+    if (iObservers.Find(&aObserver) == KErrNotFound)
+        {
+        iObservers.Append(&aObserver);
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// Removes given observer.
+// -----------------------------------------------------------------------------
+//
+TInt TMSDTMFProvider::RemoveObserver(const TMSDTMFObserver& aObserver)
+    {
+    TRACE_PRN_FN_ENT;
+    gint ret = KErrNotFound;
+    gint found = iObservers.Find(&aObserver);
+    if (found != KErrNotFound)
+        {
+        iObservers.Remove(found);
+        ret = KErrNone;
+        }
+    TRACE_PRN_FN_EXT;
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// From CActive.
+// Handles request completion.
+// -----------------------------------------------------------------------------
+//
+void TMSDTMFProvider::RunL()
+    {
+    TRACE_PRN_FN_ENT;
+    if (iStatus == KErrNone)
+        {
+        TMSDTMFObserver::TCCPDtmfEvent event =
+                TMSDTMFObserver::ECCPDtmfStringSendingCompleted;
+        NotifyDTMFEvent(event, KErrNone, NULL);
+        }
+    else
+        {
+        gint error = iStatus.Int();
+        if (error != KErrCancel)
+            {
+            TMSDTMFObserver::TCCPDtmfEvent event =
+                    TMSDTMFObserver::ECCPDtmfStringSendingCompleted;
+            NotifyDTMFEvent(event, error, NULL);
+            }
+        else
+            {
+            // Cancel is not notified
+            }
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// From CActive
+// Canceling functionality.
+// -----------------------------------------------------------------------------
+//
+void TMSDTMFProvider::DoCancel()
+    {
+    TRACE_PRN_FN_ENT;
+    if (iStatus == KRequestPending)
+        {
+        iPhone.CancelAsyncRequest(EMobilePhoneSendDTMFTones);
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// Constructs the requester.
+// -----------------------------------------------------------------------------
+//
+TMSDTMFProvider::TMSDTMFProvider() :
+    CActive(EPriorityStandard)
+    {
+    TRACE_PRN_FN_ENT;
+    CActiveScheduler::Add(this);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// Constructs the requester in the second phase.
+// -----------------------------------------------------------------------------
+//
+void TMSDTMFProvider::ConstructL()
+    {
+    TRACE_PRN_FN_ENT;
+
+    CleanupClosePushL(iServer);
+    User::LeaveIfError(iServer.Connect());
+
+    TRACE_PRN_N(_L("**TMS ETel iServer.Connect"));
+
+    iServer.GetTsyName(0, iTsyname);
+
+    //Load in the phone device driver
+    User::LeaveIfError(iServer.LoadPhoneModule(iTsyname));
+
+    TRACE_PRN_N(_L("**TMS ETel iServer.LoadPhoneModule"));
+
+    //Find the number of phones available from the tel server
+    gint numberPhones;
+    User::LeaveIfError(iServer.EnumeratePhones(numberPhones));
+
+    TRACE_PRN_N(_L("**TMS ETel iServer.EnumeratePhones"));
+
+    //Check there are available phones
+    if (numberPhones < 1)
+        {
+        User::Leave(KErrNotFound);
+        }
+
+    //Get info about the first available phone
+    RTelServer::TPhoneInfo info;
+    User::LeaveIfError(iServer.GetPhoneInfo(0, info));
+
+    TRACE_PRN_N(_L("**TMS ETel iServer.GetPhoneInfo"));
+
+    CleanupClosePushL(iPhone);
+    User::LeaveIfError(iPhone.Open(iServer, info.iName));
+
+    TRACE_PRN_N(_L("**TMS ETel iPhone.Open"));
+
+    RMobilePhone::TLineInfo lineInfo;
+    User::LeaveIfError(iPhone.GetLineInfo(0, lineInfo));
+
+    TRACE_PRN_N(_L("**TMS ETel iPhone.GetLineInfo"));
+
+    gint errorCode = iMmCustom.Open(iPhone);
+
+    if (!iPhone.SubSessionHandle() || !iMmCustom.SubSessionHandle())
+        {
+        User::Leave(KErrArgument);
+        }
+    iMonitor = TMSEtelDtmfMonitor::NewL(*this, iMmCustom);
+    iMonitor->StartMonitoring();
+    iStopMonitor = TMSEtelDtmfStopMonitor::NewL(*this, iPhone);
+    // iStopMonitor->StartMonitoring();
+
+    CleanupStack::Pop(2);//telserver,phone
+    TRACE_PRN_FN_EXT;
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/src/tmsdtmftoneplayer.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,281 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+// INCLUDE FILES
+#include <mdaaudiotoneplayer.h>
+#include <AudioPreference.h>
+#include "tmsutility.h"
+#include "tmsdtmftoneplayer.h"
+
+// CONSTANTS
+const gint KBufSize = 10;
+const gint KMaxVolumeLevel = 10;
+
+_LIT(KPhoneTone_Asterisk, "*+w");
+
+//from voip
+const guint KDTMFToneLengthOn = 250000;
+const guint KDTMFToneLengthOff = 50000;
+const guint KDTMFToneLengthPause = 2500000;
+
+using namespace TMS;
+
+// -----------------------------------------------------------------------------
+// TMSAudioDtmfTonePlayer::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+TMSAudioDtmfTonePlayer* TMSAudioDtmfTonePlayer::NewL(
+        TMSDTMFTonePlayerObserver& obsrvr, guint aAudioPreference,
+        guint aAudioPriority)
+    {
+    //iObserver = obsrvr;
+    TMSAudioDtmfTonePlayer* self = new (ELeave) TMSAudioDtmfTonePlayer(
+            obsrvr, aAudioPreference, aAudioPriority);
+
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+//Destructor
+TMSAudioDtmfTonePlayer::~TMSAudioDtmfTonePlayer()
+    {
+    TRACE_PRN_FN_ENT;
+    Cancel();
+    delete iDTMFPlayer;
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSAudioDtmfTonePlayer::TMSAudioDtmfTonePlayer
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+TMSAudioDtmfTonePlayer::TMSAudioDtmfTonePlayer(
+        TMSDTMFTonePlayerObserver& obsrvr, guint aAudioPreference,
+        guint aAudioPriority) :
+    iObserver(obsrvr),
+    iPref(aAudioPreference),
+    iPrior(aAudioPriority)
+    {
+    TRACE_PRN_FN_ENT;
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSAudioDtmfTonePlayer::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void TMSAudioDtmfTonePlayer::ConstructL()
+    {
+    TRACE_PRN_FN_ENT;
+
+    TMMFPrioritySettings dtmfClickPlayerPrioritySettings;
+    iDTMFPlayer = CMMFDevSound::NewL();
+    iDTMFPlayer->InitializeL(*this, EMMFStateTonePlaying);
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSAudioDtmfTonePlayer::SetVolume
+// Sets the volume level that is used when the dtmf tone is played.
+// -----------------------------------------------------------------------------
+//
+void TMSAudioDtmfTonePlayer::SetVolume(gint aVolume)
+    {
+    TRACE_PRN_FN_ENT;
+    gint vol = ConvertVolume(aVolume);
+
+    if (vol != iVolume)
+        {
+        iVolume = vol;
+        iDTMFPlayer->SetVolume(iVolume);
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSAudioDtmfTonePlayer::PlayDtmfTone
+// Searches the given DTMF tone from iToneArray and calls PlayCurrentTone
+// member function.
+// -----------------------------------------------------------------------------
+//
+void TMSAudioDtmfTonePlayer::PlayDtmfTone(TDes& aTone)
+    {
+    TRACE_PRN_FN_ENT;
+    Cancel();
+
+    // DTMF signalling.
+    if (iDTMFPlayer)
+        {
+        TBuf<KBufSize> key;
+        key.Append(aTone);
+        TRAP_IGNORE(iDTMFPlayer->PlayDTMFStringL(aTone));
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSAudioDtmfTonePlayer::Cancel
+// Cancels the currently playing tone.
+// -----------------------------------------------------------------------------
+//
+void TMSAudioDtmfTonePlayer::Cancel()
+    {
+    TRACE_PRN_FN_ENT;
+    iDTMFPlayer->Stop();
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSAudioDtmfTonePlayer::Normalize
+// Lowers case for chars and if its '*','+', or 'w' sets it to asterisk
+// char ('*').
+// -----------------------------------------------------------------------------
+//
+void TMSAudioDtmfTonePlayer::Normalize(TChar& aTone)
+    {
+    TRACE_PRN_FN_ENT;
+    aTone.LowerCase();
+
+    TPtrC ast(KPhoneTone_Asterisk);
+
+    if (ast.Locate(aTone) != KErrNotFound)
+        {
+        aTone = ast[0];
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSAudioDtmfTonePlayer::InitializeComplete
+// -----------------------------------------------------------------------------
+//
+void TMSAudioDtmfTonePlayer::InitializeComplete(TInt aError)
+    {
+    TRACE_PRN_FN_ENT;
+
+    if (aError == KErrNone)
+        {
+        TMMFPrioritySettings dtmfPlayerSettings;
+        dtmfPlayerSettings.iPref = (TMdaPriorityPreference) iPref;
+        dtmfPlayerSettings.iPriority = iPrior;
+        dtmfPlayerSettings.iState = EMMFStateTonePlaying;
+        iDTMFPlayer->SetPrioritySettings(dtmfPlayerSettings);
+
+        TTimeIntervalMicroSeconds32 length(KDTMFToneLengthOn);
+        TTimeIntervalMicroSeconds32 pause(KDTMFToneLengthOff);
+        TTimeIntervalMicroSeconds32 zero(KDTMFToneLengthPause);
+        iDTMFPlayer->SetDTMFLengths(length, pause, zero);
+        iDTMFPlayer->SetVolume(iDTMFPlayer->MaxVolume());
+        }
+
+    iObserver.DTMFInitCompleted(aError);
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSAudioDtmfTonePlayer::ToneFinished
+// -----------------------------------------------------------------------------
+//
+void TMSAudioDtmfTonePlayer::ToneFinished(TInt aError)
+    {
+    TRACE_PRN_FN_ENT;
+    iObserver.DTMFToneFinished(aError);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSAudioDtmfTonePlayer::BufferToBeFilled
+// -----------------------------------------------------------------------------
+//
+void TMSAudioDtmfTonePlayer::BufferToBeFilled(CMMFBuffer* /*aBuffer*/)
+    {
+    TRACE_PRN_FN_ENT;
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSAudioDtmfTonePlayer::PlayError
+// -----------------------------------------------------------------------------
+//
+void TMSAudioDtmfTonePlayer::PlayError(TInt /*aError*/)
+    {
+    TRACE_PRN_FN_ENT;
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSAudioDtmfTonePlayer::BufferToBeEmptied
+// -----------------------------------------------------------------------------
+//
+void TMSAudioDtmfTonePlayer::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
+    {
+    TRACE_PRN_FN_ENT;
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSAudioDtmfTonePlayer::RecordError
+// -----------------------------------------------------------------------------
+//
+void TMSAudioDtmfTonePlayer::RecordError(TInt /*aError*/)
+    {
+    TRACE_PRN_FN_ENT;
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSAudioDtmfTonePlayer::ConvertError
+// -----------------------------------------------------------------------------
+//
+void TMSAudioDtmfTonePlayer::ConvertError(TInt /*aError*/)
+    {
+    TRACE_PRN_FN_ENT;
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSAudioDtmfTonePlayer::DeviceMessage
+// -----------------------------------------------------------------------------
+//
+void TMSAudioDtmfTonePlayer::DeviceMessage(TUid /*aMessageType*/,
+        const TDesC8& /*aMsg*/)
+    {
+    TRACE_PRN_FN_ENT;
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSAudioDtmfTonePlayer::ConvertVolume
+// -----------------------------------------------------------------------------
+//
+gint TMSAudioDtmfTonePlayer::ConvertVolume(gint aVolume)
+    {
+    TRACE_PRN_FN_ENT;
+    gint result = iDTMFPlayer->MaxVolume() * aVolume / KMaxVolumeLevel;
+    TRACE_PRN_FN_EXT;
+    return result;
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/src/tmseteldtmfmonitor.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,168 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#include <rmmcustomapi.h>
+#include <gsmerror.h>
+#include "tmsdtmfprovider.h"
+#include "tmsdtmfobserver.h"
+#include "tmseteldtmfmonitor.h"
+#include "tmsutility.h"
+
+using namespace TMS;
+
+// -----------------------------------------------------------------------------
+// TMSEtelDtmfMonitor::NewL.
+// -----------------------------------------------------------------------------
+//
+TMSEtelDtmfMonitor* TMSEtelDtmfMonitor::NewL(TMSDTMFProvider& aObserver,
+        RMmCustomAPI& aMmCustom)
+    {
+    TRACE_PRN_FN_ENT;
+    TMSEtelDtmfMonitor* self = new (ELeave) TMSEtelDtmfMonitor(aObserver,
+            aMmCustom);
+    TRACE_PRN_FN_EXT;
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// Destructs the object by canceling first ongoing monitoring.
+// -----------------------------------------------------------------------------
+//
+TMSEtelDtmfMonitor::~TMSEtelDtmfMonitor()
+    {
+    TRACE_PRN_FN_ENT;
+    Cancel();
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// Starts the monitor.
+// -----------------------------------------------------------------------------
+//
+void TMSEtelDtmfMonitor::StartMonitoring()
+    {
+    TRACE_PRN_FN_ENT;
+    if (!IsActive())
+        {
+        iStatus = KRequestPending;
+        iMmCustom.NotifyDtmfEvent(iStatus, iEventData);
+        SetActive();
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// From CActive.
+// Handles line status change notifying.
+// -----------------------------------------------------------------------------
+//
+void TMSEtelDtmfMonitor::RunL()
+    {
+    TRACE_PRN_FN_ENT;
+    TInt err = iStatus.Int();
+    TRACE_PRN_N1(_L("**TMS TMSEtelDtmfMonitor::RunL: status:%d"), err);
+
+    if (err == KErrNone)
+        {
+        TMSDTMFObserver::TCCPDtmfEvent event;
+        if (iEventData.iEvent == RMmCustomAPI::EDtmfStart
+                && iEventData.iType == RMmCustomAPI::EDtmfManual)
+            {
+            event = TMSDTMFObserver::ECCPDtmfManualStart;
+            }
+        else if (iEventData.iEvent == RMmCustomAPI::EDtmfStart
+                && iEventData.iType == RMmCustomAPI::EDtmfSequence)
+            {
+            event = TMSDTMFObserver::ECCPDtmfSequenceStart;
+            }
+        else if (iEventData.iEvent == RMmCustomAPI::EDtmfStop
+                && iEventData.iType == RMmCustomAPI::EDtmfManual)
+            {
+            event = TMSDTMFObserver::ECCPDtmfManualStop;
+            }
+        else if (iEventData.iEvent == RMmCustomAPI::EDtmfStop
+                && iEventData.iType == RMmCustomAPI::EDtmfSequence)
+            {
+            event = TMSDTMFObserver::ECCPDtmfSequenceStop;
+            }
+        else if (iEventData.iEvent == RMmCustomAPI::EDtmfAbort
+                && iEventData.iType == RMmCustomAPI::EDtmfManual)
+            {
+            event = TMSDTMFObserver::ECCPDtmfManualAbort;
+            }
+        else if (iEventData.iEvent == RMmCustomAPI::EDtmfAbort
+                && iEventData.iType == RMmCustomAPI::EDtmfSequence)
+            {
+            event = TMSDTMFObserver::ECCPDtmfSequenceAbort;
+            }
+        else
+            {
+            // Refresh and return (no observer notfiying).
+            TRACE_PRN_N2(_L("**TMS TMSEtelDtmfMonitor::RunL: Unknown event \
+                    = %¨d, type = %d"), iEventData.iEvent,iEventData.iType);
+            StartMonitoring();
+            return;
+            }
+
+        iObserver.NotifyDTMFEvent(event, err, iEventData.iTone);
+        }
+    else
+        {
+        TRACE_PRN_N1(_L("**TMS TMSEtelDtmfMonitor::RunL: Error \
+                from DTMF: %d"),err);
+        }
+
+    // Continue if not in offline mode
+    if (err != KErrGsmOfflineOpNotAllowed && err != KErrCancel
+            && err != KErrNotSupported)
+        {
+        StartMonitoring();
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// From CActive
+// Canceling functionality.
+// -----------------------------------------------------------------------------
+//
+void TMSEtelDtmfMonitor::DoCancel()
+    {
+    TRACE_PRN_FN_ENT;
+    if (iStatus == KRequestPending)
+        {
+        iMmCustom.CancelAsyncRequest(ECustomNotifyDtmfEventIPC);
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// Constructs the monitor.
+// -----------------------------------------------------------------------------
+//
+TMSEtelDtmfMonitor::TMSEtelDtmfMonitor(TMSDTMFProvider& aObserver,
+        RMmCustomAPI& aMmCustom) :
+    CActive(EPriorityStandard),
+    iObserver(aObserver),
+    iMmCustom(aMmCustom)
+    {
+    TRACE_PRN_FN_ENT;
+    CActiveScheduler::Add(this);
+    TRACE_PRN_FN_EXT;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/src/tmseteldtmfstopmonitor.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#include <gsmerror.h>
+#include "tmsutility.h"
+#include "tmsdtmfobserver.h"
+#include "tmsdtmfprovider.h"
+#include "tmseteldtmfstopmonitor.h"
+
+using namespace TMS;
+
+// -----------------------------------------------------------------------------
+// TMSEtelDtmfStopMonitor::NewL.
+// -----------------------------------------------------------------------------
+//
+TMSEtelDtmfStopMonitor* TMSEtelDtmfStopMonitor::NewL(TMSDTMFProvider& aObserver,
+        RMobilePhone& aPhone)
+    {
+    TRACE_PRN_FN_EXT;
+    TMSEtelDtmfStopMonitor* self = new (ELeave) TMSEtelDtmfStopMonitor(
+            aObserver, aPhone);
+    TRACE_PRN_FN_EXT;
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// Constructs the monitor.
+// -----------------------------------------------------------------------------
+//
+TMSEtelDtmfStopMonitor::TMSEtelDtmfStopMonitor(TMSDTMFProvider& aObserver,
+        RMobilePhone& aPhone) :
+    CActive(EPriorityStandard),
+    iObserver(aObserver),
+    iPhone(aPhone)
+    {
+    TRACE_PRN_FN_ENT;
+    CActiveScheduler::Add(this);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// Destructs the object by canceling first ongoing monitoring.
+// -----------------------------------------------------------------------------
+//
+TMSEtelDtmfStopMonitor::~TMSEtelDtmfStopMonitor()
+    {
+    TRACE_PRN_FN_ENT;
+    Cancel();
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// Starts the monitor.
+// -----------------------------------------------------------------------------
+//
+void TMSEtelDtmfStopMonitor::StartMonitoring()
+    {
+    TRACE_PRN_FN_ENT;
+    if (!IsActive())
+        {
+        iStatus = KRequestPending;
+        iPhone.NotifyStopInDTMFString(iStatus);
+        SetActive();
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// From CActive.
+// Handles line status change notifying.
+// -----------------------------------------------------------------------------
+//
+void TMSEtelDtmfStopMonitor::RunL()
+    {
+    TRACE_PRN_FN_ENT;
+    gint err = iStatus.Int();
+    TRACE_PRN_N1(_L("**TMS TMSEtelDtmfStopMonitor::RunL: status: %d"), err);
+
+    if (err != KErrCancel && err != KErrServerTerminated)
+        {
+        TChar tone = NULL;
+        TMSDTMFObserver::TCCPDtmfEvent event =
+                TMSDTMFObserver::ECCPDtmfStopInDtmfString;
+        iObserver.NotifyDTMFEvent(event, err, tone);
+        }
+    else
+        {
+        TRACE_PRN_N1(_L("**TMS TMSEtelDtmfStopMonitor::RunL: Error \
+                       from RMobilePhone: %d"),iStatus.Int());
+        }
+
+    // Continue if not in offline mode
+    if (err != KErrGsmOfflineOpNotAllowed && err != KErrCancel
+            && err != KErrNotSupported)
+        {
+        StartMonitoring();
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// From CActive
+// Canceling functionality.
+// -----------------------------------------------------------------------------
+//
+void TMSEtelDtmfStopMonitor::DoCancel()
+    {
+    TRACE_PRN_FN_ENT;
+    if (iStatus == KRequestPending)
+        {
+        iPhone.CancelAsyncRequest(EMobilePhoneNotifyStopInDTMFString);
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/src/tmsipcalldownlink.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,911 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#include <audiopreference.h>
+#include <audiooutput.h>
+#include <mmcccodecinformation.h>
+#include <gstappsrc.h>
+#include "tmsutility.h"
+#include "gsterrorconcealmentinterface.h"
+#include "gstg711decoderinterface.h"
+#include "gstilbcdecoderinterface.h"
+#include "gstg729decoderinterface.h"
+#include "ipcallstream.h"
+
+using namespace TMS;
+
+static TMSIPDownlink* iSelfDn;
+#ifdef _DEBUG
+static TInt iHeap;
+#endif //_DEBUG
+GstBuffer* gstDnlBuffer;
+GstCaps* caps;
+gint requestBufLen;
+
+#ifdef __PLAY_WAV_FROM_FILE__
+_LIT16(KTestFile1, "c:\\data\\sounds\\digital\\sample1.wav");
+#endif
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::cb_raw_playback_handoff
+// -----------------------------------------------------------------------------
+//
+void TMSIPDownlink::cb_raw_playback_handoff(GstElement* /*appsrc*/,
+        guint size)
+    {
+    TRACE_PRN_N(_L("TMS->DNL: cb_raw_playback_handoff"));
+
+    requestBufLen = size;
+
+#ifdef _DEBUG
+    TInt block;
+    RHeap &heap = User::Heap();
+    TInt avail = heap.Available(block);
+    RDebug::Print(_L("TMS->PRINT-HEAP-DN:Size[%d], Available[%d], delta[%d]"),
+    heap.Size(), avail, (iHeap - avail));
+    iHeap = avail;
+#endif //_DEBUG
+    iSelfDn->BufferToBeFilled();
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::bus_call
+// -----------------------------------------------------------------------------
+//
+gboolean TMSIPDownlink::bus_call(GstBus* /*bus*/, GstMessage* msg,
+        gpointer /*data*/)
+    {
+    switch (GST_MESSAGE_TYPE(msg))
+        {
+        case GST_MESSAGE_EOS:
+            {
+            gst_element_set_state(iSelfDn->iPipelinePlay, GST_STATE_NULL);
+            gst_object_unref(GST_OBJECT(iSelfDn->iPipelinePlay));
+            break;
+            }
+        case GST_MESSAGE_ERROR:
+            {
+            gchar* debug;
+            GError* err;
+            gst_message_parse_error(msg, &err, &debug);
+            g_free(debug);
+            g_print("Error: %s\n", err->message);
+            g_error_free(err);
+            break;
+            }
+        default:
+            {
+            break;
+            }
+        }
+
+    return ETrue;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::gst_initialize_play
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::gst_initialize_play()
+    {
+    TRACE_PRN_FN_ENT;
+
+    gint err = KErrNone;
+
+    // create elements
+    iPipelinePlay = gst_pipeline_new("pipelinePlay");
+    iAppSrc = gst_element_factory_make("appsrc", "source");
+    iSink = gst_element_factory_make("devsoundsink", "sink");
+
+    if (!iAppSrc || !iSink)
+        {
+        err = KErrNotFound;
+        TRACE_PRN_IF_ERR(err);
+        return err;
+        }
+
+    iBusPlay = gst_pipeline_get_bus(GST_PIPELINE(iPipelinePlay));
+    gst_bus_add_watch(iBusPlay, TMSIPDownlink::bus_call, NULL);
+    gst_object_unref(iBusPlay);
+
+    iMaxBufLen = ConfigureMedia(iCodecID);
+
+    g_object_set(iAppSrc, "stream-type", 0, "blocksize", iMaxBufLen, NULL);
+    gst_bin_add_many(GST_BIN(iPipelinePlay), iAppSrc, iSink, NULL);
+    gst_element_link(iAppSrc, iSink);
+
+    caps = gst_caps_new_simple(iMediaType,
+                               "width", G_TYPE_INT, 16,
+                               "depth", G_TYPE_INT, 16,
+                               "signed", G_TYPE_BOOLEAN, TRUE,
+                               "endianness", G_TYPE_INT, G_BYTE_ORDER,
+                               "rate", G_TYPE_INT, 8000,
+                               "channels", G_TYPE_INT, 1,
+                               NULL);
+
+    //NOTE: d/s is not ready at this time to return true maxvolume
+    TInt maxvol = 10;
+#ifdef __WINSCW__
+    maxvol = 10000;
+#endif //__WINSCW__
+    g_object_set(G_OBJECT(iSink),
+                 "volume", maxvol,
+#ifndef __WINSCW__
+                "priority", (gint)iPriority.iPriority,
+                "preference", (gint)iPriority.iPref,
+#endif
+                NULL);
+
+    gst_app_src_set_caps(GST_APP_SRC(iAppSrc), caps);
+    gst_app_src_set_max_bytes(GST_APP_SRC(iAppSrc), iMaxBufLen);
+    err = SetCodecCi();
+    //gst_element_set_state(iPipelinePlay, GST_STATE_READY);
+
+    TRACE_PRN_FN_EXT;
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::gst_play_raw
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::gst_play_raw()
+    {
+    TRACE_PRN_FN_ENT;
+
+    // start playback
+    gst_element_set_state(iPipelinePlay, GST_STATE_PLAYING);
+
+    //configure the appsrc, we will push buffer to appsrc when it needs more data
+    g_signal_connect(iAppSrc, "need-data",
+                     G_CALLBACK (cb_raw_playback_handoff),
+                     NULL);
+    TRACE_PRN_FN_EXT;
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::TMSIPDownlink
+// Standard Constructor
+// -----------------------------------------------------------------------------
+//
+TMSIPDownlink::TMSIPDownlink()
+    {
+    iSelfDn = this;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::~TMSIPDownlink
+// Standard Constructor
+// -----------------------------------------------------------------------------
+//
+TMSIPDownlink::~TMSIPDownlink()
+    {
+    TRACE_PRN_FN_ENT;
+
+    Stop();
+    gst_caps_unref(caps);
+    gst_object_unref(GST_OBJECT(iPipelinePlay));
+    gst_deinit();
+
+    delete iErrConcealmentIntfc;
+    delete iG711DecoderIntfc;
+    delete iG729DecoderIntfc;
+    delete iIlbcDecoderIntfc;
+
+#ifdef __PLAY_WAV_FROM_FILE__
+    iFs.Close();
+    delete fbuf;
+#endif
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::NewL
+// Symbian two-phase constructor
+// -----------------------------------------------------------------------------
+//
+TMSIPDownlink* TMSIPDownlink::NewL(const guint32 codecID,
+        const TMMFPrioritySettings priority)
+    {
+    TMSIPDownlink* self = new (ELeave) TMSIPDownlink();
+    CleanupStack::PushL(self);
+    self->ConstructL(codecID, priority);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::ConstructL
+// Part two of Symbian two phase construction
+// -----------------------------------------------------------------------------
+//
+void TMSIPDownlink::ConstructL(const guint32 codecID,
+        const TMMFPrioritySettings priority)
+    {
+    TRACE_PRN_FN_ENT;
+
+    iCodecID = codecID;
+    iPriority = priority;
+    //    SetTime();
+    gst_init(NULL, NULL);
+    //    CalcLatency();
+    //    SetTime();
+
+    gint err = gst_initialize_play();
+    if (err != TMS_RESULT_SUCCESS)
+        {
+        User::Leave(err);
+        }
+
+    // Client must set these before querying!
+    iG711DecodeMode = TMS_G711_CODEC_MODE_ALAW;
+    iILBCDecodeMode = TMS_ILBC_CODEC_MODE_20MS_FRAME;
+
+#ifdef __PLAY_WAV_FROM_FILE__
+    iReadSize = KVoIPPCM16FrameLen;
+    err = iFs.Connect();
+    if (err == KErrNone)
+        {
+        err = iFile.Open(iFs, KTestFile1, EFileShareAny | EFileRead);
+        }
+    if (err == KErrNone)
+        {
+        iFile.Size(fsize);
+        }
+    fbuf = HBufC8::NewL(fsize);
+    TPtr8 p = fbuf->Des();
+    iFile.Read(p, fsize);
+    iFile.Close();
+#endif
+    //    CalcLatency();
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::Start
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPDownlink::Start()
+    {
+    TRACE_PRN_FN_ENT;
+
+    gst_play_raw();
+    iStatus = EStreaming;
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::Stop
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPDownlink::Stop()
+    {
+    TRACE_PRN_FN_ENT;
+
+    if (iStatus == EStreaming)
+        {
+        if (iPipelinePlay != NULL &&
+            iPipelinePlay->current_state == GST_STATE_PLAYING)
+            {
+            gst_element_set_state(iPipelinePlay, GST_STATE_NULL);
+            }
+
+        iStatus = EReady;
+        }
+
+    if (gstDnlBuffer)
+        {
+        gst_buffer_unref(gstDnlBuffer);
+        }
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::BufferToBeFilled
+// -----------------------------------------------------------------------------
+//
+void TMSIPDownlink::BufferToBeFilled()
+    {
+    TRACE_PRN_N1(_L("TMS->DNL->BTBF: requestBufLen[%d]"), requestBufLen);
+
+#ifndef __PLAY_WAV_FROM_FILE__
+    // Create or adjust the chunk
+    TInt err = DoChunk(requestBufLen, iMsgBuffer);
+
+    if (err != TMS_RESULT_SUCCESS)
+        {
+        Stop();
+        iMsgBuffer.iStatus = err;
+        }
+    else
+        {
+        // Notify client there is buffer ready to be filled
+        iMsgBuffer.iStatus = iChunk.Handle();
+        iMsgBuffer.iInt = requestBufLen;
+        iStatus = EStreaming;
+        // If chunk is opened, we will expect a call from the client to
+        // get chunk handle. When we get a call to copy chunk handle,
+        // check these variables and see if they match. This is not
+        // completely secure, but will provide some level of security
+        if (iMsgBuffer.iBool == TRUE)
+            {
+            iWriteDataXferHndlToClient = TRUE;
+            iKey = iMsgBuffer.iUint32;
+            }
+        }
+
+    iMsgBuffer.iRequest = ECmdFillBuffer;
+    iMsgQueue.Send(iMsgBuffer);
+
+#else //__PLAY_WAV_FROM_FILE__
+    TInt err = KErrNone;
+    BufferFilled();
+#endif //__PLAY_WAV_FROM_FILE__
+    TRACE_PRN_IF_ERR(err);
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::BufferFilled
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPDownlink::BufferFilled(const guint buflen)
+    {
+#ifndef __PLAY_WAV_FROM_FILE__
+    gstDnlBuffer = gst_buffer_new();
+    gst_buffer_set_caps(gstDnlBuffer, caps);
+    GST_BUFFER_SIZE(gstDnlBuffer) = buflen;
+
+    //TODO: what if bufLen > requestBufLen?
+
+    // IMPL#1:
+    // gstDnlBuffer->data pointer is set to use chunk pointer.
+    // Although unlikely in the pull mode, this may potentially result
+    // in data loss if chunk gets overwritten before it is consumed.
+    gst_buffer_set_data(gstDnlBuffer, iChunk.Base(), buflen);
+
+    // IMPL#2
+    // Alternative implementation with new buffer alloc and memcpy.
+    // GStreamer will free this memory when buffer refcount becomes 0.
+    //guint8* ptr = (guint8*)g_malloc(buflen);
+    //GST_BUFFER_MALLOCDATA(gstDnlBuffer) = GST_BUFFER_DATA(gstDnlBuffer) = ptr;
+    //memcpy(ptr, iChunk.Base(), buflen);
+
+#else //__PLAY_WAV_FROM_FILE__
+    User::After(TTimeIntervalMicroSeconds32(150000));
+
+    TPtr8 p = fbuf->Des();
+    TInt buflen = iReadSize;
+    gstDnlBuffer = gst_buffer_new_and_alloc(buflen);
+    gst_buffer_set_caps(gstDnlBuffer, caps);
+    unsigned char* ptr = (unsigned char*)((fbuf->Ptr())+iReadBytes);
+    gst_buffer_set_data(gstDnlBuffer, ptr, buflen);
+
+    if ((iReadBytes + iReadSize> fsize))
+        {
+        // start over from the beginning
+        iReadBytes = 0;
+        }
+    else
+        {
+        iReadBytes += iReadSize;
+        }
+
+#endif //__PLAY_WAV_FROM_FILE__
+    gst_app_src_push_buffer(GST_APP_SRC(iAppSrc), gstDnlBuffer);
+    TRACE_PRN_N1(_L("TMS->DNL->BF: LEN[%d]"), buflen);
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::SetCodecCi
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::SetCodecCi()
+    {
+    TRAPD(err, SetCodecCiL());
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::SetCodecCiL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPDownlink::SetCodecCiL()
+    {
+    TRACE_PRN_FN_ENT;
+
+    switch (iCodecID)
+        {
+        case KMccFourCCIdG711:
+            {
+            if (!iG711DecoderIntfc)
+                {
+                iG711DecoderIntfc = GST_G711_DECODER_GET_IFACE(iSink);
+                }
+            break;
+            }
+        case KMccFourCCIdG729:
+            {
+            if (!iG729DecoderIntfc)
+                {
+                iG729DecoderIntfc = GST_G729_DECODER_GET_IFACE(iSink);
+                }
+            break;
+            }
+        case KMccFourCCIdILBC:
+            {
+            if (!iIlbcDecoderIntfc)
+                {
+                iIlbcDecoderIntfc = GST_ILBC_DECODER_GET_IFACE(iSink);
+                }
+            break;
+            }
+        case KMccFourCCIdAMRNB:
+        case KMMFFourCCCodePCM16:
+            {
+            break;
+            }
+        default:
+            {
+            User::Leave(TMS_RESULT_INVALID_ARGUMENT);
+            }
+        }
+
+    if (iCodecID == KMccFourCCIdG711 ||
+        iCodecID == KMccFourCCIdG729 ||
+        iCodecID == KMccFourCCIdILBC ||
+        iCodecID == KMccFourCCIdAMRNB)
+        {
+        if (!iErrConcealmentIntfc)
+            {
+            iErrConcealmentIntfc = GST_ERROR_CONCEALMENT_GET_IFACE(iSink);
+            }
+        }
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::SetVolume
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::SetVolume(const guint volume)
+    {
+    g_object_set(G_OBJECT(iSink), "volume", volume, NULL);
+    TRACE_PRN_N1(_L("TMS->DNL: SetVolume [%d]"), volume);
+    return TMS_RESULT_SUCCESS;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::GetVolume
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::GetVolume(guint& volume)
+    {
+    g_object_get(G_OBJECT(iSink), "volume", &volume, NULL);
+    TRACE_PRN_N1(_L("TMS->DNL: GetVolume [%d]"), volume);
+    return TMS_RESULT_SUCCESS;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::GetMaxVolume
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::GetMaxVolume(guint& volume)
+    {
+    g_object_get(G_OBJECT(iSink), "maxvolume", &volume, NULL);
+    TRACE_PRN_N1(_L("TMS->DNL: MaxVolume [%d]"), volume);
+    return TMS_RESULT_SUCCESS;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::GetDataXferChunkHndl
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::GetDataXferChunkHndl(const TUint32 key, RChunk& chunk)
+    {
+    gint status = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iChunk.Handle())
+        {
+        if (iWriteDataXferHndlToClient && (iKey == key))
+            {
+            chunk = iChunk;
+            iWriteDataXferHndlToClient = FALSE;
+            iKey = 0;
+            status = TMS_RESULT_SUCCESS;
+            }
+        else
+            {
+            status = TMS_RESULT_ILLEGAL_OPERATION;
+            }
+        }
+
+    TRACE_PRN_IF_ERR(status);
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::SetIlbcCodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::SetIlbcCodecMode(gint mode)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EReady)
+        {
+        iILBCDecodeMode = mode;
+
+        if (iIlbcDecoderIntfc && iCodecID == KMccFourCCIdILBC)
+            {
+            if (mode == TMS_ILBC_CODEC_MODE_20MS_FRAME)
+                {
+                err = iIlbcDecoderIntfc->SetDecoderMode(E20msFrame);
+                TRACE_PRN_N(_L("TMS->DNL: iLBC Mode Set [20ms]"));
+                }
+            else if (mode == TMS_ILBC_CODEC_MODE_30MS_FRAME)
+                {
+                err = iIlbcDecoderIntfc->SetDecoderMode(E30msFrame);
+                TRACE_PRN_N(_L("TMS->DNL: iLBC Mode Set [30ms]"));
+                }
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::GetIlbcCodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::GetIlbcCodecMode(gint& mode)
+    {
+    // not available through CIs -> return cashed value
+    mode = iILBCDecodeMode;
+    TRACE_PRN_N1(_L("TMS->DNL: GetIlbcCodecMode [%d]"), mode);
+    return TMS_RESULT_SUCCESS;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::SetG711CodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::SetG711CodecMode(gint mode)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EReady)
+        {
+        iG711DecodeMode = mode;
+
+        if (iG711DecoderIntfc && iCodecID == KMccFourCCIdG711)
+            {
+            if (mode == TMS_G711_CODEC_MODE_ALAW)
+                {
+                err = iG711DecoderIntfc->SetDecoderMode(EDecALaw);
+                TRACE_PRN_N(_L("TMS->DNL: G711 Mode Set [ALaw]"));
+                }
+            else if (mode == TMS_G711_CODEC_MODE_MULAW)
+                {
+                err = iG711DecoderIntfc->SetDecoderMode(EDecULaw);
+                TRACE_PRN_N(_L("TMS->DNL: G711 Mode Set [uLaw]"));
+                }
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::GetG711CodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::GetG711CodecMode(gint& mode)
+    {
+    // not available through CIs -> return cached value
+    mode = iG711DecodeMode;
+    TRACE_PRN_N1(_L("TMS->DNL: GetG711CodecMode [%d]"), mode);
+    return TMS_RESULT_SUCCESS;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::FrameModeRqrdForEC
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::FrameModeRqrdForEC(gboolean& frmodereq)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EReady)
+        {
+        if (iErrConcealmentIntfc)
+            {
+            err = iErrConcealmentIntfc->FrameModeRqrdForEC(&frmodereq);
+            TRACE_PRN_N1(_L("TMS->DNL: FrameModeRqrdForEC [%d]"), frmodereq);
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::SetFrameMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::SetFrameMode(const gboolean frmode)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EReady)
+        {
+        iFrameMode = frmode;
+
+        if (iErrConcealmentIntfc)
+            {
+            err = iErrConcealmentIntfc->SetFrameMode(frmode);
+            TRACE_PRN_N1(_L("TMS->DNL: SetFrameMode [%d]"), frmode);
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::GetFrameMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::GetFrameMode(gboolean& frmode)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iErrConcealmentIntfc)
+        {
+        // not available through CIs -> return cached value
+        frmode = iFrameMode;
+        TRACE_PRN_N1(_L("TMS->DNL: GetFrameMode [%d]"), frmode);
+        err = TMS_RESULT_SUCCESS;
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::ConcealErrorForNextBuffer
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::ConcealErrorForNextBuffer()
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iErrConcealmentIntfc)
+        {
+        err = iErrConcealmentIntfc->ConcealErrorForNextBuffer();
+        TRACE_PRN_N(_L("TMS->DNL: ConcealErrorForNextBuffer"));
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::SetCng
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::SetCng(const TMSFormatType fmttype, const gboolean cng)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EReady)
+        {
+        if (fmttype == TMS_FORMAT_G711 && iG711DecoderIntfc)
+            {
+            err = iG711DecoderIntfc->SetCng(cng);
+            TRACE_PRN_N1(_L("TMS->DNL: SetCng [%d]"), cng);
+            }
+        else if (fmttype == TMS_FORMAT_ILBC && iIlbcDecoderIntfc)
+            {
+            err = iIlbcDecoderIntfc->SetCng(cng);
+            TRACE_PRN_N1(_L("TMS->DNL: SetCng [%d]"), cng);
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::GetCng
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::GetCng(const TMSFormatType fmttype, gboolean& cng)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EReady)
+        {
+        if (fmttype == TMS_FORMAT_G711 && iG711DecoderIntfc)
+            {
+            err = iG711DecoderIntfc->GetCng(&cng);
+            TRACE_PRN_N1(_L("TMS->DNL: GetCng [%d]"), cng);
+            }
+        else if (fmttype == TMS_FORMAT_ILBC && iIlbcDecoderIntfc)
+            {
+            err = iIlbcDecoderIntfc->GetCng(&cng);
+            TRACE_PRN_N1(_L("TMS->DNL: GetCng [%d]"), cng);
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::SetPlc
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::SetPlc(const TMSFormatType fmttype, const gboolean plc)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EReady)
+        {
+        if (fmttype == TMS_FORMAT_G711 && iG711DecoderIntfc)
+            {
+            iPlc = plc;
+            err = iG711DecoderIntfc->SetPlc(iPlc);
+            TRACE_PRN_N1(_L("TMS->DNL: SetPlc [%d]"), plc);
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::GetPlc
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::GetPlc(const TMSFormatType fmttype, gboolean& plc)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (fmttype == TMS_FORMAT_G711 && iG711DecoderIntfc)
+        {
+        // not available through CIs -> return cached value
+        plc = iPlc;
+        err = TMS_RESULT_SUCCESS;
+        TRACE_PRN_N1(_L("TMS->DNL: GetPlc [%d]"), plc);
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::BadLsfNextBuffer
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::BadLsfNextBuffer()
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EStreaming)
+        {
+        if (iCodecID == KMccFourCCIdG729 && iG729DecoderIntfc)
+            {
+            err = iG729DecoderIntfc->BadLsfNextBuffer();
+            TRACE_PRN_N(_L("TMS->DNL: BadLsfNextBuffer"));
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::SetAudioDeviceL
+//
+// -----------------------------------------------------------------------------
+void TMSIPDownlink::SetAudioDeviceL(TMSAudioOutput output)
+    {
+    gint outputDev;
+
+    // ENoPreference=0, EAll=1, ENoOutput=2, EPrivate=3, EPublic=4
+    switch (output)
+        {
+        case TMS_AUDIO_OUTPUT_PRIVATE:
+        case TMS_AUDIO_OUTPUT_HANDSET:
+            outputDev = (gint)CAudioOutput::EPrivate;
+            break;
+        case TMS_AUDIO_OUTPUT_PUBLIC:
+        case TMS_AUDIO_OUTPUT_LOUDSPEAKER:
+            outputDev = (gint)CAudioOutput::EPublic;
+            break;
+        default: // Use default device routing
+            outputDev = (gint)CAudioOutput::ENoPreference;
+            break;
+        }
+
+    g_object_set(G_OBJECT(iSink), "outputdevice", outputDev, NULL);
+    TRACE_PRN_N1(_L("TMS->DNL: SetAudioDeviceL [%d]"), outputDev);
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::GetAudioDeviceL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPDownlink::GetAudioDeviceL(TMSAudioOutput& output)
+    {
+    TRACE_PRN_FN_ENT;
+
+    gint outputDev;
+    g_object_get(G_OBJECT(iSink), "outputdevice", &outputDev, NULL);
+    TRACE_PRN_N1(_L("TMS->DNL: GetAudioDevice [%d]"), outputDev);
+
+    switch (outputDev)
+        {
+        case CAudioOutput::ENoPreference:
+        case CAudioOutput::EAll:
+        case CAudioOutput::ENoOutput:
+        case CAudioOutput::EPrivate:
+            output = TMS_AUDIO_OUTPUT_PRIVATE;
+            break;
+        case CAudioOutput::EPublic:
+            output = TMS_AUDIO_OUTPUT_PUBLIC;
+            break;
+        default:
+            output = TMS_AUDIO_OUTPUT_PRIVATE;
+            break;
+        }
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/src/tmsipcalldownlinkds.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,815 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#include <AudioPreference.h>
+#include <AudioOutput.h>
+#include <mmcccodecinformation.h>
+#include <IlbcDecoderIntfc.h>
+#include <G711DecoderIntfc.h>
+#include <G729DecoderIntfc.h>
+#include <ErrorConcealmentIntfc.h>
+#include "tmsutility.h"
+#include "tmsipcallstream.h"
+
+using namespace TMS;
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::TMSIPDownlink
+// Standard Constructor
+// -----------------------------------------------------------------------------
+//
+TMSIPDownlink::TMSIPDownlink()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::~TMSIPDownlink
+// Standard Constructor
+// -----------------------------------------------------------------------------
+//
+TMSIPDownlink::~TMSIPDownlink()
+    {
+    TRACE_PRN_FN_ENT;
+
+    Stop();
+
+    delete iAudioOutput;
+    delete iErrConcealmentIntfc;
+    delete iG711DecoderIntfc;
+    delete iG729DecoderIntfc;
+    delete iIlbcDecoderIntfc;
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::NewL
+// Symbian two-phase constructor
+// -----------------------------------------------------------------------------
+//
+TMSIPDownlink* TMSIPDownlink::NewL(const guint32 codecID,
+        const TMMFPrioritySettings priority)
+    {
+    TMSIPDownlink* self = new (ELeave) TMSIPDownlink();
+    CleanupStack::PushL(self);
+    self->ConstructL(codecID, priority);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::ConstructL
+// Part two of Symbian two phase construction
+// -----------------------------------------------------------------------------
+//
+void TMSIPDownlink::ConstructL(const guint32 codecID,
+        const TMMFPrioritySettings priority)
+    {
+    TRACE_PRN_FN_ENT;
+
+    iCodecID = codecID;
+    iPriority = priority;
+
+    // Client must set these before querying!
+    iG711DecodeMode = TMS_G711_CODEC_MODE_ALAW;
+    iILBCDecodeMode = TMS_ILBC_CODEC_MODE_20MS_FRAME;
+
+    TRAPD(err, InitDevSoundL(EMMFStatePlaying, priority));
+    if (err != TMS_RESULT_SUCCESS)
+        {
+        User::Leave(err);
+        }
+
+    iMaxBufLen = ConfigureMedia(iCodecID);
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::Start
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPDownlink::Start()
+    {
+    TRACE_PRN_FN_ENT;
+
+    gint err = TMS_RESULT_ILLEGAL_OPERATION;
+
+    if (iStatus == EReady && iDevSound)
+        {
+        TRAP(err, iDevSound->PlayInitL());
+        TRACE_PRN_IF_ERR(err);
+
+#ifdef _DEBUG
+        iSamplesPlayedCount = 0;
+#endif
+        if (err != TMS_RESULT_SUCCESS)
+            {
+            iStatus = EReady;
+            }
+        }
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::Stop
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPDownlink::Stop()
+    {
+    TRACE_PRN_FN_ENT;
+
+    if (iStatus == EStreaming && iDevSound)
+        {
+        iDevSound->Stop();
+        iStatus = EReady;
+        }
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::BufferToBeFilled
+// A reference to the buffer delivered from the DevSound is stored locally
+// for later use. It will be filled with the data passed from the client
+// when it calls BufferFilled.
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPDownlink::BufferToBeFilled(CMMFBuffer* aBuffer)
+    {
+    // Store pointer to the received buffer
+    iDevSoundBufPtr = static_cast<CMMFDataBuffer*>(aBuffer);
+    iBufLen = iDevSoundBufPtr->RequestSize();
+    TRACE_PRN_N1(_L("TMS->DNL->BTBF: LEN[%d]"), iBufLen);
+
+#ifndef __WINSCW__
+    //TODO: revisit this!
+    // The first AMR buffer returns 1 for no data frame.
+    /*if (iCodecID == KMccFourCCIdAMRNB)
+     {
+     iBufLen = iMaxBufLen;
+     }*/
+#endif //__WINSCW__
+    // Create or adjust the chunk
+    gint err = DoChunk(iBufLen, iMsgBuffer);
+
+    if (err != TMS_RESULT_SUCCESS)
+        {
+        Stop();
+        iMsgBuffer.iStatus = err;
+        }
+    else
+        {
+        // Notify client there is buffer ready to be filled
+        iMsgBuffer.iStatus = err;
+        iMsgBuffer.iInt = iBufLen;
+        iStatus = EStreaming;
+        // If chunk is opened, we will expect a call from the client to
+        // get chunk handle. When we get a call to copy chunk handle,
+        // check these variables and see if they match. This is not
+        // completely secure, but will provide some level of security
+        if (iMsgBuffer.iBool == TRUE)
+            {
+            iWriteDataXferHndlToClient = TRUE;
+            iKey = iMsgBuffer.iUint32;
+            }
+        }
+
+    iMsgBuffer.iRequest = ECmdFillBuffer;
+    err = iMsgQueue.Send(iMsgBuffer);
+
+    TRACE_PRN_IF_ERR(err);
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::BufferFilled
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPDownlink::BufferFilled(const guint buflen)
+    {
+    TRACE_PRN_N1(_L("TMS->DNL->BF: LEN[%d]"), buflen);
+
+    // Copy data over from chunk
+    TPtr8 dataPtr(iChunk.Base(), buflen, iMaxBufLen);
+    //    RDebug::RawPrint(dataPtr);
+
+    if (iStatus == EStreaming && iDevSound && iDevSoundBufPtr)
+        {
+        // Fill D/S buffer and send it for playback
+        iDevSoundBufPtr->Data() = dataPtr;
+        TRAP_IGNORE(iDevSoundBufPtr->SetRequestSizeL(buflen));
+        //try playing anyway
+        iDevSound->PlayData();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::SetCodecCi
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::SetCodecCi()
+    {
+    TRAPD(err, SetCodecCiL());
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::SetCodecCiL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPDownlink::SetCodecCiL()
+    {
+    TRACE_PRN_FN_ENT;
+
+    switch (iCodecID)
+        {
+        case KMccFourCCIdG711:
+            {
+            if (!iG711DecoderIntfc)
+                {
+                iG711DecoderIntfc = CG711DecoderIntfc::NewL(*iDevSound);
+                }
+            break;
+            }
+        case KMccFourCCIdG729:
+            {
+            if (!iG729DecoderIntfc)
+                {
+                iG729DecoderIntfc = CG729DecoderIntfc::NewL(*iDevSound);
+                }
+            break;
+            }
+        case KMccFourCCIdILBC:
+            {
+            if (!iIlbcDecoderIntfc)
+                {
+                iIlbcDecoderIntfc = CIlbcDecoderIntfc::NewL(*iDevSound);
+                }
+            break;
+            }
+        case KMccFourCCIdAMRNB:
+        case KMMFFourCCCodePCM16:
+            {
+            break;
+            }
+        default:
+            {
+            User::Leave(TMS_RESULT_INVALID_ARGUMENT);
+            break;
+            }
+        }
+
+    if (!iErrConcealmentIntfc && iCodecID != KMMFFourCCCodePCM16)
+        {
+        iErrConcealmentIntfc = CErrorConcealmentIntfc::NewL(*iDevSound);
+        }
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::SetVolume
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::SetVolume(const guint volume)
+    {
+    gint ret(TMS_RESULT_UNINITIALIZED_OBJECT);
+    if (iDevSound)
+        {
+        iDevSound->SetVolume(volume);
+        ret = TMS_RESULT_SUCCESS;
+        }
+    TRACE_PRN_N1(_L("TMS->DNL: SetVolume [%d]"), volume);
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::GetVolume
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::GetVolume(guint& volume)
+    {
+    gint ret(TMS_RESULT_UNINITIALIZED_OBJECT);
+    if (iDevSound)
+        {
+        volume = iDevSound->Volume();
+        ret = TMS_RESULT_SUCCESS;
+        }
+    TRACE_PRN_N1(_L("TMS->DNL: GetVolume [%d]"), volume);
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::GetMaxVolume
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::GetMaxVolume(guint& volume)
+    {
+    gint ret(TMS_RESULT_UNINITIALIZED_OBJECT);
+    if (iDevSound)
+        {
+        volume = iDevSound->MaxVolume();
+        ret = TMS_RESULT_SUCCESS;
+        }
+    TRACE_PRN_N1(_L("TMS->DNL: MaxVolume [%d]"), volume);
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::GetDataXferChunkHndl
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::GetDataXferChunkHndl(const TUint32 key, RChunk& chunk)
+    {
+    gint status = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iChunk.Handle())
+        {
+        if (iWriteDataXferHndlToClient && (iKey == key))
+            {
+            chunk = iChunk;
+            iWriteDataXferHndlToClient = FALSE;
+            iKey = 0;
+            status = TMS_RESULT_SUCCESS;
+            }
+        else
+            {
+            status = TMS_RESULT_ILLEGAL_OPERATION;
+            }
+        }
+
+    TRACE_PRN_IF_ERR(status);
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::SetIlbcCodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::SetIlbcCodecMode(gint mode)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EReady)
+        {
+        iILBCDecodeMode = mode;
+
+        if (iIlbcDecoderIntfc && iCodecID == KMccFourCCIdILBC)
+            {
+            if (mode == TMS_ILBC_CODEC_MODE_20MS_FRAME)
+                {
+                err = iIlbcDecoderIntfc->SetDecoderMode(
+                        CIlbcDecoderIntfc::E20msFrame);
+                TRACE_PRN_N(_L("TMS->DNL: iLBC Mode Set [20ms]"));
+                }
+            else if (mode == TMS_ILBC_CODEC_MODE_30MS_FRAME)
+                {
+                err = iIlbcDecoderIntfc->SetDecoderMode(
+                        CIlbcDecoderIntfc::E30msFrame);
+                TRACE_PRN_N(_L("TMS->DNL: iLBC Mode Set [30ms]"));
+                }
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::GetIlbcCodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::GetIlbcCodecMode(gint& mode)
+    {
+    // not available through CIs -> return cashed value
+    mode = iILBCDecodeMode;
+    TRACE_PRN_N1(_L("TMS->DNL: GetIlbcCodecMode [%d]"), mode);
+    return TMS_RESULT_SUCCESS;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::SetG711CodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::SetG711CodecMode(gint mode)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EReady)
+        {
+        iG711DecodeMode = mode;
+
+        if (iG711DecoderIntfc && iCodecID == KMccFourCCIdG711)
+            {
+            if (mode == TMS_G711_CODEC_MODE_ALAW)
+                {
+                err = iG711DecoderIntfc->SetDecoderMode(
+                        CG711DecoderIntfc::EDecALaw);
+                TRACE_PRN_N(_L("TMS->DNL: G711 Mode Set [ALaw]"));
+                }
+            else if (mode == TMS_G711_CODEC_MODE_MULAW)
+                {
+                err = iG711DecoderIntfc->SetDecoderMode(
+                        CG711DecoderIntfc::EDecULaw);
+                TRACE_PRN_N(_L("TMS->DNL: G711 Mode Set [uLaw]"));
+                }
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::GetG711CodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::GetG711CodecMode(gint& mode)
+    {
+    // not available through CIs -> return cached value
+    mode = iG711DecodeMode;
+    TRACE_PRN_N1(_L("TMS->DNL: GetG711CodecMode [%d]"), mode);
+    return TMS_RESULT_SUCCESS;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::FrameModeRqrdForEC
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::FrameModeRqrdForEC(gboolean& frmodereq)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EReady)
+        {
+        if (iErrConcealmentIntfc)
+            {
+            err = iErrConcealmentIntfc->FrameModeRqrdForEC(frmodereq);
+            TRACE_PRN_N1(_L("TMS->DNL: FrameModeRqrdForEC [%d]"), frmodereq);
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::SetFrameMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::SetFrameMode(const gboolean frmode)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EReady)
+        {
+        iFrameMode = frmode;
+
+        if (iErrConcealmentIntfc)
+            {
+            err = iErrConcealmentIntfc->SetFrameMode(frmode);
+            TRACE_PRN_N1(_L("TMS->DNL: SetFrameMode [%d]"), frmode);
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::GetFrameMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::GetFrameMode(gboolean& frmode)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iErrConcealmentIntfc)
+        {
+        // not available through CIs -> return cached value
+        frmode = iFrameMode;
+        TRACE_PRN_N1(_L("TMS->DNL: GetFrameMode [%d]"), frmode);
+        err = TMS_RESULT_SUCCESS;
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::ConcealErrorForNextBuffer
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::ConcealErrorForNextBuffer()
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iErrConcealmentIntfc)
+        {
+        err = iErrConcealmentIntfc->ConcealErrorForNextBuffer();
+        TRACE_PRN_N(_L("TMS->DNL: ConcealErrorForNextBuffer"));
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::SetCng
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::SetCng(const TMSFormatType fmttype, const gboolean cng)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EReady)
+        {
+        if (fmttype == TMS_FORMAT_G711 && iG711DecoderIntfc)
+            {
+            err = iG711DecoderIntfc->SetCng(cng);
+            TRACE_PRN_N1(_L("TMS->DNL: SetCng [%d]"), cng);
+            }
+        else if (fmttype == TMS_FORMAT_ILBC && iIlbcDecoderIntfc)
+            {
+            err = iIlbcDecoderIntfc->SetCng(cng);
+            TRACE_PRN_N1(_L("TMS->DNL: SetCng [%d]"), cng);
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::GetCng
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::GetCng(const TMSFormatType fmttype, gboolean& cng)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EReady)
+        {
+        if (fmttype == TMS_FORMAT_G711 && iG711DecoderIntfc)
+            {
+            err = iG711DecoderIntfc->GetCng(cng);
+            TRACE_PRN_N1(_L("TMS->DNL: GetCng [%d]"), cng);
+            }
+        else if (fmttype == TMS_FORMAT_ILBC && iIlbcDecoderIntfc)
+            {
+            err = iIlbcDecoderIntfc->GetCng(cng);
+            TRACE_PRN_N1(_L("TMS->DNL: GetCng [%d]"), cng);
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::SetPlc
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::SetPlc(const TMSFormatType fmttype, const gboolean plc)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EReady)
+        {
+        if (fmttype == TMS_FORMAT_G711 && iG711DecoderIntfc)
+            {
+            iPlc = plc;
+            err = iG711DecoderIntfc->SetPlc(iPlc);
+            TRACE_PRN_N1(_L("TMS->DNL: SetPlc [%d]"), plc);
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::GetPlc
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::GetPlc(const TMSFormatType fmttype, gboolean& plc)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (fmttype == TMS_FORMAT_G711 && iG711DecoderIntfc)
+        {
+        // not available through CIs -> return cached value
+        plc = iPlc;
+        err = TMS_RESULT_SUCCESS;
+        TRACE_PRN_N1(_L("TMS->DNL: GetPlc [%d]"), plc);
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::BadLsfNextBuffer
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPDownlink::BadLsfNextBuffer()
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EStreaming)
+        {
+        if (iCodecID == KMccFourCCIdG729 && iG729DecoderIntfc)
+            {
+            err = iG729DecoderIntfc->BadLsfNextBuffer();
+            TRACE_PRN_N(_L("TMS->DNL: BadLsfNextBuffer"));
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::SetAudioDeviceL
+//
+// -----------------------------------------------------------------------------
+void TMSIPDownlink::SetAudioDeviceL(TMSAudioOutput output)
+    {
+    TRACE_PRN_FN_ENT;
+
+    if (!iAudioOutput)
+        {
+        iAudioOutput = CAudioOutput::NewL(*iDevSound);
+        }
+
+    if (iAudioOutput)
+        {
+        // ENoPreference=0, EAll=1, ENoOutput=2, EPrivate=3, EPublic=4
+        CAudioOutput::TAudioOutputPreference outputDev;
+
+        switch (output)
+            {
+            case TMS_AUDIO_OUTPUT_PRIVATE:
+            case TMS_AUDIO_OUTPUT_HANDSET:
+                outputDev = CAudioOutput::EPrivate;
+                break;
+            case TMS_AUDIO_OUTPUT_PUBLIC:
+            case TMS_AUDIO_OUTPUT_LOUDSPEAKER:
+                outputDev = CAudioOutput::EPublic;
+                break;
+            default: // Use default device routing
+                outputDev = CAudioOutput::ENoPreference;
+                break;
+            }
+
+        iAudioOutput->SetAudioOutputL(outputDev);
+        TRACE_PRN_N1(_L("TMS->DNL: SetAudioDeviceL [%d]"), outputDev);
+        }
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::GetAudioDeviceL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPDownlink::GetAudioDeviceL(TMSAudioOutput& output)
+    {
+    TRACE_PRN_FN_ENT;
+
+    if (!iAudioOutput)
+        {
+        iAudioOutput = CAudioOutput::NewL(*iDevSound);
+        }
+
+    if (iAudioOutput)
+        {
+        CAudioOutput::TAudioOutputPreference outputDev =
+                iAudioOutput->AudioOutput();
+
+        switch (outputDev)
+            {
+            case CAudioOutput::ENoPreference:
+            case CAudioOutput::EAll:
+            case CAudioOutput::ENoOutput:
+            case CAudioOutput::EPrivate:
+                output = TMS_AUDIO_OUTPUT_PRIVATE;
+                break;
+            case CAudioOutput::EPublic:
+                output = TMS_AUDIO_OUTPUT_PUBLIC;
+                break;
+            default:
+                output = TMS_AUDIO_OUTPUT_PRIVATE;
+                break;
+            }
+        }
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// CALLBACKS
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::InitializeComplete
+// A callback from the DevSound indicating completion of the initialization.
+// It will send config data to the D/S and configure the encoder via CI.
+// If everything goes well, the state of the thread is set EReady.
+// The initialization completion message is sent back to the main thread.
+// -----------------------------------------------------------------------------
+//
+void TMSIPDownlink::InitializeComplete(TInt aError)
+    {
+    TRACE_PRN_FN_ENT;
+
+    gint err = aError;
+
+    if (err == TMS_RESULT_SUCCESS && iDevSound)
+        {
+        TMMFCapabilities conf;
+        conf = iDevSound->Config();
+        conf.iRate = EMMFSampleRate8000Hz;
+        conf.iChannels = EMMFMono;
+        TRAP(err, iDevSound->SetConfigL(conf));
+        if (err == TMS_RESULT_SUCCESS)
+            {
+            // We are ready to stream even in case of later CI setting failure
+            iStatus = EReady;
+            iMaxVolume = iDevSound->MaxVolume();
+            }
+
+        // Init Custom Interface API to the decoder
+        err = SetCodecCi();
+        if (err != TMS_RESULT_SUCCESS)
+            {
+            // DEBUG only
+            // Can ignore error - although decoder is not fully configured but
+            // it can still run in the default mode.
+            TRACE_PRN_IF_ERR(err);
+            }
+        }
+
+    // TODO: Notify client
+
+    TRACE_PRN_IF_ERR(err);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPDownlink::PlayError
+// From MDevSoundObserver
+// Record error is send to client over comm channel.
+// The state of recorder is rolled back to EReady.
+// -----------------------------------------------------------------------------
+//
+void TMSIPDownlink::PlayError(TInt /*aError*/)
+    {
+    //TRACE_PRN_IF_ERR(aError);
+
+#ifdef _DEBUG
+    iSamplesPlayedCount = 0;
+#endif
+    iStatus = EReady;
+
+    // TODO: Notify client
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/src/tmsipcallstreambase.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,174 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#include <e32math.h>
+#include <mmcccodecinformation.h>
+#include "tmsutility.h"
+#include "tmsshared.h"
+#include "tmsipcallstream.h"
+
+using namespace TMS;
+
+// -----------------------------------------------------------------------------
+// TMSIPCallStreamBase::~TMSIPCallStreamBase
+// Destructor
+// -----------------------------------------------------------------------------
+//
+TMSIPCallStreamBase::~TMSIPCallStreamBase()
+    {
+    TRACE_PRN_FN_ENT;
+
+    if (iChunk.Handle() > 0)
+        {
+        iChunk.Close();
+        }
+
+#ifndef __USE_GSTREAMER__
+    delete iDevSound;
+#endif //__USE_GSTREAMER__
+    TRACE_PRN_FN_EXT;
+    }
+
+#ifndef __USE_GSTREAMER__
+// -----------------------------------------------------------------------------
+// TMSIPCallStreamBase::InitDevSoundL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPCallStreamBase::InitDevSoundL(const TMMFState aDevSoundState,
+        const TMMFPrioritySettings priority)
+    {
+    TRACE_PRN_FN_ENT;
+
+    if (!iDevSound)
+        {
+        // Create D/S recording/playing device
+        iDevSound = CMMFDevSound::NewL();
+        }
+
+    if (iDevSound)
+        {
+        iDevSound->InitializeL(*this, TFourCC(iCodecID), aDevSoundState);
+        iDevSound->SetPrioritySettings(priority);
+        }
+    }
+#endif //__USE_GSTREAMER__
+
+// -----------------------------------------------------------------------------
+// TMSIPCallStreamBase::SetMsgQueue
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPCallStreamBase::SetMsgQueue(const RMsgQueue<TmsMsgBuf> aMsgQueue)
+    {
+    iMsgQueue = aMsgQueue;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPCallStreamBase::ConfigureMedia
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPCallStreamBase::ConfigureMedia(const guint32 aCodecID)
+    {
+    gint framelen = 0;
+
+    switch (aCodecID)
+        {
+        case KMccFourCCIdG711:
+            iMediaType = "audio/x-alaw";
+            // iMediaType = "audio/x-mulaw";
+            framelen = KTMSG711FrameLen10ms; //TODO: may be H/W specific!
+            //framelen = KTMSG711FrameLen20ms;
+            break;
+        case KMccFourCCIdG729:
+            iMediaType = "audio/g729";
+            framelen = KTMSG729FrameLen;
+            break;
+        case KMccFourCCIdILBC:
+            iMediaType = "audio/ilbc";
+            framelen = KTMSILBCFrameLen20ms;
+            //framelen = KTMSILBCFrameLen30ms;
+            break;
+        case KMccFourCCIdAMRNB:
+            iMediaType = "audio/amr";
+            framelen = KTMSAMRNBFrameLen;
+            //framelen = KTMSAMRNBFrameLenFM;
+            break;
+        case KMMFFourCCCodePCM16:
+        default:
+            iMediaType = "audio/x-raw-int";
+            framelen = KTMSPCM16FrameLen;
+#ifdef __WINSCW__
+            framelen *= 4; //16kB
+#endif
+            break;
+        }
+
+    //TODO: DEVLON TEST
+    if (iCodecID != KMMFFourCCCodePCM16)
+        {
+        framelen *= 10;
+        }
+    //TODO: DEVLON TEST
+
+    return framelen;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPCallStreamBase::DoChunk
+// Checks, adjusts and creates global RChunk.
+// -----------------------------------------------------------------------------
+//
+gint TMSIPCallStreamBase::DoChunk(const gint aDataLen, TmsMsgBuf& aMsgBuffer)
+    {
+    gint status(KErrNone);
+
+    // If chunk already created, try to reuse it
+    if (iChunk.Handle())
+        {
+        // committed size is smaller but chunk is large enough to hold data
+        if ((iChunk.Size() < aDataLen) && (aDataLen <= iChunk.MaxSize()))
+            {
+            status = iChunk.Adjust(aDataLen);
+            TRACE_PRN_N1(_L("IP_CALL: DoChunk->Chunk Adjusted [%d]"), aDataLen);
+            }
+        else if (aDataLen > iChunk.MaxSize())
+            {
+            iChunk.Close();
+            TRACE_PRN_N(_L("IP_CALL: DoChunk->Chunk Closed"));
+            }
+        }
+    RET_ERR_IF_ERR(status);
+
+    // Request kernel to create global RChunk if needed
+    aMsgBuffer.iBool = FALSE;
+    if (!iChunk.Handle())
+        {
+        // TODO consider using some max instead
+        status = iChunk.CreateGlobal(KNullDesC, aDataLen, aDataLen);
+        // Mark to re-open chunk handle
+        aMsgBuffer.iBool = TRUE;
+        aMsgBuffer.iUint32 = Math::Random();
+        TRACE_PRN_N2(_L("IP_CALL: DoChunk->Chunk Created [%d]key[%d]"),
+                aDataLen, aMsgBuffer.iUint32);
+        }
+    TRACE_PRN_IF_ERR(status);
+    return status;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/src/tmsipcalluplink.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,758 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#include <audiopreference.h>
+#include <mmcccodecinformation.h>
+#include <gstappsink.h>
+#include "tmsutility.h"
+#include "ipcallstream.h"
+
+using namespace TMS;
+
+static TMSIPUplink* iSelfUp;
+GstBuffer* gstUplBuffer;
+#ifdef _DEBUG
+//static TInt iHeapUp;
+#endif //_DEBUG
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::cb_record_raw_handoff
+// -----------------------------------------------------------------------------
+//
+void TMSIPUplink::cb_record_raw_handoff(GstElement *sink)
+    {
+    TRACE_PRN_N(_L("TMS->UPL: cb_record_raw_handoff Enter"));
+
+#ifdef _DEBUG
+    /*    TInt block;
+     RHeap &heap = User::Heap();
+     TInt avail = heap.Available(block);
+     RDebug::Print(_L("VoIP->PRINT-HEAP-UP:Available:[%d], delta:[%d]"),
+     avail, iHeapUp-avail);
+     iHeapUp = avail;*/
+#endif
+
+    gstUplBuffer = gst_app_sink_pull_buffer(GST_APP_SINK(sink));
+    iSelfUp->BufferToBeEmptied();
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::bus_call
+// -----------------------------------------------------------------------------
+//
+gboolean TMSIPUplink::bus_call(GstBus* /*bus*/, GstMessage* msg,
+        gpointer /*data*/)
+    {
+    switch (GST_MESSAGE_TYPE(msg))
+        {
+        case GST_MESSAGE_EOS:
+            {
+            gst_element_set_state(iSelfUp->iPipelineRec, GST_STATE_NULL);
+            gst_object_unref(GST_OBJECT(iSelfUp->iPipelineRec));
+            break;
+            }
+        case GST_MESSAGE_ERROR:
+            {
+            gchar *debug;
+            GError *err;
+            gst_message_parse_error(msg, &err, &debug);
+            g_free(debug);
+            g_print("Error: %s\n", err->message);
+            g_error_free(err);
+            break;
+            }
+        default:
+            {
+            break;
+            }
+        }
+    return ETrue;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::gst_initialize_record
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::gst_initialize_record()
+    {
+    TRACE_PRN_FN_ENT;
+
+    gint err = KErrNone;
+
+    // create a new bin to hold the elements
+    iPipelineRec = gst_pipeline_new("pipelineRec");
+    iSource = gst_element_factory_make("devsoundsrc", "record_audio");
+    iAppSink = gst_element_factory_make("appsink", "appsink");
+
+    if (!iSource || !iAppSink)
+        {
+        err = KErrNotFound;
+        TRACE_PRN_IF_ERR(err);
+        return err;
+        }
+
+    iMaxBufLen = ConfigureMedia(iCodecID);
+
+    GstCaps* caps = gst_caps_new_simple(iMediaType,
+                                        "width", G_TYPE_INT, 16,
+                                        "depth", G_TYPE_INT, 16,
+                                        "signed", G_TYPE_BOOLEAN, TRUE,
+                                        "endianness", G_TYPE_INT, G_BYTE_ORDER,
+                                        "rate", G_TYPE_INT, 8000,
+                                        "channels", G_TYPE_INT, 1,
+                                        NULL);
+
+    iBusRec = gst_pipeline_get_bus(GST_PIPELINE(iPipelineRec));
+    gst_bus_add_watch(iBusRec, (TMSIPUplink::bus_call), NULL);
+    gst_object_unref(iBusRec);
+
+    // add objects to the main iPipelineRec
+    gst_bin_add_many(GST_BIN(iPipelineRec), iSource, iAppSink, NULL);
+
+    // link the elements
+    gst_element_link_filtered(iSource, iAppSink, caps);
+
+    g_object_set(G_OBJECT(iAppSink),
+                 "max-buffers", 1,
+                 "emit-signals", TRUE,
+                 "sync", FALSE,
+                 NULL);
+
+    g_signal_connect(iAppSink, "new-buffer",
+                     G_CALLBACK(cb_record_raw_handoff),
+                     NULL);
+
+    gst_app_sink_set_caps(GST_APP_SINK(iAppSink), caps);
+    gst_caps_unref(caps);
+
+    //NOTE: d/s is not ready at this time to return true maxgain
+    TInt maxgain = 1;
+#ifdef __WINSCW__
+    maxgain = 64;
+#endif //__WINSCW__
+    g_object_set(G_OBJECT(iSource),
+                 "blocksize", iMaxBufLen,
+                 "gain", maxgain,
+#ifndef __WINSCW__
+                 "priority", (gint)iPriority.iPriority,
+                 "preference", (gint)iPriority.iPref,
+#endif
+                 NULL);
+
+    err = SetCodecCi();
+    //gst_element_set_state(iPipelineRec, GST_STATE_READY);
+
+    TRACE_PRN_FN_EXT;
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::gst_record_raw
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::gst_record_raw()
+    {
+    // start recording
+    gst_element_set_state(iPipelineRec, GST_STATE_PLAYING);
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::TMSIPUplink
+// Standard Constructor
+// -----------------------------------------------------------------------------
+//
+TMSIPUplink::TMSIPUplink()
+    {
+    iSelfUp = this;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::~TMSIPUplink
+// Standard Constructor
+// -----------------------------------------------------------------------------
+//
+TMSIPUplink::~TMSIPUplink()
+    {
+    TRACE_PRN_FN_ENT;
+
+    Stop();
+    gst_object_unref(GST_OBJECT(iPipelineRec));
+    gst_deinit();
+
+    delete iSpeechEncoderConfig;
+    delete iG711EncoderIntfc;
+    delete iG729EncoderIntfc;
+    delete iIlbcEncoderIntfc;
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::NewL
+// Symbian two-phase constructor
+// -----------------------------------------------------------------------------
+//
+TMSIPUplink* TMSIPUplink::NewL(const guint32 codecID,
+        const TMMFPrioritySettings priority)
+    {
+    TMSIPUplink* self = new (ELeave) TMSIPUplink();
+    CleanupStack::PushL(self);
+    self->ConstructL(codecID, priority);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::ConstructL
+// Part two of Symbian two phase construction
+// -----------------------------------------------------------------------------
+//
+void TMSIPUplink::ConstructL(const guint32 codecID,
+        const TMMFPrioritySettings priority)
+    {
+    TRACE_PRN_FN_ENT;
+
+    iCodecID = codecID;
+    iPriority = priority;
+    //    SetTime();
+    gst_init(NULL, NULL);
+    //    CalcLatency();
+    //    SetTime();
+    gint err = gst_initialize_record();
+    if (err != TMS_RESULT_SUCCESS)
+        {
+        User::Leave(err);
+        }
+
+    // Client must set these before querying!
+    iG711EncodeMode = TMS_G711_CODEC_MODE_ALAW;
+    iILBCEncodeMode = TMS_ILBC_CODEC_MODE_20MS_FRAME;
+    //    CalcLatency();
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::Start
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPUplink::Start()
+    {
+    TRACE_PRN_FN_ENT;
+
+    gst_record_raw();
+    iStatus = EStreaming;
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::Stop
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPUplink::Stop()
+    {
+    TRACE_PRN_FN_ENT;
+
+    if (iStatus == EStreaming)
+        {
+        if (iPipelineRec != NULL &&
+            iPipelineRec->current_state == GST_STATE_PLAYING)
+            {
+            GstStateChangeReturn ret;
+            ret = gst_element_set_state(iPipelineRec, GST_STATE_NULL);
+            if (ret == GST_STATE_CHANGE_FAILURE)
+                {
+                ;// retry???
+                //GST_STATE_CHANGE_SUCCESS
+                }
+            }
+        iStatus = EReady;
+        }
+
+    if (gstUplBuffer)
+        {
+        gst_buffer_unref(gstUplBuffer);
+        }
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::BufferToBeEmptied
+// From MDevSoundObserver
+// -----------------------------------------------------------------------------
+//
+void TMSIPUplink::BufferToBeEmptied()
+    {
+    TInt buflen = GST_BUFFER_SIZE(gstUplBuffer);
+    TRACE_PRN_N1(_L("TMS->UPL: BTBE->LEN [%d]"), buflen);
+
+    // Adjust/create RChunk if necessary
+    TInt err = DoChunk(buflen, iMsgBuffer);
+
+    if (err != TMS_RESULT_SUCCESS)
+        {
+        Stop();
+        iMsgBuffer.iStatus = err;
+        }
+    else
+        {
+        // Pass buffer parameters to the client
+        iMsgBuffer.iStatus = err;
+        iMsgBuffer.iInt = buflen;
+
+        // Copy data over to RChunk
+        TPtr8 dataPtr(iChunk.Base(), buflen, iMaxBufLen);
+        dataPtr.Copy(GST_BUFFER_DATA(gstUplBuffer), buflen);
+        gst_buffer_unref(gstUplBuffer);
+
+        //RDebug::RawPrint(dataPtr);
+        iStatus = EStreaming;
+
+        // If chunk is opened, we will expect a call from the client to
+        // get chunk handle. When we get a call to copy chunk handle,
+        // check these variables and see if they match. This is not
+        // completely secure, but will provide some level of security.
+        if (iMsgBuffer.iBool == TRUE)
+            {
+            iWriteDataXferHndlToClient = TRUE;
+            iKey = iMsgBuffer.iUint32;
+            }
+        }
+
+    // Notify client there is buffer ready to be emptied
+    iMsgBuffer.iRequest = ECmdEmptyBuffer;
+    err = iMsgQueue.Send(iMsgBuffer);
+    TRACE_PRN_IF_ERR(err);
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::BufferEmptied
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPUplink::BufferEmptied()
+    {
+    //TRACE_PRN_N(_L("TMS->UPL->BE"));
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::SetCodecCi
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::SetCodecCi()
+    {
+    TRAPD(err, SetCodecCiL());
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::SetCodecCiL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPUplink::SetCodecCiL()
+    {
+    TRACE_PRN_FN_ENT;
+
+    switch (iCodecID)
+        {
+        case KMccFourCCIdG711:
+            {
+            if (!iG711EncoderIntfc)
+                {
+                iG711EncoderIntfc = GST_G711_ENCODER_GET_IFACE(iSource);
+                }
+            break;
+            }
+        case KMccFourCCIdG729:
+            {
+            if (!iG729EncoderIntfc)
+                {
+                iG729EncoderIntfc = GST_G729_ENCODER_GET_IFACE(iSource);
+                }
+            break;
+            }
+        case KMccFourCCIdILBC:
+            {
+            if (!iIlbcEncoderIntfc)
+                {
+                iIlbcEncoderIntfc = GST_ILBC_ENCODER_GET_IFACE(iSource);
+                }
+            break;
+            }
+        case KMccFourCCIdAMRNB:
+        case KMMFFourCCCodePCM16:
+            {
+            break;
+            }
+        default:
+            {
+            User::Leave(TMS_RESULT_INVALID_ARGUMENT);
+            }
+        }
+
+    if (!iSpeechEncoderConfig && iCodecID != KMMFFourCCCodePCM16)
+        {
+        iSpeechEncoderConfig = GST_SPEECH_ENCODER_CONFIG_GET_IFACE(iSource);
+        }
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::SetGain
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::SetGain(const guint gain)
+    {
+    g_object_set(G_OBJECT(iSource), "gain", gain, NULL);
+    TRACE_PRN_N1(_L("TMS->UPL: SetGain [%d]"), gain);
+    return TMS_RESULT_SUCCESS;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::GetGain
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::GetGain(guint& gain)
+    {
+    g_object_get(G_OBJECT(iSource), "gain", &gain, NULL);
+    TRACE_PRN_N1(_L("TMS->UPL: GetGain [%d]"), gain);
+    return TMS_RESULT_SUCCESS;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::GetMaxGain
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::GetMaxGain(guint& gain)
+    {
+    g_object_get(G_OBJECT(iSource), "maxgain", &gain, NULL);
+    TRACE_PRN_N1(_L("TMS->UPL: MaxGain [%d]"), gain);
+    return TMS_RESULT_SUCCESS;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::GetDataXferChunkHndl
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::GetDataXferChunkHndl(const TUint32 key, RChunk& chunk)
+    {
+    gint status = TMS_RESULT_SUCCESS;
+
+    if (iChunk.Handle())
+        {
+        if (iWriteDataXferHndlToClient && (iKey == key))
+            {
+            chunk = iChunk;
+            iWriteDataXferHndlToClient = FALSE;
+            iKey = 0;
+            }
+        else
+            {
+            status = TMS_RESULT_ILLEGAL_OPERATION;
+            }
+        }
+
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::SetIlbcCodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::SetIlbcCodecMode(const gint mode)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EReady)
+        {
+        iILBCEncodeMode = mode;
+
+        if (iIlbcEncoderIntfc && iCodecID == KMccFourCCIdILBC)
+            {
+            if (mode == TMS_ILBC_CODEC_MODE_20MS_FRAME)
+                {
+                err = iIlbcEncoderIntfc->SetEncoderMode(EIlbc20msFrame);
+                TRACE_PRN_N(_L("TMS->UPL: SetIlbcCodecMode [20ms Frame]"));
+                }
+            else if (mode == TMS_ILBC_CODEC_MODE_30MS_FRAME)
+                {
+                err = iIlbcEncoderIntfc->SetEncoderMode(EIlbc30msFrame);
+                TRACE_PRN_N(_L("TMS->UPL: SetIlbcCodecMode [30ms Frame]"));
+                }
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::GetIlbcCodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::GetIlbcCodecMode(gint& mode)
+    {
+    // not available through CIs -> return cached value
+    mode = iILBCEncodeMode;
+    TRACE_PRN_N1(_L("TMS->UPL: GetIlbcCodecMode [%d]"), mode);
+    return TMS_RESULT_SUCCESS;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::SetG711CodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::SetG711CodecMode(const gint mode)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EReady)
+        {
+        iG711EncodeMode = mode;
+
+        if (iG711EncoderIntfc && iCodecID == KMccFourCCIdG711)
+            {
+            if (mode == TMS_G711_CODEC_MODE_ALAW)
+                {
+                err = iG711EncoderIntfc->SetEncoderMode(EEncALaw);
+                TRACE_PRN_N(_L("TMS->UPL: SetG711CodecMode [ALaw]"));
+                }
+            else if (mode == TMS_G711_CODEC_MODE_MULAW)
+                {
+                err = iG711EncoderIntfc->SetEncoderMode(EEncULaw);
+                TRACE_PRN_N(_L("TMS->UPL: SetG711CodecMode [uLaw]"));
+                }
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::GetG711CodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::GetG711CodecMode(gint& mode)
+    {
+    // not available through CIs -> return cached value
+    mode = iG711EncodeMode;
+    TRACE_PRN_N1(_L("TMS->UPL: GetG711CodecMode [%d]"), mode);
+    return TMS_RESULT_SUCCESS;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::GetSupportedBitrates
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::GetSupportedBitrates(RArray<guint>& bitrates)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+    bitrates.Reset();
+
+    if (iSpeechEncoderConfig)
+        {
+        gint i = 0;
+        GList* gbitrates = NULL;
+        //        GList* walk;
+        err = iSpeechEncoderConfig->GetSupportedBitrates(&gbitrates);
+
+        //TODO: try returning GList and do not convert to RArray
+        for (; gbitrates; gbitrates = g_list_next (gbitrates))
+            {
+            //            guint br = GPOINTER_TO_INT(gbitrates->data);
+            guint br = GPOINTER_TO_UINT(gbitrates->data);
+            bitrates.Append(br);
+            TRACE_PRN_N2(_L("TMS->UPL: GetSupportedBitrates %d:[%d]"), i+1, br);
+            i++;
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::SetBitrate
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::SetBitrate(guint bitrate)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iSpeechEncoderConfig)
+        {
+        err = iSpeechEncoderConfig->SetBitrate(bitrate);
+        TRACE_PRN_N1(_L("TMS->UPL: SetBitrate [%d]"), bitrate);
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::GetBitrate
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::GetBitrate(guint& bitrate)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iSpeechEncoderConfig)
+        {
+        err = iSpeechEncoderConfig->GetBitrate(&bitrate);
+        TRACE_PRN_N1(_L("TMS->UPL: GetBitrate [%d]"), bitrate);
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::SetVad
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::SetVad(const TMSFormatType fmttype, const gboolean vad)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    switch (fmttype)
+        {
+        case TMS_FORMAT_G711:
+            {
+            if (iG711EncoderIntfc)
+                {
+                err = iG711EncoderIntfc->SetVadMode(vad);
+                TRACE_PRN_N1(_L("TMS->UPL: SetVad [%d]"), vad);
+                }
+            break;
+            }
+        case TMS_FORMAT_G729:
+            {
+            if (iG729EncoderIntfc)
+                {
+                err = iG729EncoderIntfc->SetVadMode(vad);
+                TRACE_PRN_N1(_L("TMS->UPL: SetVad [%d]"), vad);
+                }
+            break;
+            }
+        case TMS_FORMAT_ILBC:
+            {
+            if (iIlbcEncoderIntfc)
+                {
+                err = iIlbcEncoderIntfc->SetVadMode(vad);
+                TRACE_PRN_N1(_L("TMS->UPL: SetVad [%d]"), vad);
+                }
+            break;
+            }
+        case TMS_FORMAT_AMR:
+            {
+            if (iSpeechEncoderConfig)
+                {
+                err = iSpeechEncoderConfig->SetVadMode(vad);
+                TRACE_PRN_N1(_L("TMS->UPL: SetVad [%d]"), vad);
+                }
+            break;
+            }
+        default:
+            {
+            break; //TMS_RESULT_DOES_NOT_EXIST
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::GetVad
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::GetVad(const TMSFormatType fmttype, gboolean& vad)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    switch (fmttype)
+        {
+        case TMS_FORMAT_G711:
+            {
+            if (iG711EncoderIntfc)
+                {
+                err = iG711EncoderIntfc->GetVadMode(&vad);
+                TRACE_PRN_N1(_L("TMS->UPL: GetVad [%d]"), vad);
+                }
+            break;
+            }
+        case TMS_FORMAT_G729:
+            {
+            if (iG729EncoderIntfc)
+                {
+                err = iG729EncoderIntfc->GetVadMode(&vad);
+                TRACE_PRN_N1(_L("TMS->UPL: GetVad [%d]"), vad);
+                }
+            break;
+            }
+        case TMS_FORMAT_ILBC:
+            {
+            if (iIlbcEncoderIntfc)
+                {
+                err = iIlbcEncoderIntfc->GetVadMode(&vad);
+                TRACE_PRN_N1(_L("TMS->UPL: GetVad [%d]"), vad);
+                }
+            break;
+            }
+        case TMS_FORMAT_AMR:
+            {
+            if (iSpeechEncoderConfig)
+                {
+                err = iSpeechEncoderConfig->GetVadMode(&vad);
+                TRACE_PRN_N1(_L("TMS->UPL: GetVad [%d]"), vad);
+                }
+            break;
+            }
+        default:
+            {
+            break; //TMS_RESULT_DOES_NOT_EXIST
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/src/tmsipcalluplinkds.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,690 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+#include <AudioPreference.h>
+#include <mmcccodecinformation.h>
+#include <IlbcEncoderIntfc.h>
+#include <G711EncoderIntfc.h>
+#include <G729EncoderIntfc.h>
+#include <SpeechEncoderConfig.h>
+#include "tmsutility.h"
+#include "tmsipcallstream.h"
+
+using namespace TMS;
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::TMSIPUplink
+// Standard Constructor
+// -----------------------------------------------------------------------------
+//
+TMSIPUplink::TMSIPUplink()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::~TMSIPUplink
+// Standard Constructor
+// -----------------------------------------------------------------------------
+//
+TMSIPUplink::~TMSIPUplink()
+    {
+    TRACE_PRN_FN_ENT;
+
+    Stop();
+
+    delete iSpeechEncoderConfig;
+    delete iG711EncoderIntfc;
+    delete iG729EncoderIntfc;
+    delete iIlbcEncoderIntfc;
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::NewL
+// Symbian two-phase constructor
+// -----------------------------------------------------------------------------
+//
+TMSIPUplink* TMSIPUplink::NewL(const guint32 codecID,
+        const TMMFPrioritySettings priority)
+    {
+    TMSIPUplink* self = new (ELeave) TMSIPUplink();
+    CleanupStack::PushL(self);
+    self->ConstructL(codecID, priority);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::ConstructL
+// Part two of Symbian two phase construction
+// -----------------------------------------------------------------------------
+//
+void TMSIPUplink::ConstructL(const guint32 codecID,
+        const TMMFPrioritySettings priority)
+    {
+    TRACE_PRN_FN_ENT;
+
+    iCodecID = codecID;
+    iPriority = priority;
+
+    // Client must set these before querying!
+    iG711EncodeMode = TMS_G711_CODEC_MODE_ALAW;
+    iILBCEncodeMode = TMS_ILBC_CODEC_MODE_20MS_FRAME;
+
+    TRAPD(err, InitDevSoundL(EMMFStateRecording, priority));
+    if (err != TMS_RESULT_SUCCESS)
+        {
+        User::Leave(err);
+        }
+
+    iMaxBufLen = ConfigureMedia(iCodecID);
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::Start
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPUplink::Start()
+    {
+    TRACE_PRN_FN_ENT;
+
+    gint err = TMS_RESULT_ILLEGAL_OPERATION;
+    iWriteDataXferHndlToClient = FALSE;
+
+    if (iStatus == EReady && iDevSound)
+        {
+        TRAP(err, iDevSound->RecordInitL());
+        TRACE_PRN_IF_ERR(err);
+
+        if (err != TMS_RESULT_SUCCESS)
+            {
+            //TODO: Notify main thread
+            iStatus = EReady;
+            }
+#ifdef _DEBUG
+        else
+            {
+            iSamplesRecCount = 0;
+            }
+#endif
+        }
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::Stop
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPUplink::Stop()
+    {
+    TRACE_PRN_FN_ENT;
+
+    if (iStatus == EStreaming && iDevSound)
+        {
+        iDevSound->Stop();
+        iStatus = EReady;
+        }
+    else
+        {
+        //TODO: Notify main thread
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::BufferToBeEmptied
+// From MDevSoundObserver
+// -----------------------------------------------------------------------------
+//
+void TMSIPUplink::BufferToBeEmptied(CMMFBuffer* aBuffer)
+    {
+    iDevSoundBufPtr = static_cast<CMMFDataBuffer*>(aBuffer);
+    TDes8& data = iDevSoundBufPtr->Data();
+
+    iBufLen = iDevSoundBufPtr->BufferSize();
+    TRACE_PRN_N1(_L("TMS->UPL: BTBE->LEN [%d]"), iBufLen);
+
+    // Adjust/create RChunk if necessary
+    gint err = DoChunk(iBufLen, iMsgBuffer);
+
+    if (err != TMS_RESULT_SUCCESS)
+        {
+        Stop();
+        iMsgBuffer.iStatus = err;
+        }
+    else
+        {
+        // Pass buffer parameters to the client
+        iMsgBuffer.iStatus = err;
+        iMsgBuffer.iInt = iBufLen;
+
+        // Copy data over to RChunk
+        TPtr8 dataPtr(iChunk.Base(), iBufLen, iBufLen);
+        dataPtr = data;
+        iStatus = EStreaming;
+
+        // If chunk is opened, we will expect a call from the client to
+        // get chunk handle. When we get a call to copy chunk handle,
+        // check these variables and see if they match. This is not
+        // completely secure, but will provide some level of security.
+        if (iMsgBuffer.iBool == TRUE)
+            {
+            iWriteDataXferHndlToClient = TRUE;
+            iKey = iMsgBuffer.iUint32;
+            }
+        }
+
+    // Notify client there is buffer ready to be emptied
+    iMsgBuffer.iRequest = ECmdEmptyBuffer;
+    err = iMsgQueue.Send(iMsgBuffer);
+    TRACE_PRN_IF_ERR(err);
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::BufferEmptied
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPUplink::BufferEmptied()
+    {
+    //TRACE_PRN_N(_L("TMS->UPL->BE"));
+    if (iDevSound)
+        {
+        iDevSound->RecordData();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::SetCodecCi
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::SetCodecCi()
+    {
+    TRAPD(err, SetCodecCiL());
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::SetCodecCiL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSIPUplink::SetCodecCiL()
+    {
+    TRACE_PRN_FN_ENT;
+
+    switch (iCodecID)
+        {
+        case KMccFourCCIdG711:
+            {
+            if (!iG711EncoderIntfc)
+                {
+                iG711EncoderIntfc = CG711EncoderIntfc::NewL(*iDevSound);
+                }
+            break;
+            }
+        case KMccFourCCIdG729:
+            {
+            if (!iG729EncoderIntfc)
+                {
+                iG729EncoderIntfc = CG729EncoderIntfc::NewL(*iDevSound);
+                }
+            break;
+            }
+        case KMccFourCCIdILBC:
+            {
+            if (!iIlbcEncoderIntfc)
+                {
+                iIlbcEncoderIntfc = CIlbcEncoderIntfc::NewL(*iDevSound);
+                }
+            break;
+            }
+        case KMccFourCCIdAMRNB:
+        case KMMFFourCCCodePCM16:
+            {
+            break;
+            }
+        default:
+            {
+            User::Leave(TMS_RESULT_INVALID_ARGUMENT);
+            break;
+            }
+        }
+
+    if (!iSpeechEncoderConfig && iCodecID != KMMFFourCCCodePCM16)
+        {
+        iSpeechEncoderConfig = CSpeechEncoderConfig::NewL(*iDevSound);
+        }
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::SetGain
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::SetGain(const guint gain)
+    {
+    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
+    if (iDevSound)
+        {
+        iDevSound->SetGain(gain);
+        status = TMS_RESULT_SUCCESS;
+        }
+    TRACE_PRN_N1(_L("TMS->UPL: SetGain [%d]"), gain);
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::GetGain
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::GetGain(guint& gain)
+    {
+    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
+    if (iDevSound)
+        {
+        gain = iDevSound->Gain();
+        status = TMS_RESULT_SUCCESS;
+        }
+    TRACE_PRN_N1(_L("TMS->UPL: GetGain [%d]"), gain);
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::GetMaxGain
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::GetMaxGain(guint& gain)
+    {
+    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
+    if (iDevSound)
+        {
+        gain = iDevSound->MaxGain();
+        status = TMS_RESULT_SUCCESS;
+        }
+    TRACE_PRN_N1(_L("TMS->UPL: MaxGain [%d]"), gain);
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::GetDataXferChunkHndl
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::GetDataXferChunkHndl(const TUint32 key, RChunk& chunk)
+    {
+    gint status = TMS_RESULT_SUCCESS;
+
+    if (iChunk.Handle())
+        {
+        if (iWriteDataXferHndlToClient && (iKey == key))
+            {
+            chunk = iChunk;
+            iWriteDataXferHndlToClient = FALSE;
+            iKey = 0;
+            }
+        else
+            {
+            status = TMS_RESULT_ILLEGAL_OPERATION;
+            }
+        }
+
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::SetIlbcCodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::SetIlbcCodecMode(const gint mode)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EReady)
+        {
+        iILBCEncodeMode = mode;
+
+        if (iIlbcEncoderIntfc && iCodecID == KMccFourCCIdILBC)
+            {
+            if (mode == TMS_ILBC_CODEC_MODE_20MS_FRAME)
+                {
+                err = iIlbcEncoderIntfc->SetEncoderMode(
+                        CIlbcEncoderIntfc::E20msFrame);
+                TRACE_PRN_N(_L("TMS->UPL: SetIlbcCodecMode [20ms Frame]"));
+                }
+            else if (mode == TMS_ILBC_CODEC_MODE_30MS_FRAME)
+                {
+                err = iIlbcEncoderIntfc->SetEncoderMode(
+                        CIlbcEncoderIntfc::E30msFrame);
+                TRACE_PRN_N(_L("TMS->UPL: SetIlbcCodecMode [30ms Frame]"));
+                }
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::GetIlbcCodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::GetIlbcCodecMode(gint& mode)
+    {
+    // not available through CIs -> return cached value
+    mode = iILBCEncodeMode;
+    TRACE_PRN_N1(_L("TMS->UPL: GetIlbcCodecMode [%d]"), mode);
+    return TMS_RESULT_SUCCESS;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::SetG711CodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::SetG711CodecMode(const gint mode)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iStatus == EReady)
+        {
+        iG711EncodeMode = mode;
+
+        if (iG711EncoderIntfc && iCodecID == KMccFourCCIdG711)
+            {
+            if (mode == TMS_G711_CODEC_MODE_ALAW)
+                {
+                err = iG711EncoderIntfc->SetEncoderMode(
+                        CG711EncoderIntfc::EEncALaw);
+                TRACE_PRN_N(_L("TMS->UPL: SetG711CodecMode [ALaw]"));
+                }
+            else if (mode == TMS_G711_CODEC_MODE_MULAW)
+                {
+                err = iG711EncoderIntfc->SetEncoderMode(
+                        CG711EncoderIntfc::EEncULaw);
+                TRACE_PRN_N(_L("TMS->UPL: SetG711CodecMode [uLaw]"));
+                }
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::GetG711CodecMode
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::GetG711CodecMode(gint& mode)
+    {
+    // not available through CIs -> return cached value
+    mode = iG711EncodeMode;
+    TRACE_PRN_N1(_L("TMS->UPL: GetG711CodecMode [%d]"), mode);
+    return TMS_RESULT_SUCCESS;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::GetSupportedBitrates
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::GetSupportedBitrates(RArray<guint>& bitrates)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+    bitrates.Reset();
+
+    if (iSpeechEncoderConfig)
+        {
+        err = iSpeechEncoderConfig->GetSupportedBitrates(bitrates);
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::SetBitrate
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::SetBitrate(guint bitrate)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iSpeechEncoderConfig)
+        {
+        err = iSpeechEncoderConfig->SetBitrate(bitrate);
+        TRACE_PRN_N1(_L("TMS->UPL: SetBitrate [%d]"), bitrate);
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::GetBitrate
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::GetBitrate(guint& bitrate)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    if (iSpeechEncoderConfig)
+        {
+        err = iSpeechEncoderConfig->GetBitrate(bitrate);
+        TRACE_PRN_N1(_L("TMS->UPL: GetBitrate [%d]"), bitrate);
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::SetVad
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::SetVad(const TMSFormatType fmttype, const gboolean vad)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    switch (fmttype)
+        {
+        case TMS_FORMAT_G711:
+            {
+            if (iG711EncoderIntfc)
+                {
+                err = iG711EncoderIntfc->SetVadMode(vad);
+                TRACE_PRN_N1(_L("TMS->UPL: SetVad [%d]"), vad);
+                }
+            break;
+            }
+        case TMS_FORMAT_G729:
+            {
+            if (iG729EncoderIntfc)
+                {
+                err = iG729EncoderIntfc->SetVadMode(vad);
+                TRACE_PRN_N1(_L("TMS->UPL: SetVad [%d]"), vad);
+                }
+            break;
+            }
+        case TMS_FORMAT_ILBC:
+            {
+            if (iIlbcEncoderIntfc)
+                {
+                err = iIlbcEncoderIntfc->SetVadMode(vad);
+                TRACE_PRN_N1(_L("TMS->UPL: SetVad [%d]"), vad);
+                }
+            break;
+            }
+        case TMS_FORMAT_AMR:
+            {
+            if (iSpeechEncoderConfig)
+                {
+                err = iSpeechEncoderConfig->SetVadMode(vad);
+                TRACE_PRN_N1(_L("TMS->UPL: SetVad [%d]"), vad);
+                }
+            break;
+            }
+        default:
+            {
+            break; //TMS_RESULT_DOES_NOT_EXIST
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::GetVad
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSIPUplink::GetVad(const TMSFormatType fmttype, gboolean& vad)
+    {
+    gint err = TMS_RESULT_DOES_NOT_EXIST;
+
+    switch (fmttype)
+        {
+        case TMS_FORMAT_G711:
+            {
+            if (iG711EncoderIntfc)
+                {
+                err = iG711EncoderIntfc->GetVadMode(vad);
+                TRACE_PRN_N1(_L("TMS->UPL: GetVad [%d]"), vad);
+                }
+            break;
+            }
+        case TMS_FORMAT_G729:
+            {
+            if (iG729EncoderIntfc)
+                {
+                err = iG729EncoderIntfc->GetVadMode(vad);
+                TRACE_PRN_N1(_L("TMS->UPL: GetVad [%d]"), vad);
+                }
+            break;
+            }
+        case TMS_FORMAT_ILBC:
+            {
+            if (iIlbcEncoderIntfc)
+                {
+                err = iIlbcEncoderIntfc->GetVadMode(vad);
+                TRACE_PRN_N1(_L("TMS->UPL: GetVad [%d]"), vad);
+                }
+            break;
+            }
+        case TMS_FORMAT_AMR:
+            {
+            if (iSpeechEncoderConfig)
+                {
+                err = iSpeechEncoderConfig->GetVadMode(vad);
+                TRACE_PRN_N1(_L("TMS->UPL: GetVad [%d]"), vad);
+                }
+            break;
+            }
+        default:
+            {
+            break; //TMS_RESULT_DOES_NOT_EXIST
+            }
+        }
+
+    TRACE_PRN_IF_ERR(err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::InitializeComplete
+// A callback from the DevSound indicating completion of the initialization.
+// It will send config data to the D/S and configure the encoder via CI.
+// If everything goes well, the state of the thread is set EReady.
+// The initialization completion message is sent back to the main thread.
+// -----------------------------------------------------------------------------
+//
+void TMSIPUplink::InitializeComplete(TInt aError)
+    {
+    TRACE_PRN_FN_ENT;
+
+    gint err = aError;
+
+    if (err == TMS_RESULT_SUCCESS && iDevSound)
+        {
+        TMMFCapabilities conf;
+        conf = iDevSound->Config();
+        conf.iRate = EMMFSampleRate8000Hz;
+        conf.iChannels = EMMFMono;
+        TRAP(err, iDevSound->SetConfigL(conf));
+        if (err == TMS_RESULT_SUCCESS)
+            {
+            // We are ready to stream even in case of CI setting failure
+            iStatus = EReady;
+            iMaxGain = iDevSound->MaxGain();
+            }
+
+        // Init Custom Interface API to the Encoder
+        err = SetCodecCi();
+        if (err != TMS_RESULT_SUCCESS)
+            {
+            // DEBUG only
+            // Can ignore error - although encoder is not fully configured but
+            // it can still run in the default mode.
+            TRACE_PRN_IF_ERR(err);
+            }
+        }
+
+    // TODO: Notify client
+
+    TRACE_PRN_IF_ERR(err);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSIPUplink::RecordError
+// From MDevSoundObserver
+// Recording error is send to the main thread.
+// The state of recorder is rolled back to EReady.
+// -----------------------------------------------------------------------------
+//
+void TMSIPUplink::RecordError(TInt /*aError*/)
+    {
+    //TRACE_PRN_IF_ERR(aError);
+
+#ifdef _DEBUG
+    iSamplesRecCount = 0;
+#endif
+    iStatus = EReady;
+
+    // TODO: Notify client
+    }
+
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/src/tmstarsettings.cpp	Mon May 03 12:59:52 2010 +0300
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2009 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: Telephony Multimedia Service
+ *
+ */
+
+// INCLUDE FILES
+#include "tmstarsettings.h"
+#include "tmsclientserver.h"
+#include "tmsutility.h"
+
+using namespace TMS;
+
+// CONSTANTS
+_LIT_SECURITY_POLICY_PASS(KTMSServerReadPolicy);
+_LIT_SECURITY_POLICY_C1(KTMSServerWritePolicy, ECapabilityWriteUserData);
+
+// -----------------------------------------------------------------------------
+// TMSTarSettings::TMSTarSettings
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+TMSTarSettings::TMSTarSettings()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// TMSTarSettings::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void TMSTarSettings::ConstructL()
+    {
+    TRACE_PRN_FN_ENT;
+    TInt err = RProperty::Define(ERoutingPs, RProperty::EByteArray,
+            KTMSServerReadPolicy, KTMSServerWritePolicy);
+    TRACE_PRN_N1(_L("TarSetting::ConstructL err:%d"),err);
+
+    if (err != KErrAlreadyExists)
+        {
+        User::LeaveIfError(err);
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSTarSettings::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+TMSTarSettings* TMSTarSettings::NewL()
+    {
+    TMSTarSettings* self = new (ELeave) TMSTarSettings();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// Destructor
+TMSTarSettings::~TMSTarSettings()
+    {
+    TRACE_PRN_FN_ENT;
+    TInt err = RProperty::Delete(KTMSPropertyCategory, ERoutingPs);
+    TRACE_PRN_N1(_L("TarSetting::~TMSTarSettings err:%d"),err);
+    TRACE_PRN_FN_ENT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSTarSettings::SetVolume
+// -----------------------------------------------------------------------------
+//
+void TMSTarSettings::SetTar(TRoutingMsgBufPckg rountingpckg, TBool aPublish)
+    {
+    TRACE_PRN_FN_ENT;
+    //    TInt err(KErrNone);
+    if (aPublish)
+        {
+        /*err =*/RProperty::Set(KTMSPropertyCategory, ERoutingPs, rountingpckg);
+        }
+
+    //TRACE_PRN_N1(_L("TarSetting::SetTar err:%d"),err);
+    TRACE_PRN_FN_EXT;
+    }
+
+//  End of File
--- a/mmserv/tms/tmsfactory/src/tmsfactoryimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsfactory/src/tmsfactoryimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -25,7 +25,6 @@
 #include "tmsringtoneimpl.h"
 #include "tmsdtmfimpl.h"
 #include "tmsinbandtoneimpl.h"
-//#include "tmsrtpsessionimpl.h"
 
 #include "tmsutility.h"
 #include "tmsproxy.h"
@@ -69,8 +68,8 @@
         case TMS_CALL_IP:
             flag = ETrue;
             break;
-        case TMS_CALL_ECS: //from TB 10.1
-        case TMS_CALL_RTP: //from TB 10.1
+        case TMS_CALL_ECS: //from TB 10.2
+        case TMS_CALL_RTP: //from TB 10.2
         default:
             flag = EFalse;
             break;
--- a/mmserv/tms/tmsimpl/inc/tmsvolumeeffectbodyimpl.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/inc/tmsvolumeeffectbodyimpl.h	Mon May 03 12:59:52 2010 +0300
@@ -46,7 +46,7 @@
     virtual gint GetType(TMSEffectType& effecttype);
 
     // From MQueueHandlerObserver
-    virtual void QueueEvent(TInt aEventType, TInt aError, void* user_data);
+    virtual void QueueEvent(TInt aEventType, TInt aError, void* event_data);
 
     void SetParent(TMSEffect*& parent);
     void SetProxy(TMSCallProxy* aProxy, gpointer queuehandler);
--- a/mmserv/tms/tmsimpl/src/tmsamrbodyimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsamrbodyimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -74,7 +74,8 @@
         iProxy = context->CallProxy;
         iStreamType = context->StreamType;
         TMSFormatBodyImpl::SetProxy(iProxy, queuehandler);
-        ((TMSQueueHandler*) queuehandler)->AddObserver(*this, TMS_FORMAT_AMR);
+        static_cast<TMSQueueHandler*>(queuehandler)->AddObserver(*this,
+                TMS_FORMAT_AMR);
         }
     }
 
--- a/mmserv/tms/tmsimpl/src/tmsamrimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsamrimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -43,7 +43,7 @@
     if (ret == TMS_RESULT_SUCCESS)
         {
         this->iBody = bodyimpl;
-        this->iFormatBody = (TMSAMRFormatBodyImpl*) bodyimpl;
+        this->iFormatBody = static_cast<TMSAMRFormatBodyImpl*>(bodyimpl);
         }
     TRACE_PRN_FN_EXT;
     return ret;
@@ -75,7 +75,8 @@
     gint ret(TMS_RESULT_SUCCESS);
     if (this->iBody)
         {
-        ((TMSAMRFormatBodyImpl*) this->iBody)->SetProxy(context, queuehandler);
+        static_cast<TMSAMRFormatBodyImpl*>(this->iBody)->SetProxy(context,
+                queuehandler);
         }
     else
         {
--- a/mmserv/tms/tmsimpl/src/tmsbufferimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsbufferimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -61,7 +61,7 @@
     switch (buffertype)
         {
         case TMS_BUFFER_MEMORY:
-            delete (TMSMemBuffer*) (tmsbuffer);
+            delete (static_cast<TMSMemBuffer*>(tmsbuffer));
             tmsbuffer = NULL;
             ret = TMS_RESULT_SUCCESS;
             break;
--- a/mmserv/tms/tmsimpl/src/tmscallimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmscallimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -87,9 +87,9 @@
     {
     TRACE_PRN_FN_ENT;
     gint ret(TMS_RESULT_INSUFFICIENT_MEMORY);
-    delete (TMSCallImpl*) (tmscall);
+    delete (static_cast<TMSCallImpl*>(tmscall));
     tmscall = NULL;
-    TRACE_PRN_FN_EXT;    
+    TRACE_PRN_FN_EXT;
     return ret;
     }
 
--- a/mmserv/tms/tmsimpl/src/tmsclientsinkbodyimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsclientsinkbodyimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -95,10 +95,9 @@
 
     if (iProxy)
         {
-        ret = iProxy->BufferEmptied(TMS_CALL_IP,
-                                    TMS_STREAM_UPLINK,
-                                    1, //TODO: must use strm_id
-                                    *buffer);
+        //TODO: must use strm_id instead of 1
+        ret = iProxy->BufferEmptied(TMS_CALL_IP, TMS_STREAM_UPLINK, 1,
+		        *buffer);
         }
     else
         {
@@ -120,7 +119,8 @@
     iProxy = aProxy;
     if (queuehandler)
         {
-        ((TMSQueueHandler*) queuehandler)->AddObserver(*this, TMS_SINK_CLIENT);
+        static_cast<TMSQueueHandler*>(queuehandler)->AddObserver(*this,
+                TMS_SINK_CLIENT);
         }
     }
 
@@ -132,7 +132,7 @@
         switch (aEventType)
             {
             case TMS_EVENT_SINK_PROCESS_BUFFER:
-                iObserver->ProcessBuffer(((TMSBuffer*) user_data));
+                iObserver->ProcessBuffer(static_cast<TMSBuffer*>(user_data));
                 break;
             default:
                 break;
--- a/mmserv/tms/tmsimpl/src/tmsclientsinkimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsclientsinkimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -73,7 +73,8 @@
     gint ret = TMS_RESULT_SUCCESS;
     if (this->iBody)
         {
-        ((TMSClientSinkBodyImpl*) this->iBody)->SetProxy(aProxy, queuehandler);
+        static_cast<TMSClientSinkBodyImpl*>(this->iBody)->SetProxy(aProxy,
+                queuehandler);
         }
     else
         {
--- a/mmserv/tms/tmsimpl/src/tmsclientsourcebodyimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsclientsourcebodyimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -111,10 +111,8 @@
     {
     // TODO send stream attributes here
     gint ret(TMS_RESULT_SUCCESS);
-    ret = iProxy->BufferFilled(TMS_CALL_IP,
-                               TMS_STREAM_DOWNLINK,
-                               iStreamId,
-                               buffer);
+    ret = iProxy->BufferFilled(TMS_CALL_IP, TMS_STREAM_DOWNLINK, iStreamId,
+            buffer);
     return ret;
     }
 
@@ -161,7 +159,8 @@
     {
     iProxy = aProxy;
     iStreamId = strmid;
-    ((TMSQueueHandler*) queuehandler)->AddObserver(*this, TMS_SOURCE_CLIENT);
+    static_cast<TMSQueueHandler*>(queuehandler)->AddObserver(*this,
+            TMS_SOURCE_CLIENT);
     }
 
 void TMSClientSourceBodyImpl::QueueEvent(TInt aEventType, TInt aError,
@@ -172,10 +171,11 @@
         switch (aEventType)
             {
             case TMS_EVENT_SOURCE_FILL_BUFFER:
-                iObserver->FillBuffer(*((TMSBuffer*) user_data));
+                iObserver->FillBuffer(*(static_cast<TMSBuffer*>(user_data)));
                 break;
             case TMS_EVENT_SOURCE_PROCESSED_BUFFER:
-                iObserver->BufferProcessed((TMSBuffer*) user_data, aError);
+                iObserver->BufferProcessed(static_cast<TMSBuffer*>(user_data),
+                        aError);
                 break;
             default:
                 break;
--- a/mmserv/tms/tmsimpl/src/tmsclientsourceimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsclientsourceimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -72,8 +72,8 @@
         gpointer queuehandler)
     {
     gint ret = TMS_RESULT_SUCCESS;
-    ((TMSClientSourceBodyImpl*) this->iBody)->SetProxy(aProxy, strmid,
-            queuehandler);
+    static_cast<TMSClientSourceBodyImpl*>(this->iBody)->SetProxy(aProxy,
+            strmid, queuehandler);
     return ret;
     }
 
--- a/mmserv/tms/tmsimpl/src/tmsdtmfbodyimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsdtmfbodyimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -64,7 +64,10 @@
             delete self;
             self = NULL;
             }
-        self->iStreamType = streamtype;
+        else
+            {
+            self->iStreamType = streamtype;
+            }
         }
     bodyimpl = self;
     return ret;
@@ -91,8 +94,7 @@
     return ret;
     }
 
-gint TMSDTMFBodyImpl::AddObserver(TMSDTMFObserver& obsrvr,
-        gpointer user_data)
+gint TMSDTMFBodyImpl::AddObserver(TMSDTMFObserver& obsrvr, gpointer user_data)
     {
     gint ret(TMS_RESULT_SUCCESS);
     if (!iObserver)
--- a/mmserv/tms/tmsimpl/src/tmsdtmfimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsdtmfimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -77,7 +77,7 @@
     {
     gint ret(TMS_RESULT_SUCCESS);
     TRACE_PRN_FN_ENT;
-    delete (TMSDTMFImpl*) (dtmf);
+    delete (static_cast<TMSDTMFImpl*>(dtmf));
     dtmf = NULL;
     TRACE_PRN_FN_EXT;
     return ret;
@@ -88,7 +88,7 @@
     gint ret(TMS_RESULT_SUCCESS);
     if (this->iBody)
         {
-        ((TMSDTMFBodyImpl*) this->iBody)->SetParent(parent);
+        static_cast<TMSDTMFBodyImpl*>(this->iBody)->SetParent(parent);
         }
     else
         {
--- a/mmserv/tms/tmsimpl/src/tmseffectimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmseffectimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -73,19 +73,19 @@
     switch (effecttype)
         {
         case TMS_EFFECT_VOLUME:
-            delete (TMSVolumeEffectImpl*) (tmseffect);
+            delete (static_cast<TMSVolumeEffectImpl*>(tmseffect));
             tmseffect = NULL;
             break;
         case TMS_EFFECT_GAIN:
-            delete (TMSGainEffectImpl*) (tmseffect);
+            delete (static_cast<TMSGainEffectImpl*>(tmseffect));
             tmseffect = NULL;
             break;
         case TMS_EFFECT_GLOBAL_VOL:
-            delete (TMSGlobalVolEffectImpl*) (tmseffect);
+            delete (static_cast<TMSGlobalVolEffectImpl*>(tmseffect));
             tmseffect = NULL;
             break;
         case TMS_EFFECT_GLOBAL_GAIN:
-            delete (TMSGlobalGainEffectImpl*) (tmseffect);
+            delete (static_cast<TMSGlobalGainEffectImpl*>(tmseffect));
             tmseffect = NULL;
             break;
         default:
--- a/mmserv/tms/tmsimpl/src/tmsformatbodyimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsformatbodyimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -77,7 +77,7 @@
 void TMSFormatBodyImpl::SetProxy(TMSCallProxy* aProxy, gpointer /*queuehandler*/)
     {
     iProxy = aProxy;
-    //  ((TMSQueueHandler*)queuehandler)->AddObserver(*this,TMS_FORMAT_TYPE);
+    //static_cast<TMSQueueHandler*>(queuehandler)->AddObserver(*this, TMS_FORMAT_TYPE);
     }
 
 // End of file
--- a/mmserv/tms/tmsimpl/src/tmsformatimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsformatimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -78,23 +78,23 @@
     switch (fmttype)
         {
         case TMS_FORMAT_PCM:
-            delete (TMSPCMFormatImpl*) (tmsfmt);
+            delete (static_cast<TMSPCMFormatImpl*>(tmsfmt));
             tmsfmt = NULL;
             break;
         case TMS_FORMAT_AMR:
-            delete (TMSAMRFormatImpl*) (tmsfmt);
+            delete (static_cast<TMSAMRFormatImpl*>(tmsfmt));
             tmsfmt = NULL;
             break;
         case TMS_FORMAT_G711:
-            delete (TMSG711FormatImpl*) (tmsfmt);
+            delete (static_cast<TMSG711FormatImpl*>(tmsfmt));
             tmsfmt = NULL;
             break;
         case TMS_FORMAT_G729:
-            delete (TMSG729FormatImpl*) (tmsfmt);
+            delete (static_cast<TMSG729FormatImpl*>(tmsfmt));
             tmsfmt = NULL;
             break;
         case TMS_FORMAT_ILBC:
-            delete (TMSILBCFormatImpl*) (tmsfmt);
+            delete (static_cast<TMSILBCFormatImpl*>(tmsfmt));
             tmsfmt = NULL;
             break;
         default:
--- a/mmserv/tms/tmsimpl/src/tmsg711bodyimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsg711bodyimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -154,7 +154,8 @@
         iProxy = context->CallProxy;
         iStreamType = context->StreamType;
         TMSFormatBodyImpl::SetProxy(iProxy, queuehandler);
-        ((TMSQueueHandler*) queuehandler)->AddObserver(*this, TMS_FORMAT_G711);
+        static_cast<TMSQueueHandler*>(queuehandler)->AddObserver(*this,
+                TMS_FORMAT_G711);
         }
     }
 
--- a/mmserv/tms/tmsimpl/src/tmsg711impl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsg711impl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -43,7 +43,7 @@
     if (ret == TMS_RESULT_SUCCESS)
         {
         this->iBody = bodyimpl;
-        this->iFormatBody = (TMSG711FormatBodyImpl*) bodyimpl;
+        this->iFormatBody = static_cast<TMSG711FormatBodyImpl*>(bodyimpl);
         }
     TRACE_PRN_FN_EXT;
     return ret;
@@ -75,7 +75,8 @@
     gint ret(TMS_RESULT_SUCCESS);
     if (this->iBody)
         {
-        ((TMSG711FormatBodyImpl*) this->iBody)->SetProxy(context, queuehandler);
+        static_cast<TMSG711FormatBodyImpl*>(this->iBody)->SetProxy(context,
+                queuehandler);
         }
     else
         {
--- a/mmserv/tms/tmsimpl/src/tmsg729bodyimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsg729bodyimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -94,7 +94,8 @@
         iProxy = context->CallProxy;
         iStreamType = context->StreamType;
         TMSFormatBodyImpl::SetProxy(iProxy, queuehandler);
-        ((TMSQueueHandler*) queuehandler)->AddObserver(*this, TMS_FORMAT_G729);
+        static_cast<TMSQueueHandler*>(queuehandler)->AddObserver(*this,
+                TMS_FORMAT_G729);
         }
     }
 
--- a/mmserv/tms/tmsimpl/src/tmsg729impl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsg729impl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -43,7 +43,7 @@
     if (ret == TMS_RESULT_SUCCESS)
         {
         this->iBody = bodyimpl;
-        this->iFormatBody = (TMSG729FormatBodyImpl*) bodyimpl;
+        this->iFormatBody = static_cast<TMSG729FormatBodyImpl*>(bodyimpl);
         }
     TRACE_PRN_FN_EXT;
     return ret;
@@ -75,7 +75,8 @@
     gint ret(TMS_RESULT_SUCCESS);
     if (this->iBody)
         {
-        ((TMSG729FormatBodyImpl*) this->iBody)->SetProxy(context, queuehandler);
+        static_cast<TMSG729FormatBodyImpl*>(this->iBody)->SetProxy(context,
+                queuehandler);
         }
     else
         {
--- a/mmserv/tms/tmsimpl/src/tmsgaineffectbodyimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsgaineffectbodyimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -150,29 +150,21 @@
     iProxy = aProxy;
     if (queuehandler)
         {
-        ((TMSQueueHandler*) queuehandler)->AddObserver(*this, TMS_EFFECT_GAIN);
+        static_cast<TMSQueueHandler*>(queuehandler)->AddObserver(*this,
+                TMS_EFFECT_GAIN);
         }
     }
 
 void TMSGainEffectBodyImpl::QueueEvent(TInt aEventType, TInt aError,
         void* /*user_data*/)
     {
-    TMSSignalEvent event;
+    TMSSignalEvent event = {}; //all elements initialized to zeros
     event.type = TMS_EVENT_EFFECT_GAIN_CHANGED;
     event.reason = aError;
 
-    switch (aEventType)
+    if (iObserver && iParent && aEventType == TMS_EVENT_EFFECT_GAIN_CHANGED)
         {
-        case TMS_EVENT_EFFECT_GAIN_CHANGED:
-            {
-            if (iObserver && iParent)
-                {
-                iObserver->EffectsEvent(iParent, event);
-                }
-            }
-            break;
-        default:
-            break;
+        iObserver->EffectsEvent(*iParent, event);
         }
     }
 
--- a/mmserv/tms/tmsimpl/src/tmsgaineffectimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsgaineffectimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -77,7 +77,8 @@
     gint ret(TMS_RESULT_SUCCESS);
     if (this->iBody)
         {
-        ((TMSGainEffectBodyImpl*) this->iBody)->SetProxy(aProxy, queuehandler);
+        static_cast<TMSGainEffectBodyImpl*>(this->iBody)->SetProxy(aProxy,
+                queuehandler);
         }
     else
         {
@@ -91,7 +92,7 @@
     gint ret(TMS_RESULT_SUCCESS);
     if (this->iBody)
         {
-        ((TMSGainEffectBodyImpl*) this->iBody)->SetParent(parent);
+        static_cast<TMSGainEffectBodyImpl*>(this->iBody)->SetParent(parent);
         }
     else
         {
--- a/mmserv/tms/tmsimpl/src/tmsglobalgaineffectimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsglobalgaineffectimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -77,7 +77,8 @@
     gint ret(TMS_RESULT_SUCCESS);
     if (this->iBody)
         {
-        ((TMSGlobalGainEffectBodyImpl*) this->iBody)->SetParent(parent);
+        static_cast<TMSGlobalGainEffectBodyImpl*>(this->iBody)->SetParent(
+                parent);
         }
     else
         {
--- a/mmserv/tms/tmsimpl/src/tmsglobalroutingimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsglobalroutingimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -76,7 +76,7 @@
     {
     gint ret(TMS_RESULT_SUCCESS);
     TRACE_PRN_FN_ENT;
-    delete (TMSGlobalRoutingImpl*) globrouting;
+    delete (static_cast<TMSGlobalRoutingImpl*>(globrouting));
     globrouting = NULL;
     TRACE_PRN_FN_EXT;
     return ret;
@@ -87,7 +87,7 @@
     gint ret(TMS_RESULT_SUCCESS);
     if (this->iBody)
         {
-        ((TMSGlobalRoutingBodyImpl*) this->iBody)->SetParent(parent);
+        static_cast<TMSGlobalRoutingBodyImpl*>(this->iBody)->SetParent(parent);
         }
     else
         {
--- a/mmserv/tms/tmsimpl/src/tmsglobalvoleffectimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsglobalvoleffectimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -77,7 +77,8 @@
     gint ret(TMS_RESULT_SUCCESS);
     if (this->iBody)
         {
-        ((TMSGlobalVolEffectBodyImpl*) this->iBody)->SetParent(parent);
+        static_cast<TMSGlobalVolEffectBodyImpl*>(this->iBody)->SetParent(
+                parent);
         }
     else
         {
--- a/mmserv/tms/tmsimpl/src/tmsilbcbodyimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsilbcbodyimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -134,7 +134,8 @@
         iProxy = context->CallProxy;
         iStreamType = context->StreamType;
         TMSFormatBodyImpl::SetProxy(iProxy, queuehandler);
-        ((TMSQueueHandler*) queuehandler)->AddObserver(*this, TMS_FORMAT_ILBC);
+        static_cast<TMSQueueHandler*>(queuehandler)->AddObserver(*this,
+                TMS_FORMAT_ILBC);
         }
     }
 
--- a/mmserv/tms/tmsimpl/src/tmsilbcimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsilbcimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -43,7 +43,7 @@
     if (ret == TMS_RESULT_SUCCESS)
         {
         this->iBody = bodyimpl;
-        this->iFormatBody = (TMSILBCFormatBodyImpl*) bodyimpl;
+        this->iFormatBody = static_cast<TMSILBCFormatBodyImpl*>(bodyimpl);
         }
     TRACE_PRN_FN_EXT;
     return ret;
@@ -75,7 +75,8 @@
     gint ret(TMS_RESULT_SUCCESS);
     if (this->iBody)
         {
-        ((TMSILBCFormatBodyImpl*) this->iBody)->SetProxy(context, queuehandler);
+        static_cast<TMSILBCFormatBodyImpl*>(this->iBody)->SetProxy(context,
+                queuehandler);
         }
     else
         {
--- a/mmserv/tms/tmsimpl/src/tmsinbandtoneimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsinbandtoneimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -76,7 +76,7 @@
     {
     gint ret(TMS_RESULT_SUCCESS);
     TRACE_PRN_FN_ENT;
-    delete (TMSInbandToneImpl*) (inbandtone);
+    delete (static_cast<TMSInbandToneImpl*>(inbandtone));
     inbandtone = NULL;
     TRACE_PRN_FN_EXT;
     return ret;
@@ -87,7 +87,7 @@
     gint ret(TMS_RESULT_SUCCESS);
     if (this->iBody)
         {
-        ((TMSInbandToneBodyImpl*) this->iBody)->SetParent(parent);
+        static_cast<TMSInbandToneBodyImpl*>(this->iBody)->SetParent(parent);
         }
     else
         {
--- a/mmserv/tms/tmsimpl/src/tmsmembuffer.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsmembuffer.cpp	Mon May 03 12:59:52 2010 +0300
@@ -74,7 +74,7 @@
     {
     gint ret(TMS_RESULT_SUCCESS);
     TRACE_PRN_FN_ENT;
-    iDataPtr = (guint8*) malloc(size);
+    iDataPtr = static_cast<guint8*>(malloc(size));
     if (!iDataPtr)
         {
         ret = TMS_RESULT_INSUFFICIENT_MEMORY;
--- a/mmserv/tms/tmsimpl/src/tmsmicsourcebodyimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsmicsourcebodyimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -64,7 +64,7 @@
         gpointer /*queuehandler*/)
     {
     iProxy = aProxy;
-    //((TMSQueueHandler*) queuehandler)->AddObserver(*this, TMS_SOURCE_MIC);
+    //static_cast<TMSQueueHandler*>(queuehandler)->AddObserver(*this, TMS_SOURCE_MIC);
     }
 
 // End of file
--- a/mmserv/tms/tmsimpl/src/tmsmicsourceimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsmicsourceimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -72,7 +72,7 @@
         gpointer /*queuehandler*/)
     {
     gint ret = TMS_RESULT_SUCCESS;
-//   ((TMSMicSourceBodyImpl*) this->iBody)->SetProxy(aProxy, queuehandler);
+    //static_cast<TMSMicSourceBodyImpl*>(this->iBody)->SetProxy(aProxy, queuehandler);
     return ret;
     }
 
--- a/mmserv/tms/tmsimpl/src/tmsmodemsinkbodyimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsmodemsinkbodyimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -64,7 +64,7 @@
         gpointer /*queuehandler*/)
     {
     iProxy = aProxy;
-    //((TMSQueueHandler*) queuehandler)->AddObserver(*this, TMS_SINK_MODEM);
+    //static_cast<TMSQueueHandler*>(queuehandler)->AddObserver(*this, TMS_SINK_MODEM);
     }
 
 // End of file
--- a/mmserv/tms/tmsimpl/src/tmsmodemsinkimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsmodemsinkimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -71,7 +71,7 @@
         gpointer /*queuehandler*/)
     {
     gint ret = TMS_RESULT_SUCCESS;
-//   ((TMSModemSinkBodyImpl*) this->iBody)->SetProxy(aProxy, queuehandler);
+    //static_cast<TMSModemSinkBodyImpl*>(this->iBody)->SetProxy(aProxy, queuehandler);
     return ret;
     }
 
--- a/mmserv/tms/tmsimpl/src/tmsmodemsourcebodyimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsmodemsourcebodyimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -64,7 +64,7 @@
         gpointer /*queuehandler*/)
     {
     iProxy = aProxy;
-    //((TMSQueueHandler*) queuehandler)->AddObserver(*this, TMS_SOURCE_MODEM);
+    //static_cast<TMSQueueHandler*>(queuehandler)->AddObserver(*this, TMS_SOURCE_MODEM);
     }
 
 // End of file
--- a/mmserv/tms/tmsimpl/src/tmsmodemsourceimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsmodemsourceimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -71,7 +71,7 @@
         gpointer /*queuehandler*/)
     {
     gint ret = TMS_RESULT_SUCCESS;
-//   ((TMSModemSourceBodyImpl*) this->iBody)->SetProxy(aProxy, queuehandler);
+    //static_cast<TMSModemSourceBodyImpl*>(this->iBody)->SetProxy(aProxy, queuehandler);
     return ret;
     }
 
--- a/mmserv/tms/tmsimpl/src/tmspcmbodyimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmspcmbodyimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -74,7 +74,8 @@
         iProxy = context->CallProxy;
         iStreamType = context->StreamType;
         TMSFormatBodyImpl::SetProxy(iProxy, queuehandler);
-        ((TMSQueueHandler*) queuehandler)->AddObserver(*this, TMS_FORMAT_PCM);
+        static_cast<TMSQueueHandler*>(queuehandler)->AddObserver(*this,
+                TMS_FORMAT_PCM);
         }
     }
 
--- a/mmserv/tms/tmsimpl/src/tmspcmimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmspcmimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -44,7 +44,7 @@
     if (ret == TMS_RESULT_SUCCESS)
         {
         this->iBody = bodyimpl;
-        this->iFormatBody = (TMSPCMFormatBodyImpl*) bodyimpl;
+        this->iFormatBody = static_cast<TMSPCMFormatBodyImpl*>(bodyimpl);
         }
     TRACE_PRN_FN_EXT;
     return ret;
@@ -76,7 +76,8 @@
     gint ret(TMS_RESULT_SUCCESS);
     if (this->iBody)
         {
-        ((TMSPCMFormatBodyImpl*) this->iBody)->SetProxy(context, queuehandler);
+        static_cast<TMSPCMFormatBodyImpl*>(this->iBody)->SetProxy(context,
+                queuehandler);
         }
     else
         {
--- a/mmserv/tms/tmsimpl/src/tmsqueuehandler.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsqueuehandler.cpp	Mon May 03 12:59:52 2010 +0300
@@ -301,7 +301,7 @@
         if (!iBuffer)
             {
             TMSMemBuffer::Create((guint) aBufLen,
-                    const_cast<guint8*> (iChunkDataPtr.Ptr()), iBuffer);
+                    const_cast<guint8*>(iChunkDataPtr.Ptr()), iBuffer);
             }
         iBuffer->SetDataSize(aBufLen);
 
@@ -362,7 +362,7 @@
         if (!iBuffer)
             {
             TMSMemBuffer::Create((guint) aBufLen,
-                    const_cast<guint8*> (iChunkDataPtr.Ptr()), iBuffer);
+                    const_cast<guint8*>(iChunkDataPtr.Ptr()), iBuffer);
             }
         iBuffer->SetDataSize(aBufLen);
         gint index = iClientList.Find(TMS_SINK_CLIENT);
--- a/mmserv/tms/tmsimpl/src/tmsringtoneimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsringtoneimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -116,7 +116,7 @@
     {
     TRACE_PRN_FN_ENT;
     gint ret(TMS_RESULT_SUCCESS);
-    delete (TMSRingToneImpl*) (rt);
+    delete (static_cast<TMSRingToneImpl*>(rt));
     rt = NULL;
     TRACE_PRN_FN_EXT;
     return ret;
@@ -127,7 +127,7 @@
     gint ret(TMS_RESULT_SUCCESS);
     if (this->iBody)
         {
-        ((TMSRingToneBodyImpl*) this->iBody)->SetParent(parent);
+        static_cast<TMSRingToneBodyImpl*>(this->iBody)->SetParent(parent);
         }
     else
         {
--- a/mmserv/tms/tmsimpl/src/tmssinkimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmssinkimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -69,21 +69,21 @@
         {
         case TMS_SINK_CLIENT:
             {
-            delete (TMSClientSinkImpl*) (tmssink);
+            delete (static_cast<TMSClientSinkImpl*>(tmssink));
             tmssink = NULL;
             ret = TMS_RESULT_SUCCESS;
             }
             break;
         case TMS_SINK_MODEM:
             {
-            delete (TMSModemSinkImpl*) (tmssink);
+            delete (static_cast<TMSModemSinkImpl*>(tmssink));
             tmssink = NULL;
             ret = TMS_RESULT_SUCCESS;
             }
             break;
         case TMS_SINK_SPEAKER:
             {
-            delete (TMSSpeakerSinkImpl*) (tmssink);
+            delete (static_cast<TMSSpeakerSinkImpl*>(tmssink));
             tmssink = NULL;
             ret = TMS_RESULT_SUCCESS;
             }
--- a/mmserv/tms/tmsimpl/src/tmssourceimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmssourceimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -69,20 +69,20 @@
     switch (sourcetype)
         {
         case TMS_SOURCE_CLIENT:
-            delete (TMSClientSourceImpl*) (tmssource);
+            delete (static_cast<TMSClientSourceImpl*>(tmssource));
             tmssource = NULL;
             ret = TMS_RESULT_SUCCESS;
             break;
         case TMS_SOURCE_MODEM:
             {
-            delete (TMSModemSourceImpl*) (tmssource);
+            delete (static_cast<TMSModemSourceImpl*>(tmssource));
             tmssource = NULL;
             ret = TMS_RESULT_SUCCESS;
             }
             break;
         case TMS_SOURCE_MIC:
             {
-            delete (TMSMicSourceImpl*) (tmssource);
+            delete (static_cast<TMSMicSourceImpl*>(tmssource));
             tmssource = NULL;
             ret = TMS_RESULT_SUCCESS;
             }
--- a/mmserv/tms/tmsimpl/src/tmsspeakersinkbodyimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsspeakersinkbodyimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -64,7 +64,7 @@
         gpointer /*queuehandler*/)
     {
     iProxy = aProxy;
-    //((TMSQueueHandler*) queuehandler)->AddObserver(*this, TMS_SINK_SPEAKER);
+    //static_cast<TMSQueueHandler*>(queuehandler)->AddObserver(*this, TMS_SINK_SPEAKER);
     }
 
 // End of file
--- a/mmserv/tms/tmsimpl/src/tmsspeakersinkimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsspeakersinkimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -68,7 +68,7 @@
         gpointer /*queuehandler*/)
     {
     gint ret = TMS_RESULT_SUCCESS;
-    //((TMSSpeakerSinkBodyImpl*) this->iBody)->SetProxy(aProxy, queuehandler);
+    //static_cast<TMSSpeakerSinkBodyImpl*>(this->iBody)->SetProxy(aProxy, queuehandler);
     return ret;
     }
 
--- a/mmserv/tms/tmsimpl/src/tmsstreambodyimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsstreambodyimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -342,7 +342,7 @@
 
     RET_REASON_IF_ERR(ret);
 
-    TMSFormatType fmttype;
+    TMSFormatType fmttype(TMS_FORMAT_PCM);
     if (!iFormat && iContext.CallType == TMS_CALL_IP)
         {
         return TMS_RESULT_FORMAT_TYPE_UNSPECIFIED;
@@ -373,12 +373,13 @@
             switch (effecttype)
                 {
                 case TMS_EFFECT_GAIN:
-                    ((TMSGainEffectImpl*) iEffectsList[i])->SetProxy(
+                    static_cast<TMSGainEffectImpl*>(iEffectsList[i])->SetProxy(
                             iContext.CallProxy, iMsgQHandler);
                     break;
                 case TMS_EFFECT_VOLUME:
-                    ((TMSVolumeEffectImpl*) iEffectsList[i])->SetProxy(
-                            iContext.CallProxy, iMsgQHandler);
+                    static_cast<TMSVolumeEffectImpl*>
+                        (iEffectsList[i])->SetProxy(iContext.CallProxy,
+                        iMsgQHandler);
                     break;
                 default:
                     ret = TMS_RESULT_INVALID_ARGUMENT;
@@ -394,23 +395,23 @@
         switch (fmttype)
             {
             case TMS_FORMAT_PCM:
-                ((TMSPCMFormatImpl*) iFormat)->SetProxy(&iContext,
+                static_cast<TMSPCMFormatImpl*>(iFormat)->SetProxy(&iContext,
                         iMsgQHandler);
                 break;
             case TMS_FORMAT_AMR:
-                ((TMSAMRFormatImpl*) iFormat)->SetProxy(&iContext,
+                static_cast<TMSAMRFormatImpl*>(iFormat)->SetProxy(&iContext,
                         iMsgQHandler);
                 break;
             case TMS_FORMAT_G711:
-                ((TMSG711FormatImpl*) iFormat)->SetProxy(&iContext,
+                static_cast<TMSG711FormatImpl*>(iFormat)->SetProxy(&iContext,
                         iMsgQHandler);
                 break;
             case TMS_FORMAT_G729:
-                ((TMSG729FormatImpl*) iFormat)->SetProxy(&iContext,
+                static_cast<TMSG729FormatImpl*>(iFormat)->SetProxy(&iContext,
                         iMsgQHandler);
                 break;
             case TMS_FORMAT_ILBC:
-                ((TMSILBCFormatImpl*) iFormat)->SetProxy(&iContext,
+                static_cast<TMSILBCFormatImpl*>(iFormat)->SetProxy(&iContext,
                         iMsgQHandler);
                 break;
             default:
@@ -428,7 +429,7 @@
             switch (sinkType)
                 {
                 case TMS_SINK_CLIENT:
-                    ((TMSClientSinkImpl*) iSink)->SetProxy(
+                    static_cast<TMSClientSinkImpl*>(iSink)->SetProxy(
                             iContext.CallProxy, iMsgQHandler);
                     break;
                 case TMS_SINK_MODEM:
@@ -453,7 +454,7 @@
             switch (sourceType)
                 {
                 case TMS_SOURCE_CLIENT:
-                    ((TMSClientSourceImpl*) iSource)->SetProxy(
+                    static_cast<TMSClientSourceImpl*>(iSource)->SetProxy(
                             iContext.CallProxy, iContext.StreamId,
                             iMsgQHandler);
                     break;
@@ -717,7 +718,7 @@
 void TMSStreamBodyImpl::QueueEvent(TInt aEventType, TInt aError,
         void* user_data)
     {
-    TMSSignalEvent event;
+    TMSSignalEvent event = {}; //all elements initialized to zeros
     event.reason = aError;
     event.user_data = user_data;
     iStreamState = aEventType;
@@ -734,7 +735,7 @@
             if (iObserver)
                 {
                 event.type = TMS_EVENT_STREAM_STATE_CHANGED;
-                iObserver->TMSStreamEvent(iParent, event);
+                iObserver->TMSStreamEvent(*iParent, event);
                 }
             break;
             }
--- a/mmserv/tms/tmsimpl/src/tmsstreamimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsstreamimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -71,7 +71,7 @@
     {
     TRACE_PRN_FN_ENT;
     gint ret(TMS_RESULT_SUCCESS);
-    delete (TMSStreamImpl*) (strm);
+    delete (static_cast<TMSStreamImpl*>(strm));
     strm = NULL;
     TRACE_PRN_FN_EXT;
     return ret;
--- a/mmserv/tms/tmsimpl/src/tmsvolumeeffectbodyimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsvolumeeffectbodyimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -150,30 +150,27 @@
     iProxy = aProxy;
     if (queuehandler)
         {
-        ((TMSQueueHandler*) queuehandler)->AddObserver(*this,
+        static_cast<TMSQueueHandler*>(queuehandler)->AddObserver(*this,
                 TMS_EFFECT_VOLUME);
         }
     }
 
 void TMSVolumeEffectBodyImpl::QueueEvent(TInt aEventType, TInt aError,
-        void* /*user_data*/)
+        void* event_data)
     {
-    TMSSignalEvent event;
+    TMSSignalEvent event = {}; //all elements initialized to zeros
+    event.user_data = NULL; //use only to return data passed in by the user
     event.type = TMS_EVENT_EFFECT_VOL_CHANGED;
     event.reason = aError;
 
-    switch (aEventType)
+    if (event_data)
         {
-        case TMS_EVENT_EFFECT_VOL_CHANGED:
-            {
-            if (iObserver && iParent)
-                {
-                iObserver->EffectsEvent(iParent, event);
-                }
-            }
-            break;
-        default:
-            break;
+        event.event_data = static_cast<gpointer>(event_data);
+        }
+
+    if (iObserver && iParent && aEventType == TMS_EVENT_EFFECT_VOL_CHANGED)
+        {
+        iObserver->EffectsEvent(*iParent, event);
         }
     }
 
--- a/mmserv/tms/tmsimpl/src/tmsvolumeeffectimpl.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsimpl/src/tmsvolumeeffectimpl.cpp	Mon May 03 12:59:52 2010 +0300
@@ -77,7 +77,7 @@
     gint ret(TMS_RESULT_SUCCESS);
     if (this->iBody)
         {
-        ((TMSVolumeEffectBodyImpl*) this->iBody)->SetProxy(aProxy,
+        static_cast<TMSVolumeEffectBodyImpl*>(this->iBody)->SetProxy(aProxy,
                 queuehandler);
         }
     else
@@ -92,7 +92,7 @@
     gint ret(TMS_RESULT_SUCCESS);
     if (this->iBody)
         {
-        ((TMSVolumeEffectBodyImpl*) this->iBody)->SetParent(parent);
+        static_cast<TMSVolumeEffectBodyImpl*>(this->iBody)->SetParent(parent);
         }
     else
         {
--- a/mmserv/tms/tmsproxy/src/tmsproxy.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsproxy/src/tmsproxy.cpp	Mon May 03 12:59:52 2010 +0300
@@ -655,24 +655,28 @@
         {
         case EMsgQueueGlobalVolumeType:
         case EMsgQueueGlobalGainType:
-            status = AddGlobalEffectObserver((*(TMSEffectObserver*) obsrv),
-                    (*(TMSEffect*) parent), clientid);
-            break;
+            status = AddGlobalEffectObserver(
+                    *(static_cast<TMSEffectObserver*>(obsrv)),
+                    *(static_cast<TMSEffect*>(parent)), clientid);
+			break;
         case EMsgQueueGlobalRoutingType:
-            status = AddRoutingObserver((*(TMSGlobalRoutingObserver*) obsrv),
-                    (*(TMSGlobalRouting*) parent), clientid);
+            status = AddRoutingObserver(
+                    *(static_cast<TMSGlobalRoutingObserver*>(obsrv)),
+                    *(static_cast<TMSGlobalRouting*>(parent)), clientid);
             break;
         case EMsgQueueRingtoneType:
-            status = AddRingToneObserver((*(TMSRingToneObserver*) obsrv),
-                    (*(TMSRingTone*) parent), clientid);
+            status = AddRingToneObserver(
+                    *(static_cast<TMSRingToneObserver*>(obsrv)),
+                    *(static_cast<TMSRingTone*>(parent)), clientid);
             break;
         case EMsgQueueDTMFType:
-            status = AddDTMFObserver((*(TMSDTMFObserver*) obsrv),
-                    (*(TMSDTMF*) parent), clientid);
+            status = AddDTMFObserver(*(static_cast<TMSDTMFObserver*>(obsrv)),
+                    *(static_cast<TMSDTMF*>(parent)), clientid);
             break;
         case EMsgQueueInbandToneType:
-            status = AddInbandToneObserver((*(TMSInbandToneObserver*) obsrv),
-                    (*(TMSInbandTone*) parent), clientid);
+            status = AddInbandToneObserver(
+                    *(static_cast<TMSInbandToneObserver*>(obsrv)),
+                    *(static_cast<TMSInbandTone*>(parent)), clientid);
             break;
         default:
             status = TMS_RESULT_INVALID_ARGUMENT;
@@ -694,21 +698,24 @@
         {
         case EMsgQueueGlobalVolumeType:
         case EMsgQueueGlobalGainType:
-            status = RemoveGlobalEffectObserver((*(TMSEffectObserver*) obsrv));
+            status = RemoveGlobalEffectObserver(
+                    *(static_cast<TMSEffectObserver*>(obsrv)));
             break;
         case EMsgQueueGlobalRoutingType:
-            status = RemoveRoutingObserver((*(TMSGlobalRoutingObserver*)
-                    obsrv));
+            status = RemoveRoutingObserver(
+                    *(static_cast<TMSGlobalRoutingObserver*>(obsrv)));
             break;
         case EMsgQueueRingtoneType:
-            status = RemoveRingToneObserver((*(TMSRingToneObserver*) obsrv));
+            status = RemoveRingToneObserver(
+                    *(static_cast<TMSRingToneObserver*>(obsrv)));
             break;
         case EMsgQueueDTMFType:
-            status = RemoveDTMFObserver((*(TMSDTMFObserver*) obsrv));
+            status = RemoveDTMFObserver(
+                    *(static_cast<TMSDTMFObserver*>(obsrv)));
             break;
         case EMsgQueueInbandToneType:
-            status = RemoveInbandToneObserver((*(TMSInbandToneObserver*)
-                    obsrv));
+            status = RemoveInbandToneObserver(
+                    *(static_cast<TMSInbandToneObserver*>(obsrv)));
             break;
         default:
             status = TMS_RESULT_INVALID_ARGUMENT;
@@ -954,21 +961,33 @@
 // Call from QueueHandler as a result of TMS Server callback.
 // ---------------------------------------------------------------------------
 //
-void TMSProxy::QueueEvent(gint aEventType, gint aError, void* user_data)
+void TMSProxy::QueueEvent(gint aEventType, gint aError, void* event_data)
     {
-    TMSSignalEvent event;
+    TMSSignalEvent event = {}; //all elements initialized to zeros
     event.type = aEventType;
     event.reason = aError;
-    event.user_data = user_data;
+    event.user_data = NULL; //use only to return data passed in by the user
 
     switch (aEventType)
         {
         case TMS_EVENT_EFFECT_VOL_CHANGED:
+            {
+            if (event_data)
+                {
+                event.event_data = static_cast<gpointer>(event_data);
+                }
+            for (gint i = 0; i < iEffectsObsrvrList.Count(); i++)
+                {
+                iEffectsObsrvrList[i]->EffectsEvent(*iEffectsParentList[i],
+                        event);
+                }
+            break;
+            }
         case TMS_EVENT_EFFECT_GAIN_CHANGED:
             {
             for (gint i = 0; i < iEffectsObsrvrList.Count(); i++)
                 {
-                iEffectsObsrvrList[i]->EffectsEvent(iEffectsParentList[i],
+                iEffectsObsrvrList[i]->EffectsEvent(*iEffectsParentList[i],
                         event);
                 }
             break;
@@ -978,14 +997,14 @@
         case TMS_EVENT_ROUTING_SET_OUTPUT_COMPLETE:
             {
             guint output(0);
-            if (user_data != NULL)
+            if (event_data != NULL)
                 {
-                output = *((guint*) user_data);
+                output = *(static_cast<guint*>(event_data));
                 }
             for (gint i = 0; i < iRoutingObsrvrList.Count(); i++)
                 {
                 iRoutingObsrvrList[i]->GlobalRoutingEvent(
-                        iRoutingParentList[i], event, output);
+                        *iRoutingParentList[i], event, output);
                 }
             break;
             }
@@ -995,7 +1014,7 @@
             {
             for (gint i = 0; i < iRingToneObsrvrList.Count(); i++)
                 {
-                iRingToneObsrvrList[i]->RingtoneEvent(iRingToneParentList[i],
+                iRingToneObsrvrList[i]->RingtoneEvent(*iRingToneParentList[i],
                         event);
                 }
             break;
@@ -1005,7 +1024,7 @@
             {
             for (gint i = 0; i < iDTMFObsrvrList.Count(); i++)
                 {
-                iDTMFObsrvrList[i]->DTMFEvent(iDTMFParentList[i], event);
+                iDTMFObsrvrList[i]->DTMFEvent(*iDTMFParentList[i], event);
                 }
             break;
             }
@@ -1015,7 +1034,7 @@
             for (gint i = 0; i < iInbandToneObsrvrList.Count(); i++)
                 {
                 iInbandToneObsrvrList[i]->InbandToneEvent(
-                        iInbandToneParentList[i], event);
+                        *iInbandToneParentList[i], event);
                 }
             break;
             }
--- a/mmserv/tms/tmsproxy/src/tmsqueuehandler.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsproxy/src/tmsqueuehandler.cpp	Mon May 03 12:59:52 2010 +0300
@@ -178,7 +178,11 @@
         switch (msgBuf.iRequest)
             {
             case ECmdGlobalEffectChange:
-                iObserver->QueueEvent(msgBuf.iInt, msgBuf.iStatus, NULL);
+                TMSVolumeEventChangeData event;
+                event.level = msgBuf.iUint;
+                event.output = static_cast<TMSAudioOutput>(msgBuf.iInt2);
+                event.output_changed = msgBuf.iBool;
+                iObserver->QueueEvent(msgBuf.iInt, msgBuf.iStatus, &event);
                 break;
             case ECmdGlobalRoutingChange:
                 iObserver->QueueEvent(msgBuf.iInt, msgBuf.iStatus,
--- a/mmserv/tms/tmsserver/inc/tmsserversession.h	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsserver/inc/tmsserversession.h	Mon May 03 12:59:52 2010 +0300
@@ -45,7 +45,9 @@
     // Destructor
     ~TMSServerSession();
 
-    void HandleGlobalEffectChange(TInt globalevent);
+    void HandleGlobalEffectChange(TInt globalevent, TInt level,
+            TBool output_change = EFalse,
+            TMSAudioOutput output = TMS_AUDIO_OUTPUT_PRIVATE);
     void HandleRoutingChange(TRoutingMsgBufPckg routinginfo);
 
     // Send notifications to clients
--- a/mmserv/tms/tmsserver/src/tmscenrepaudiohandler.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsserver/src/tmscenrepaudiohandler.cpp	Mon May 03 12:59:52 2010 +0300
@@ -75,17 +75,23 @@
         {
         err = iMuteListener->Get(muteVal);
         }
-    if (iTMSSer && err == KErrNone && muteVal == EPSTelMicMuteOn)
+    if (err == KErrNone && muteVal == EPSTelMicMuteOn)
         {
 #if !defined(__WINSCW__)
-        iTMSSer->SetGain(NULL, 0);
+        if (iTMSSer)
+            {
+            iTMSSer->SetGain(NULL, 0);
+            }
 #endif //__WINSCW__
         }
     else if (err == KErrNone)
         {
 #if !defined(__WINSCW__)
         // Change when gain is really changed
-        iTMSSer->SetGain(NULL, KDefaultMaxGain);
+        if (iTMSSer)
+            {
+            iTMSSer->SetGain(NULL, KDefaultMaxGain);
+            }
 #endif //__WINSCW__
         }
     }
--- a/mmserv/tms/tmsserver/src/tmsrtaudiohdlr.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsserver/src/tmsrtaudiohdlr.cpp	Mon May 03 12:59:52 2010 +0300
@@ -99,11 +99,15 @@
     iTtsPlayer = NULL;
     iTtsPlayer = CMdaAudioPlayerUtility::NewL(*this, aPriority, aPreference);
 
+    __ASSERT_DEBUG(iTtsPlayer, PANIC(TMS_RESULT_UNINITIALIZED_OBJECT));
+
     delete iTtsText;
     iTtsText = NULL;
     // UTF-8 strings can take up to 4 bytes per character
     iTtsText = HBufC8::NewL(aTtsText.Length() << KUTF8Multiply);
 
+    __ASSERT_DEBUG(iTtsText, PANIC(TMS_RESULT_UNINITIALIZED_OBJECT));
+
     TPtr8 refText = iTtsText->Des();
     User::LeaveIfError(CnvUtfConverter::ConvertFromUnicodeToUtf8(refText,
             aTtsText));
@@ -534,6 +538,7 @@
     TInt rampTime(0);
     if (iFormat == EFormatTone)
         {
+        __ASSERT_DEBUG(iTonePlayer, PANIC(TMS_RESULT_UNINITIALIZED_OBJECT));
         switch (iRingType)
             {
             case ETypeRinging:
@@ -604,6 +609,7 @@
         }
     else if (iFormat == EFormatTts)
         {
+        __ASSERT_DEBUG(iTtsPlayer, PANIC(TMS_RESULT_UNINITIALIZED_OBJECT));
         switch (iRingType)
             {
             case ETypeRinging:
@@ -628,6 +634,7 @@
         }
     else
         {
+        __ASSERT_DEBUG(iSamplePlayer, PANIC(TMS_RESULT_UNINITIALIZED_OBJECT));
         switch (iRingType)
             {
             case ETypeRinging:
@@ -707,20 +714,29 @@
     // Check that volume is in a valid range.
     TInt volume = aVolume < 1 ? 1 : aVolume;
 
-    if (iFormat == EFormatTone && iTonePlayer)
+    if (iFormat == EFormatTone)
         {
-        iTonePlayer->SetVolumeRamp(TTimeIntervalMicroSeconds(aRamptime));
-        iTonePlayer->SetVolume(ConvertVolume(volume));
+        if (iTonePlayer)
+            {
+            iTonePlayer->SetVolumeRamp(TTimeIntervalMicroSeconds(aRamptime));
+            iTonePlayer->SetVolume(ConvertVolume(volume));
+            }
         }
-    else if (iFormat == EFormatTts && iTtsPlayer)
+    else if (iFormat == EFormatTts)
         {
-        iTtsPlayer->SetVolumeRamp(TTimeIntervalMicroSeconds(aRamptime));
-        iTtsPlayer->SetVolume(ConvertVolume(volume));
+        if (iTtsPlayer)
+            {
+            iTtsPlayer->SetVolumeRamp(TTimeIntervalMicroSeconds(aRamptime));
+            iTtsPlayer->SetVolume(ConvertVolume(volume));
+            }
         }
     else
         {
-        iSamplePlayer->SetVolumeRamp(TTimeIntervalMicroSeconds(aRamptime));
-        iSamplePlayer->SetVolume(ConvertVolume(volume));
+        if (iSamplePlayer)
+            {
+            iSamplePlayer->SetVolumeRamp(TTimeIntervalMicroSeconds(aRamptime));
+            iSamplePlayer->SetVolume(ConvertVolume(volume));
+            }
         }
     }
 
@@ -734,15 +750,24 @@
 
     if (iFormat == EFormatTone)
         {
-        result = iTonePlayer->MaxVolume() * aVolume / KMaxVolumeLevel;
+        if (iTonePlayer)
+            {
+            result = iTonePlayer->MaxVolume() * aVolume / KMaxVolumeLevel;
+            }
         }
     else if (iFormat == EFormatTts)
         {
-        result = iTtsPlayer->MaxVolume() * aVolume / KMaxVolumeLevel;
+        if (iTtsPlayer)
+            {
+            result = iTtsPlayer->MaxVolume() * aVolume / KMaxVolumeLevel;
+            }
         }
     else
         {
-        result = iSamplePlayer->MaxVolume() * aVolume / KMaxVolumeLevel;
+        if (iSamplePlayer)
+            {
+            result = iSamplePlayer->MaxVolume() * aVolume / KMaxVolumeLevel;
+            }
         }
 
     // If user selected minimum volume level set HW volume 1
@@ -772,15 +797,24 @@
         {
         if (iFormat == EFormatTone)
             {
-            iTonePlayer->SetVolume(0);
+            if (iTonePlayer)
+                {
+                iTonePlayer->SetVolume(0);
+                }
             }
-        else if (iFormat == EFormatTts)
+        else if (iFormat == EFormatTts && iTtsPlayer)
             {
-            iTtsPlayer->SetVolume(0);
+            if (iTtsPlayer)
+                {
+                iTtsPlayer->SetVolume(0);
+                }
             }
         else // EFormatSample
             {
-            iSamplePlayer->SetVolume(0);
+            if (iSamplePlayer)
+                {
+                iSamplePlayer->SetVolume(0);
+                }
             }
         }
     else
--- a/mmserv/tms/tmsserver/src/tmsserver.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsserver/src/tmsserver.cpp	Mon May 03 12:59:52 2010 +0300
@@ -82,7 +82,7 @@
     iUplCodecs.Reset();
     iUplCodecs.Close();
     delete iEffectSettings;
-    CancelRoutingNotifier();
+    delete iTarHandler;
     CancelCenRepHandler();
     CancelDTMFNotifier();
     DeinitRingTonePlayer();
@@ -136,8 +136,13 @@
     iTarHandler = NULL;
     iAudioCenRepHandler = NULL;
     iDTMFHandler = NULL;
-    iCurrentRouting = TMS_AUDIO_OUTPUT_NONE;
-    InitRingTonePlayerL();
+    iCurrentRouting = TMS_AUDIO_OUTPUT_PRIVATE;
+
+    //TODO: EUnit fails to initialize ProfileEngine in RT in eshell mode
+    TRAP_IGNORE(InitRingTonePlayerL());
+
+    // We need it running for global volume change updates
+    StartRoutingNotifierL();
 
     TRACE_PRN_FN_EXT;
     }
@@ -341,7 +346,7 @@
 //
 void TMSServer::CancelRoutingNotifier()
     {
-    if (--iTarHandlerCount <= 0)
+    if (--iTarHandlerCount < 1)
         {
         delete iTarHandler;
         iTarHandler = NULL;
@@ -670,7 +675,8 @@
         while (serverSession != NULL)
             {
             serverSession->HandleGlobalEffectChange(
-                    TMS_EVENT_EFFECT_VOL_CHANGED);
+                    TMS_EVENT_EFFECT_VOL_CHANGED, level, EFalse,
+                    iCurrentRouting);
 
             serverSession = static_cast<TMSServerSession*> (iSessionIter++);
             }
@@ -745,7 +751,7 @@
         while (serverSession != NULL)
             {
             serverSession->HandleGlobalEffectChange(
-                    TMS_EVENT_EFFECT_GAIN_CHANGED);
+                    TMS_EVENT_EFFECT_GAIN_CHANGED, level);
             serverSession = static_cast<TMSServerSession*> (iSessionIter++);
             }
         }
@@ -864,19 +870,37 @@
     {
     TRACE_PRN_FN_ENT;
 
+    TInt vol;
     iCurrentRouting = routingpckg().iOutput;
+    if (iCurrentRouting == TMS_AUDIO_OUTPUT_PUBLIC ||
+            iCurrentRouting == TMS_AUDIO_OUTPUT_LOUDSPEAKER)
+        {
+        iEffectSettings->GetLoudSpkrVolume(vol);
+        }
+    else
+        {
+        iEffectSettings->GetEarPieceVolume(vol);
+        }
+
+    TInt status = SendMessageToCallServ(TMS_EFFECT_GLOBAL_VOL_SET, vol);
+
     iSessionIter.SetToFirst();
     TMSServerSession* serverSession =
             static_cast<TMSServerSession*> (iSessionIter++);
-
     while (serverSession != NULL)
         {
-        serverSession->HandleRoutingChange(routingpckg);
+        // Send only if there is a subscriber to TMS routing notifications.
+        if (iTarHandlerCount > 1)
+            {
+            serverSession->HandleRoutingChange(routingpckg);
+            }
+        serverSession->HandleGlobalEffectChange(TMS_EVENT_EFFECT_VOL_CHANGED,
+                vol, ETrue, iCurrentRouting);
         serverSession = static_cast<TMSServerSession*> (iSessionIter++);
         }
 
     TRACE_PRN_FN_EXT;
-    return TMS_RESULT_SUCCESS;
+    return status;
     }
 
 // -----------------------------------------------------------------------------
--- a/mmserv/tms/tmsserver/src/tmsserversession.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsserver/src/tmsserversession.cpp	Mon May 03 12:59:52 2010 +0300
@@ -306,10 +306,14 @@
 // TMSServerSession::HandleGlobalEffectChange
 // -----------------------------------------------------------------------------
 //
-void TMSServerSession::HandleGlobalEffectChange(TInt globalevent)
+void TMSServerSession::HandleGlobalEffectChange(TInt globalevent, TInt level,
+        TBool output_change, TMSAudioOutput output)
     {
     TRACE_PRN_FN_ENT;
     iMsgBuffer.iInt = globalevent;
+    iMsgBuffer.iUint = (guint)level;
+    iMsgBuffer.iInt2 = (gint)output;
+    iMsgBuffer.iBool = output_change;
     NotifyClient(ECmdGlobalEffectChange);
     TRACE_PRN_FN_EXT;
     }
@@ -363,7 +367,7 @@
         codecsCount = codecs->Count();
         }
 
-    if (codecsCount <= 0)
+    if (codecs && codecsCount <= 0)
         {
         delete iDevSound;
         iDevSound = NULL;
--- a/mmserv/tms/tmsutility/src/tmsutility.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/tms/tmsutility/src/tmsutility.cpp	Mon May 03 12:59:52 2010 +0300
@@ -141,7 +141,6 @@
         case KErrEtelCallNotActive: //-2007
             result = TMS_REASON_CALL_NOT_ACTIVE;//add TMS_RESULT_CALL_NOT_ACTIVE
             break;
-        /**********************************/
         //case KErrEtelCoreBase: //-2000
         case KErrEtelNotCallOwner: //-2000
         case KErrEtelDuplicatePhoneName: //-2001
--- a/mmserv/voipaudioservices/VoIPServer/src/VoIPDownlinkThread.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/voipaudioservices/VoIPServer/src/VoIPDownlinkThread.cpp	Mon May 03 12:59:52 2010 +0300
@@ -123,6 +123,7 @@
 
     if (!cleanupStack)
         {
+        shared.iMutex.Signal();
         return KErrNoMemory;
         }
 
@@ -130,6 +131,7 @@
     TRAPD(err, thread = CVoIPDownlinkThread::NewL(shared));
     if (err != KErrNone)
         {
+        shared.iMutex.Signal();
         return err;
         }
 
--- a/mmserv/voipaudioservices/VoIPServer/src/VoIPServerSession.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/voipaudioservices/VoIPServer/src/VoIPServerSession.cpp	Mon May 03 12:59:52 2010 +0300
@@ -127,8 +127,8 @@
     iShared.iMainThreadID = tID;
     iAO = new (ELeave) CVoIPServerAO(this, tID);
     iShared.iMnThreadStatus = &(this->iAO->iStatus);
+    iShared.iCodecSettings.iG711FrameRate = TVoIPCodecSettings::E20MS;
     iShared.iMutex.Signal();
-    iShared.iCodecSettings.iG711FrameRate = TVoIPCodecSettings::E20MS;
     iAO->Request();
     iSessionType = ENone;
 
--- a/mmserv/voipaudioservices/VoIPServer/src/VoIPUplinkThread.cpp	Fri Apr 16 15:29:42 2010 +0300
+++ b/mmserv/voipaudioservices/VoIPServer/src/VoIPUplinkThread.cpp	Mon May 03 12:59:52 2010 +0300
@@ -115,6 +115,7 @@
 
     if (!cleanupStack)
         {
+        shared.iMutex.Signal();
         return KErrNoMemory;
         }
 
@@ -122,6 +123,7 @@
     TRAPD(err, thread = CVoIPUplinkThread::NewL(shared));
     if (err != KErrNone)
         {
+        shared.iMutex.Signal();
         return err;
         }
 
--- a/package_definition.xml	Fri Apr 16 15:29:42 2010 +0300
+++ b/package_definition.xml	Mon May 03 12:59:52 2010 +0300
@@ -1,7 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <SystemDefinition schema="3.0.0">
   <package id="mmmw" name="Multimedia Middleware" levels="plugin framework server generic specific">
-  	<collection id="mmfenh" name="MMF Enhancements" level="generic">
+    <collection id="khronosfws" name="Khronos Frameworks" level="framework">
+      <component id="openmax_al" filter="s60" name="OpenMAX AL" class="framework" introduced="^4">
+        <unit bldFile="khronosfws/openmax_al/group"/>
+      </component>
+    </collection>
+    <collection id="mmfenh" name="MMF Enhancements" level="generic">
       <component id="advancedaudiocontroller" filter="s60" name="Advanced Audio Controllers" class="plugin">
         <unit bldFile="mmfenh/advancedaudiocontroller/group"/>
       </component>
@@ -40,6 +45,9 @@
       <component id="radioutility" filter="s60" name="Radio Utility">
         <unit bldFile="mmserv/radioutility/group"/>
       </component>
+      <component id="sts" filter="s60" name="System Tone Service" introduced="^4">
+        <unit bldFile="mmserv/sts/group"/>
+      </component>
       <component id="thumbnailengine" filter="s60" name="Thumbnail Engine" introduced="^2">
         <unit bldFile="mmserv/thumbnailengine/group"/>
       </component>