Intermidiate version opencode
authorivan.fildichev@opencode.com
Thu, 07 Oct 2010 19:32:01 +0300
branchopencode
changeset 77 930a53cdc2d3
parent 35 6fbc08ed9c42
child 78 d4cfc65049ba
Intermidiate version
hwpluginsimulation/mocksy/inc/cmocksyengine.h
package_definition.xml
telephonyserver/etelmultimode/CETEL/mm_messaging.cpp
telephonyserver/etelmultimode/DTsy/mmtsy.h
telephonyserver/etelmultimode/DTsy/mmtsymessaging.cpp
telephonyserver/etelmultimode/INC/ETELMM.H
telephonyserver/etelmultimode/INC/secure/ETELMMCS.H
telephonyserver/etelmultimode/TETEL/te_EtelMM/TE_mmussd.cpp
telephonyserver/etelmultimode/bwins/ETELMMU.def
telephonyserver/etelmultimode/group/BLD.INF
telephonyserver/etelserverandcore/Documentation/platsec/API_Capability_Assignment.xls
telephonyserver/etelserverandcore/EtelRecorder/playback/inc/tipclookup.h
telephonyserver/etelserverandcore/INC/ET_PHONE.H
telephonyserver/etelserverandcore/INC/ET_TSY.H
telephonyserver/etelserverandcore/SETEL/ET_CORE.CPP
telephonyserver/etelserverandcore/SETEL/ET_PHONE.CPP
telephonyserver/etelserverandcore/SETEL/ET_SVR.CPP
telephonyserverplugins/common_tsy/commontsy/inc/mmsms/cmmussdtsy.h
telephonyserverplugins/common_tsy/commontsy/src/mmsms/cmmussdtsy.cpp
telephonyserverplugins/common_tsy/commontsy/src/mmtsy/CMmMessageRouterProxy.cpp
telephonyserverplugins/common_tsy/commontsy/src/mmtsy/cmmphonetsy.cpp
telephonyserverplugins/common_tsy/test/component/group/bld.inf
telephonyserverplugins/common_tsy/test/component/group/te_ctsy_component.mmp
telephonyserverplugins/common_tsy/test/component/inc/cctsyussdmessagingfu.h
telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/cmmmessagerouter.cpp
telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/cmocksmsmesshandler.cpp
telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/ipcnames.cpp
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_ussdmessaging_individual.script
telephonyserverplugins/common_tsy/test/component/src/cctsyussdmessagingfu.cpp
telephonyserverplugins/ctsydispatchlayer/inc/csupplementaryservicesdispatcher.h
telephonyserverplugins/ctsydispatchlayer/src/cmessagerouter.cpp
telephonyserverplugins/ctsydispatchlayer/src/csupplementaryservicesdispatcher.cpp
telephonyserverplugins/licenseetsystub/licensee_tsy_stub/src/cmmmockmesshandler.cpp
--- a/hwpluginsimulation/mocksy/inc/cmocksyengine.h	Fri Jun 04 13:03:15 2010 +0100
+++ b/hwpluginsimulation/mocksy/inc/cmocksyengine.h	Thu Oct 07 19:32:01 2010 +0300
@@ -33,7 +33,7 @@
 		EHandlingTerminated,	//< all messages are handled
 		EFailure,				//< receive message doesn't correspond to the expected one
 		};
-
+	
 	virtual void Notify(TNotificationType aNotification) =0;	
 	};
 
--- a/package_definition.xml	Fri Jun 04 13:03:15 2010 +0100
+++ b/package_definition.xml	Thu Oct 07 19:32:01 2010 +0300
@@ -1,139 +1,173 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<SystemDefinition schema="3.0.0">
-  <package id="cellularsrv" name="Cellular Baseband Services" levels="adaptation hw-if plugin framework server app-if">
-    <collection id="basebandabstraction" name="Baseband Abstraction" level="hw-if">
-      <component id="basebandchanneladaptor" name="Baseband Channel Adaptor" introduced="8.1" purpose="optional">
-        <unit bldFile="basebandabstraction/basebandchanneladaptor/group" mrp="basebandabstraction/basebandchanneladaptor/group/networking_bca.mrp"/>
-      </component>
-      <component id="isc_if" filter="s60" name="Inter-System Communication Interface">
-        <unit bldFile="basebandabstraction/isc_if/group"/>
-      </component>
-    </collection>
-    <collection id="basebandadaptationplugins" name="Baseband Adaptation Plugins" level="adaptation">
-      <component id="basebandchanneladaptorforc32" name="Baseband Channel Adaptor for C32" introduced="8.1" purpose="optional" class="plugin">
-        <unit bldFile="basebandadaptationplugins/basebandchanneladaptorforc32/group" mrp="basebandadaptationplugins/basebandchanneladaptorforc32/group/networking_c32bca.mrp"/>
-      </component>
-    </collection>
-   
-    <collection id="smsprotocols" name="SMS Protocols" level="framework">
-      <component id="smsstack" name="SMS Stack" introduced="6.0" purpose="mandatory" class="plugin">
-        <unit bldFile="smsprotocols/smsstack/group" mrp="smsprotocols/smsstack/group/nbprotocols_smsstackv2.mrp"/>
-      </component>
-    </collection>
-    <collection id="telephonyprotocols" name="Telephony Protocols" level="framework">
-      <component id="csdagt" name="CSD AGT" introduced="6.1" purpose="optional" class="plugin">
-        <unit bldFile="telephonyprotocols/csdagt/group" mrp="telephonyprotocols/csdagt/group/networking_csdagt.mrp"/>
-      </component>
-      <component id="psdagt" name="PSD AGT" introduced="7.0s" purpose="optional" class="plugin">
-        <unit bldFile="telephonyprotocols/psdagt/group" mrp="telephonyprotocols/psdagt/group/networking_psdagt.mrp"/>
-      </component>
-      <component id="gprsumtsqosprt" name="GPRS/UMTS QoS PRT" introduced="7.0s" purpose="optional" class="plugin">
-        <unit bldFile="telephonyprotocols/gprsumtsqosprt/group" mrp="telephonyprotocols/gprsumtsqosprt/group/networking_guqos.mrp"/>
-      </component>
-      <component id="gprsumtsqosinterface" name="GPRS/UMTS QoS Interface" introduced="7.0s" purpose="optional" class="plugin">
-        <unit bldFile="telephonyprotocols/gprsumtsqosinterface/group" mrp="telephonyprotocols/gprsumtsqosinterface/group/networking_umtsif.mrp"/>
-      </component>
-      <component id="qosextnapi" name="QoS Extn API" introduced="9.2" purpose="optional">
-        <unit bldFile="telephonyprotocols/qosextnapi/group" mrp="telephonyprotocols/qosextnapi/group/networking_qosextnapi.mrp"/>
-      </component>
-      <component id="secondarypdpcontextumtsdriver" name="Secondary PDP context UMTS Driver" introduced="8.1" purpose="optional">
-        <unit bldFile="telephonyprotocols/secondarypdpcontextumtsdriver/group" mrp="telephonyprotocols/secondarypdpcontextumtsdriver/group/networking_spud.mrp"/>
-      </component>
-      <component id="qos3gppcpr" name="QoS 3GPP CPR" introduced="9.2" purpose="optional" class="plugin">
-        <unit bldFile="telephonyprotocols/qos3gppcpr/group" mrp="telephonyprotocols/qos3gppcpr/group/networking_Qos3GPP.mrp"/>
-      </component>
-      <component id="pdplayer" name="PDP Layer" introduced="^3" purpose="optional" class="plugin">
-        <unit bldFile="telephonyprotocols/pdplayer/group" mrp="telephonyprotocols/pdplayer/group/networking_pdp.mrp"/>
-      </component>
-      <component id="rawipnif" name="Raw IP NIF" introduced="8.1" purpose="optional" class="plugin">
-        <unit bldFile="telephonyprotocols/rawipnif/group" mrp="telephonyprotocols/rawipnif/group/networking_rawipnif.mrp"/>
-      </component>
-    </collection>
-    <collection id="telephonyserver" name="Telephony Server" level="server">
-      <component id="etelserverandcore" name="ETel Server and Core" purpose="mandatory">
-        <unit bldFile="telephonyserver/etelserverandcore/group" mrp="telephonyserver/etelserverandcore/group/telephony_etel.mrp"/>
-      </component>
-      <component id="etelconfig" name="ETel Config" purpose="mandatory" class="config" filter="test">
-        <unit mrp="telephonyserver/etelserverandcore/group/telephony_etel-config.mrp" bldFile="telephonyserver/etelserverandcore/data"/>
-      </component>
-      <component id="etelmultimode" name="ETel Multimode" introduced="7.0" purpose="mandatory">
-        <unit bldFile="telephonyserver/etelmultimode/group" mrp="telephonyserver/etelmultimode/group/telephony_etelmm.mrp"/>
-      </component>
-      <component id="etelpacketdata" name="ETel Packet Data" introduced="7.0" purpose="mandatory">
-        <unit bldFile="telephonyserver/etelpacketdata/group" mrp="telephonyserver/etelpacketdata/group/telephony_etelpckt.mrp"/>
-      </component>
-      <component id="etelsimtoolkit" name="ETel SIM Toolkit" introduced="6.1" purpose="mandatory">
-        <unit bldFile="telephonyserver/etelsimtoolkit/group" mrp="telephonyserver/etelsimtoolkit/group/telephony_etelsat.mrp"/>
-      </component>
-    </collection>
-    <collection id="telephonyserverplugins" name="Telephony Server Plugins" level="plugin">
-      <component id="common_tsy" name="Common TSY" introduced="^2" purpose="optional" class="plugin">
-        <unit bldFile="telephonyserverplugins/common_tsy/group" mrp="telephonyserverplugins/common_tsy/group/telephony_commontsy.mrp"/>
-      </component>
-      <component id="licenseetsystub" name="Licensee TSY Stub" introduced="^2" purpose="development" class="plugin" filter="test">
-        <unit mrp="telephonyserverplugins/licenseetsystub/group/licenseetsystub.mrp" bldFile="telephonyserverplugins/licenseetsystub/group"/>
-      </component>
-      <component id="multimodetsy" name="Multimode TSY" purpose="development" class="plugin">
-        <unit bldFile="telephonyserverplugins/multimodetsy/group" mrp="telephonyserverplugins/multimodetsy/group/telephony_mmtsy.mrp"/>
-      </component>
-      <component id="simtsy" name="SIM TSY" introduced="7.0" purpose="development" class="plugin">
-        <unit bldFile="telephonyserverplugins/simtsy/group" mrp="telephonyserverplugins/simtsy/group/telephony_simtsy.mrp"/>
-      </component>
-      <component id="ctsydispatchlayer" name="C-TSY Dispatch Layer" introduced="^3" purpose="optional" class="plugin">
-        <unit bldFile="telephonyserverplugins/ctsydispatchlayer/group" mrp="telephonyserverplugins/ctsydispatchlayer/group/telephony_dispatcher.mrp"/>
-      </component>
-      <component id="simatktsy" name="SIMATK TSY" introduced="^3" purpose="optional" class="plugin">
-        <unit bldFile="telephonyserverplugins/simatktsy/group" mrp="telephonyserverplugins/simatktsy/group/commonsimatktsy.mrp"/>
-      </component>
-    </collection>
-    <collection id="commonnetworkinterface" name="Common Network Interface" level="hw-if">
-      <component id="gennif" filter="s60" name="Generic NIF">
-        <unit bldFile="commonnetworkinterface/gennif/group"/>
-      </component>
-      <component id="gprsumtsagent" filter="s60" name="GPRS UMTS Agent">
-        <unit bldFile="commonnetworkinterface/gprsumtsagent/group"/>
-      </component>
-    </collection>
-    <collection id="telephonyutils" name="Telephony Utilities" level="app-if">
-      <component id="dial" name="Dial" deprecated="9.1" purpose="optional">
-        <unit bldFile="telephonyutils/dial/group" mrp="telephonyutils/dial/group/telephony_dial.mrp"/>
-      </component>
-      <component id="telephonywatchers" name="Telephony Watchers" introduced="6.0" purpose="optional" class="plugin">
-        <unit bldFile="telephonyutils/telephonywatchers/group" mrp="telephonyutils/telephonywatchers/group/telephony_watchers.mrp"/>
-      </component>
-      <component id="etel3rdpartyapi" name="ETel 3rd Party API" introduced="7.0" purpose="mandatory">
-        <unit bldFile="telephonyutils/etel3rdpartyapi/Group" mrp="telephonyutils/etel3rdpartyapi/Group/telephony_etel3rdparty.mrp"/>
-      </component>
-    </collection>
-    <collection id="cellularsrv_info" name="Cellular Baseband Services Info" level="app-if">
-      <component id="cellularsrv_plat" filter="s60" name="Cellular Baseband Services Platform Interfaces" class="api">
-        <unit bldFile="cellularsrv_plat/group"/>
-      </component>
-      <component id="telephonyconfidentialdocs" name="Telephony Confidential Documentation" purpose="development" class="doc">
-        <unit mrp="cellularsrv_info/telephonyconfidentialdocs/telephony_confidential.mrp"/>
-      </component>
-      <component id="telephonydocs" name="Telephony Documentation" purpose="development" class="doc">
-        <unit mrp="cellularsrv_info/telephonydocs/telephony_documentation.mrp"/>
-      </component>
-      <component id="cellularsrv_metadata" name="Cellular Baseband Services Metadata" class="config" introduced="^2" purpose="development" target="desktop">
-        <unit mrp="cellularsrv_info/cellularsrv_metadata/cellularsrv_metadata.mrp"/>
-      </component>
-    </collection>
-    <collection id="hwpluginsimulation" name="Hardware Plugin Simulation" level="adaptation">
-      <component id="mocksy" name="MockSY" introduced="^2" purpose="development" class="plugin">
-        <unit bldFile="hwpluginsimulation/mocksy/group" mrp="hwpluginsimulation/mocksy/group/telephony_tools_mocksy.mrp"/>
-      </component>
-    </collection>
-    <collection id="cellularsrvapitest" name="Telephony API Tests" level="app-if">
-      <component id="datatransferhaitest" name="Data Transfer HAI Tests" introduced="^2" purpose="development" filter="test">
-			  <unit mrp="cellularsrvapitest/datatransferhaitest/group/datatransferhaitest.mrp" bldFile="cellularsrvapitest/datatransferhaitest/group"/>
-      </component>
-      <component id="telephonyhaitest" name="Telephony HAI Tests" introduced="^2" purpose="development" filter="test">
-			  <unit mrp="cellularsrvapitest/telephonyhaitest/group/telephonyhaitest.mrp" bldFile="cellularsrvapitest/telephonyhaitest/group"/>
-      </component>
-      <component id="telephonydevsoundhaitest" name="DevSound Telephony HAI Tests" introduced="^2" purpose="development" filter="test">
-			  <unit mrp="cellularsrvapitest/telephonydevsoundhaitest/group/telephonydevsoundhaitest.mrp" bldFile="cellularsrvapitest/telephonydevsoundhaitest/group"/>
-      </component>
-    </collection>
-  </package>
-</SystemDefinition>
+<!DOCTYPE SystemDefinition [
+ <!ELEMENT SystemDefinition (systemModel)>
+ <!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED>
+ <!ELEMENT systemModel (layer+)>
+ <!ELEMENT layer (block*|collection*)*>
+ <!ATTLIST layer
+  name CDATA #REQUIRED
+  long-name CDATA #IMPLIED
+  levels NMTOKENS #IMPLIED
+  span CDATA #IMPLIED>
+ <!ELEMENT block (subblock*|collection*)*>
+ <!ATTLIST block
+  levels NMTOKENS #IMPLIED
+  span CDATA #IMPLIED
+  level NMTOKEN #IMPLIED
+  name CDATA #REQUIRED
+  long-name CDATA #IMPLIED>
+ <!ELEMENT subblock (collection)*>
+ <!ATTLIST subblock
+  name CDATA #REQUIRED
+  long-name CDATA #IMPLIED>
+ <!ELEMENT collection (component)*>
+ <!ATTLIST collection
+  name CDATA #REQUIRED
+  long-name CDATA #IMPLIED
+  level NMTOKEN #IMPLIED>
+ <!ELEMENT component (unit)*>
+ <!ATTLIST component
+  name CDATA #REQUIRED
+  long-name CDATA #IMPLIED
+  deprecated CDATA #IMPLIED
+  introduced CDATA #IMPLIED
+  contract CDATA #IMPLIED
+  plugin (Y|N) 'N'
+  filter CDATA #IMPLIED
+  class NMTOKENS #IMPLIED
+  supports CDATA #IMPLIED
+  purpose (optional|mandatory|development) 'optional'>
+ <!ELEMENT unit EMPTY>
+ <!ATTLIST unit
+  mrp CDATA #IMPLIED
+  filter CDATA #IMPLIED
+  bldFile CDATA #IMPLIED
+  root CDATA #IMPLIED
+  version NMTOKEN #IMPLIED
+  prebuilt NMTOKEN #IMPLIED
+  late (Y|N) #IMPLIED
+  priority CDATA #IMPLIED>
+]>
+<SystemDefinition name="Symbian^3" schema="2.0.1">
+ <systemModel>
+  <layer name="os" long-name="OS" levels="hw services">
+   <block name="cellularsrv" level="services" long-name="Cellular Baseband Services" levels="adaptation hw-if plugin framework server app-if">
+<collection name="basebandabstraction" long-name="Baseband Abstraction" level="hw-if">
+<component name="basebandchanneladaptor" long-name="Baseband Channel Adaptor" introduced="8.1" purpose="optional">
+<unit bldFile="/sf/os/cellularsrv/basebandabstraction/basebandchanneladaptor/group" mrp="/sf/os/cellularsrv/basebandabstraction/basebandchanneladaptor/group/networking_bca.mrp"/>
+</component>
+</collection>
+<collection name="basebandadaptationplugins" long-name="Baseband Adaptation Plugins" level="adaptation">
+<component name="basebandchanneladaptorforc32" long-name="Baseband Channel Adaptor for C32" introduced="8.1" purpose="optional" plugin="Y">
+<unit bldFile="/sf/os/cellularsrv/basebandadaptationplugins/basebandchanneladaptorforc32/group" mrp="/sf/os/cellularsrv/basebandadaptationplugins/basebandchanneladaptorforc32/group/networking_c32bca.mrp"/>
+</component>
+</collection>
+<collection name="fax" long-name="Fax" level="server">
+<component name="faxclientandserver" long-name="Fax Client and Server" purpose="optional">
+<unit bldFile="/sf/os/cellularsrv/fax/faxclientandserver/Group" mrp="/sf/os/cellularsrv/fax/faxclientandserver/Group/telephony_fax.mrp"/>
+</component>
+</collection>
+<collection name="smsprotocols" long-name="SMS Protocols" level="framework">
+<component name="smsstack" long-name="SMS Stack" introduced="6.0" purpose="mandatory" plugin="Y">
+<unit bldFile="/sf/os/cellularsrv/smsprotocols/smsstack/group" mrp="/sf/os/cellularsrv/smsprotocols/smsstack/group/nbprotocols_smsstackv2.mrp"/>
+</component>
+</collection>
+<collection name="telephonyprotocols" long-name="Telephony Protocols" level="framework">
+<component name="csdagt" long-name="CSD AGT" introduced="6.1" purpose="optional" plugin="Y">
+<unit bldFile="/sf/os/cellularsrv/telephonyprotocols/csdagt/group" mrp="/sf/os/cellularsrv/telephonyprotocols/csdagt/group/networking_csdagt.mrp"/>
+</component>
+<component name="psdagt" long-name="PSD AGT" introduced="7.0s" purpose="optional" plugin="Y">
+<unit bldFile="/sf/os/cellularsrv/telephonyprotocols/psdagt/group" mrp="/sf/os/cellularsrv/telephonyprotocols/psdagt/group/networking_psdagt.mrp"/>
+</component>
+<component name="gprsumtsqosprt" long-name="GPRS/UMTS QoS PRT" introduced="7.0s" purpose="optional" plugin="Y">
+<unit bldFile="/sf/os/cellularsrv/telephonyprotocols/gprsumtsqosprt/group" mrp="/sf/os/cellularsrv/telephonyprotocols/gprsumtsqosprt/group/networking_guqos.mrp"/>
+</component>
+<component name="gprsumtsqosinterface" long-name="GPRS/UMTS QoS Interface" introduced="7.0s" purpose="optional" plugin="Y">
+<unit bldFile="/sf/os/cellularsrv/telephonyprotocols/gprsumtsqosinterface/group" mrp="/sf/os/cellularsrv/telephonyprotocols/gprsumtsqosinterface/group/networking_umtsif.mrp"/>
+</component>
+<component name="qosextnapi" long-name="QoS Extn API" introduced="9.2" purpose="optional">
+<unit bldFile="/sf/os/cellularsrv/telephonyprotocols/qosextnapi/group" mrp="/sf/os/cellularsrv/telephonyprotocols/qosextnapi/group/networking_qosextnapi.mrp"/>
+</component>
+<component name="secondarypdpcontextumtsdriver" long-name="Secondary PDP context UMTS Driver" introduced="8.1" purpose="optional">
+<unit bldFile="/sf/os/cellularsrv/telephonyprotocols/secondarypdpcontextumtsdriver/group" mrp="/sf/os/cellularsrv/telephonyprotocols/secondarypdpcontextumtsdriver/group/networking_spud.mrp"/>
+</component>
+<component name="qos3gppcpr" long-name="QoS 3GPP CPR" introduced="9.2" purpose="optional" plugin="Y">
+<unit bldFile="/sf/os/cellularsrv/telephonyprotocols/qos3gppcpr/group" mrp="/sf/os/cellularsrv/telephonyprotocols/qos3gppcpr/group/networking_Qos3GPP.mrp"/>
+</component>
+<component name="pdplayer" long-name="PDP Layer" introduced="^3" purpose="optional" plugin="Y">
+<unit bldFile="/sf/os/cellularsrv/telephonyprotocols/pdplayer/group" mrp="/sf/os/cellularsrv/telephonyprotocols/pdplayer/group/networking_pdp.mrp"/>
+</component>
+<component name="rawipnif" long-name="Raw IP NIF" introduced="8.1" purpose="optional" plugin="Y">
+<unit bldFile="/sf/os/cellularsrv/telephonyprotocols/rawipnif/group" mrp="/sf/os/cellularsrv/telephonyprotocols/rawipnif/group/networking_rawipnif.mrp"/>
+</component>
+</collection>
+<collection name="telephonyserver" long-name="Telephony Server" level="server">
+<component name="etelserverandcore" long-name="ETel Server and Core" purpose="mandatory">
+<unit bldFile="/sf/os/cellularsrv/telephonyserver/etelserverandcore/group" mrp="/sf/os/cellularsrv/telephonyserver/etelserverandcore/group/telephony_etel.mrp"/>
+</component>
+<component name="etelmultimode" long-name="ETel Multimode" introduced="7.0" purpose="mandatory">
+<unit bldFile="/sf/os/cellularsrv/telephonyserver/etelmultimode/group" mrp="/sf/os/cellularsrv/telephonyserver/etelmultimode/group/telephony_etelmm.mrp"/>
+</component>
+<component name="etelpacketdata" long-name="ETel Packet Data" introduced="7.0" purpose="mandatory">
+<unit bldFile="/sf/os/cellularsrv/telephonyserver/etelpacketdata/group" mrp="/sf/os/cellularsrv/telephonyserver/etelpacketdata/group/telephony_etelpckt.mrp"/>
+</component>
+<component name="etelsimtoolkit" long-name="ETel SIM Toolkit" introduced="6.1" purpose="mandatory">
+<unit bldFile="/sf/os/cellularsrv/telephonyserver/etelsimtoolkit/group" mrp="/sf/os/cellularsrv/telephonyserver/etelsimtoolkit/group/telephony_etelsat.mrp"/>
+</component>
+</collection>
+<collection name="telephonyserverplugins" long-name="Telephony Server Plugins" level="plugin">
+<component name="common_tsy" long-name="Common TSY" introduced="^2" purpose="optional" plugin="Y">
+<unit bldFile="/sf/os/cellularsrv/telephonyserverplugins/common_tsy/group" mrp="/sf/os/cellularsrv/telephonyserverplugins/common_tsy/group/telephony_commontsy.mrp"/>
+</component>
+<component name="licenseetsystub" long-name="Licensee TSY Stub" introduced="^2" purpose="development" filter="sf_build" plugin="Y">
+<unit mrp="/sf/os/cellularsrv/telephonyserverplugins/licenseetsystub/group/licenseetsystub.mrp" bldFile="/sf/os/cellularsrv/telephonyserverplugins/licenseetsystub/group"/>
+</component>
+<component name="multimodetsy" long-name="Multimode TSY" purpose="development" plugin="Y">
+<unit bldFile="/sf/os/cellularsrv/telephonyserverplugins/multimodetsy/group" mrp="/sf/os/cellularsrv/telephonyserverplugins/multimodetsy/group/telephony_mmtsy.mrp"/>
+</component>
+<component name="ctsydispatchlayer" long-name="C-TSY Dispatch Layer" introduced="^3" purpose="optional" plugin="Y">
+<unit bldFile="/sf/os/cellularsrv/telephonyserverplugins/ctsydispatchlayer/group" mrp="/sf/os/cellularsrv/telephonyserverplugins/ctsydispatchlayer/group/telephony_dispatcher.mrp"/>
+</component>
+<component name="simatktsy" long-name="SIMATK TSY" introduced="^3" purpose="optional" plugin="Y">
+<unit bldFile="/sf/os/cellularsrv/telephonyserverplugins/simatktsy/group" mrp="/sf/os/cellularsrv/telephonyserverplugins/simatktsy/group/commonsimatktsy.mrp"/>
+</component>
+</collection>
+<collection name="telephonyutils" long-name="Telephony Utilities" level="app-if">
+<component name="dial" long-name="Dial" deprecated="9.1" purpose="optional">
+<unit bldFile="/sf/os/cellularsrv/telephonyutils/dial/group" mrp="/sf/os/cellularsrv/telephonyutils/dial/group/telephony_dial.mrp"/>
+</component>
+<component name="telephonywatchers" long-name="Telephony Watchers" introduced="6.0" purpose="optional" plugin="Y">
+<unit bldFile="/sf/os/cellularsrv/telephonyutils/telephonywatchers/group" mrp="/sf/os/cellularsrv/telephonyutils/telephonywatchers/group/telephony_watchers.mrp"/>
+</component>
+<component name="etel3rdpartyapi" long-name="ETel 3rd Party API" introduced="7.0" purpose="mandatory">
+<unit bldFile="/sf/os/cellularsrv/telephonyutils/etel3rdpartyapi/Group" mrp="/sf/os/cellularsrv/telephonyutils/etel3rdpartyapi/Group/telephony_etel3rdparty.mrp"/>
+</component>
+</collection>
+<collection name="cellularsrv_info" long-name="Cellular Baseband Services Info" level="app-if">
+<component name="telephonyconfidentialdocs" long-name="Telephony Confidential Documentation" purpose="development" class="doc">
+<unit mrp="/sf/os/cellularsrv/cellularsrv_info/telephonyconfidentialdocs/telephony_confidential.mrp"/>
+</component>
+<component name="telephonydocs" long-name="Telephony Documentation" purpose="development" class="doc">
+<unit mrp="/sf/os/cellularsrv/cellularsrv_info/telephonydocs/telephony_documentation.mrp"/>
+</component>
+<component name="cellularsrv_metadata" long-name="Cellular Baseband Services Metadata" introduced="^2" purpose="development" class="config PC">
+<unit mrp="/sf/os/cellularsrv/cellularsrv_info/cellularsrv_metadata/cellularsrv_metadata.mrp"/>
+</component>
+</collection>
+<collection name="hwpluginsimulation" long-name="Hardware Plugin Simulation" level="adaptation">
+<component name="mocksy" long-name="MockSY" introduced="^2" purpose="development" plugin="Y">
+<unit bldFile="/sf/os/cellularsrv/hwpluginsimulation/mocksy/group" mrp="/sf/os/cellularsrv/hwpluginsimulation/mocksy/group/telephony_tools_mocksy.mrp"/>
+</component>
+</collection>
+<collection name="cellularsrvapitest" long-name="Telephony API Tests" level="app-if"/>
+<collection name="wapstack" long-name="WAP Stack" level="app-if">
+<component name="wapmessageapi" long-name="WAP Message API" purpose="development">
+<unit mrp="/sf/os/cellularsrv/wapstack/wapmessageapi/group/wap-stack_wapmessage.mrp" bldFile="/sf/os/cellularsrv/wapstack/wapmessageapi/group"/>
+</component>
+</collection>
+</block>
+  </layer>
+ </systemModel>
+</SystemDefinition>
\ No newline at end of file
--- a/telephonyserver/etelmultimode/CETEL/mm_messaging.cpp	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserver/etelmultimode/CETEL/mm_messaging.cpp	Thu Oct 07 19:32:01 2010 +0300
@@ -1182,6 +1182,36 @@
 	Set(EMobileUssdMessagingSendMessage, aReqStatus, aMsgData, aMsgAttributes);
 	}
 
+EXPORT_C void RMobileUssdMessaging::SendMessage(TRequestStatus& aReqStatus, const TDesC8& aMsgData, 
+												const TDesC8& aMsgAttributes, TInt aCommand) const
+/**
+	This member function sends a USSD message to the network.
+
+	See	3GPP spec. 04.90 for more details on expected responses from
+	the network.
+	
+	Use RTelSubSessionBase::CancelAsyncRequest(EMobileUssdMessagingSendMessageDefaultHandler) 
+	to cancel a previously placed asynchronous SendMessage() request.
+	
+	@param aReqStatus On return, KErrNone if successful.
+	@param aMsgData The message data.
+	@param aMsgAttributes The TMobileUssdAttributesV1Pckg with the message attributes.
+
+	@see TMobileUssdAttributesV1
+
+@capability NetworkServices
+@capability WriteDeviceData
+@capability NetworkControl
+*/
+	{	
+	if(ETransferToDefaultHandler != aCommand)
+	{
+	aReqStatus = KErrArgument;
+	return;
+	}
+	Set(EMobileUssdMessagingSendMessageDefaultHandler, aReqStatus, aMsgData, aMsgAttributes); 	
+	}
+
 EXPORT_C void RMobileUssdMessaging::SendMessageNoFdnCheck(TRequestStatus& aReqStatus, const TDesC8& aMsgData, const TDesC8& aMsgAttributes) const
 /**
 	Sends an outgoing USSD to the network. 
--- a/telephonyserver/etelmultimode/DTsy/mmtsy.h	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserver/etelmultimode/DTsy/mmtsy.h	Thu Oct 07 19:32:01 2010 +0300
@@ -1040,8 +1040,10 @@
 	TInt GetCaps(const TTsyReqHandle aTsyReqHandle, TDes8* aCaps);
 	TInt ReceiveMessage(const TTsyReqHandle aTsyReqHandle, TDes8* aMsgData, TDes8* aMsgAttributes);
 	TInt ReceiveMessageCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt SendMessage(const TTsyReqHandle aTsyReqHandle, TDesC8* aMsgData, TDesC8* aMsgAttributes);
+	TInt SendMessage(const TTsyReqHandle aTsyReqHandle, TDesC8* aMsgData, TDesC8* aMsgAttributes);	
+	TInt SendMessageDefaultHandler(const TTsyReqHandle aTsyReqHandle, TDesC8* aMsgData, TDesC8* aMsgAttributes);
 	TInt SendMessageCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt SendMessageCancelDefaultHandler(const TTsyReqHandle aTsyReqHandle);
 	TInt SendMessageNoFdnCheck(const TTsyReqHandle aTsyReqHandle, TDesC8* aMsgData, TDesC8* aMsgAttributes);
 	TInt SendMessageNoFdnCheckCancel(const TTsyReqHandle aTsyReqHandle);
 	TInt SendRelease(const TTsyReqHandle aTsyReqHandle, TDes8* aReturnResult);
--- a/telephonyserver/etelmultimode/DTsy/mmtsymessaging.cpp	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserver/etelmultimode/DTsy/mmtsymessaging.cpp	Thu Oct 07 19:32:01 2010 +0300
@@ -1571,6 +1571,7 @@
 	case EMobileUssdMessagingSendMessage:
 	case EMobileUssdMessagingSendMessageNoFdnCheck:
 	case EMobileUssdMessagingSendRelease:
+	case EMobileUssdMessagingSendMessageDefaultHandler:
 		ret=KReqModeFlowControlObeyed;
 		break;
 
@@ -1589,6 +1590,7 @@
 	case EMobileUssdMessagingSendMessageNoFdnCheckCancel:
 	case EMobileUssdMessagingSendReleaseCancel:
 	case EMobileUssdMessagingNotifyNetworkReleaseCancel:
+	case EMobileUssdMessagingSendMessageDefaultHandlerCancel:
 	default:
 		User::Leave(KErrNotSupported);
 		break;
@@ -1662,7 +1664,8 @@
 
 	case EMobileUssdMessagingSendMessage:
 		return SendMessage(aTsyReqHandle, aPackage.Des1n(), aPackage.Des2n());
-
+	case EMobileUssdMessagingSendMessageDefaultHandler: 
+		return SendMessageDefaultHandler(aTsyReqHandle, aPackage.Des1n(), aPackage.Des2n());
 	case EMobileUssdMessagingSendMessageNoFdnCheck:
 		return SendMessageNoFdnCheck(aTsyReqHandle, aPackage.Des1n(), aPackage.Des2n());
 
@@ -1688,6 +1691,7 @@
 	case EMobileUssdMessagingReceiveMessageCancel:
 		return ReceiveMessageCancel(aTsyReqHandle);
 	case EMobileUssdMessagingSendMessageCancel:
+	case EMobileUssdMessagingSendMessageDefaultHandlerCancel: 
 		return SendMessageCancel(aTsyReqHandle);
 	case EMobileUssdMessagingSendMessageNoFdnCheckCancel:
 		return SendMessageNoFdnCheckCancel(aTsyReqHandle);
@@ -1708,7 +1712,9 @@
 		{
 	case EMobileUssdMessagingReceiveMessage:
 		return ReceiveMessageCancel(aTsyReqHandle);
-	case EMobileUssdMessagingSendMessage:
+	case EMobileUssdMessagingSendMessageDefaultHandler: 
+		return SendMessageCancelDefaultHandler(aTsyReqHandle);
+	case EMobileUssdMessagingSendMessage:	
 		return SendMessageCancel(aTsyReqHandle);
 	case EMobileUssdMessagingSendMessageNoFdnCheck:
 		return SendMessageNoFdnCheckCancel(aTsyReqHandle);
@@ -1766,8 +1772,24 @@
 	LOGTEXT(_L8("CUssdMessagingDMmTsy::SendMessage called"));
 	RMobileUssdMessaging::TMobileUssdAttributesV1Pckg* attsPckg = REINTERPRET_CAST(RMobileUssdMessaging::TMobileUssdAttributesV1Pckg*,aMsgAttributes);
 	RMobileUssdMessaging::TMobileUssdAttributesV1& atts = (*attsPckg)();
-	if ((aMsgData->Compare(DMMTSY_USSD_MESSAGE_PDU) != 0) ||
-		atts.iFlags != DMMTSY_USSD_ATTRIBUTE_FLAGS || 
+		
+	if (atts.iFlags != DMMTSY_USSD_ATTRIBUTE_FLAGS || 
+		atts.iFormat != DMMTSY_USSD_ATTRIBUTE_FORMAT ||
+		atts.iType != DMMTSY_USSD_ATTRIBUTE_TYPE ||
+		atts.iDcs != DMMTSY_USSD_ATTRIBUTE_DCS)
+		ReqCompleted(aTsyReqHandle,KErrCorrupt);
+	else
+		iPhone->AddDelayedReq(aTsyReqHandle,this);
+	return KErrNone;
+	}
+
+TInt CUssdMessagingDMmTsy::SendMessageDefaultHandler(const TTsyReqHandle aTsyReqHandle, TDesC8* aMsgData, TDesC8* aMsgAttributes)
+	{
+	LOGTEXT(_L8("CUssdMessagingDMmTsy::SendMessage called"));
+	RMobileUssdMessaging::TMobileUssdAttributesV1Pckg* attsPckg = REINTERPRET_CAST(RMobileUssdMessaging::TMobileUssdAttributesV1Pckg*,aMsgAttributes);
+	RMobileUssdMessaging::TMobileUssdAttributesV1& atts = (*attsPckg)();
+		
+	if (atts.iFlags != DMMTSY_USSD_ATTRIBUTE_FLAGS || 
 		atts.iFormat != DMMTSY_USSD_ATTRIBUTE_FORMAT ||
 		atts.iType != DMMTSY_USSD_ATTRIBUTE_TYPE ||
 		atts.iDcs != DMMTSY_USSD_ATTRIBUTE_DCS)
@@ -1784,7 +1806,13 @@
 	ReqCompleted(aTsyReqHandle,KErrCancel);
 	return KErrNone;
 	}
-
+TInt CUssdMessagingDMmTsy::SendMessageCancelDefaultHandler(const TTsyReqHandle aTsyReqHandle)
+	{
+	LOGTEXT(_L8("CUssdMessagingDMmTsy::SendMessageCancelDefaultHandler called"));
+	iPhone->RemoveDelayedReq(aTsyReqHandle);
+	ReqCompleted(aTsyReqHandle,KErrCancel);
+	return KErrNone;
+	}
 TInt CUssdMessagingDMmTsy::SendMessageNoFdnCheck(const TTsyReqHandle aTsyReqHandle, TDesC8* aMsgData, TDesC8* aMsgAttributes)
 	/**
 	* This method sends an outgoing SMS to the network. The number used for sending the SMS   
--- a/telephonyserver/etelmultimode/INC/ETELMM.H	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserver/etelmultimode/INC/ETELMM.H	Thu Oct 07 19:32:01 2010 +0300
@@ -10402,6 +10402,14 @@
 		KCapsMTUssd=0x00000002
 		};
 
+/** Defines transfer modes for USSD reply
+
+Modes: GSM/WCDMA */
+	enum TMobileUssdTransferMode
+		{
+		/**Transfer the reply to the default client*/
+		ETransferToDefaultHandler
+		};
 	
 
 	class TMobileUssdCapsV1 : public RMobilePhone::TMultimodeType
@@ -10554,6 +10562,7 @@
 
 	IMPORT_C void SendMessage(TRequestStatus& aReqStatus, const TDesC8& aMsgData, const TDesC8& aMsgAttributes) const;
 	IMPORT_C void SendMessageNoFdnCheck(TRequestStatus& aReqStatus, const TDesC8& aMsgData, const TDesC8& aMsgAttributes) const;
+	IMPORT_C void SendMessage(TRequestStatus& aReqStatus, const TDesC8& aMsgData, const TDesC8& aMsgAttributes, TInt aCommand) const;
 	
 	IMPORT_C void SendRelease(TRequestStatus& aReqStatus, TDes8& aReturnResult) const;
 	IMPORT_C void NotifyNetworkRelease(TRequestStatus& aReqStatus, TDes8& aReturnResult) const;
--- a/telephonyserver/etelmultimode/INC/secure/ETELMMCS.H	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserver/etelmultimode/INC/secure/ETELMMCS.H	Thu Oct 07 19:32:01 2010 +0300
@@ -760,14 +760,16 @@
 	{
 	EMobilePhoneSendNetworkServiceRequestNoFdnCheck = EEtelMMIpcOffset8,  // 28000
 	EMobileUssdMessagingSendMessage,                                      // 28001
-	EMobileUssdMessagingSendMessageNoFdnCheck                             // 28002
+	EMobileUssdMessagingSendMessageNoFdnCheck,                            // 28002
+	EMobileUssdMessagingSendMessageDefaultHandler                         // 28003
 	};
 
 enum
 	{
 	EMobilePhoneSendNetworkServiceRequestNoFdnCheckCancel = EMobilePhoneSendNetworkServiceRequestNoFdnCheck + EMobileCancelOffset,             // 28500
 	EMobileUssdMessagingSendMessageCancel = EMobileUssdMessagingSendMessage + EMobileCancelOffset,                                             // 28501
-	EMobileUssdMessagingSendMessageNoFdnCheckCancel = EMobileUssdMessagingSendMessageNoFdnCheck + EMobileCancelOffset                          // 28502
+	EMobileUssdMessagingSendMessageNoFdnCheckCancel = EMobileUssdMessagingSendMessageNoFdnCheck + EMobileCancelOffset,                         // 28502
+	EMobileUssdMessagingSendMessageDefaultHandlerCancel = EMobileUssdMessagingSendMessageDefaultHandler + EMobileCancelOffset                  // 28503
 	};
 
 //
--- a/telephonyserver/etelmultimode/TETEL/te_EtelMM/TE_mmussd.cpp	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserver/etelmultimode/TETEL/te_EtelMM/TE_mmussd.cpp	Thu Oct 07 19:32:01 2010 +0300
@@ -114,6 +114,27 @@
 	else
 		INFO_PRINTF2(_L("Test %d - RMobileUssdMessaging::SendMessage (async & cancel (Request Not Cancelled)) passed"), iTestCount++);
 
+	sendMsg = DMMTSY_USSD_MESSAGE_PDU;
+	sendAtts.iFlags = DMMTSY_USSD_ATTRIBUTE_FLAGS;
+	sendAtts.iFormat = DMMTSY_USSD_ATTRIBUTE_FORMAT;
+	sendAtts.iType = DMMTSY_USSD_ATTRIBUTE_TYPE;
+	sendAtts.iDcs = DMMTSY_USSD_ATTRIBUTE_DCS;
+		
+	ussdMessaging.SendMessage(reqStatus, sendMsg, sendAttsPckg, RMobileUssdMessaging::ETransferToDefaultHandler);
+	User::WaitForRequest(reqStatus);
+	TEST(reqStatus.Int()==KErrNone);
+	INFO_PRINTF2(_L("Test %d - RMobileUssdMessaging::SendMessage /EMobileUssdMessagingSendMessageDefaultHandler/  passed"), iTestCount++);
+	
+	// asynchronous & cancel	
+	ussdMessaging.SendMessage(reqStatus, sendMsg, sendAttsPckg, RMobileUssdMessaging::ETransferToDefaultHandler);
+	ussdMessaging.CancelAsyncRequest(EMobileUssdMessagingSendMessageDefaultHandler);
+	User::WaitForRequest(reqStatus);
+	TEST(reqStatus.Int()==KErrNone || reqStatus.Int()==KErrCancel);
+	if (reqStatus.Int()==KErrCancel)
+		INFO_PRINTF2(_L("Test %d - RMobileUssdMessaging::SendMessage /EMobileUssdMessagingSendMessageDefaultHandler/ (async & cancel (Cancelled Request)) passed"), iTestCount++);
+	else
+		INFO_PRINTF2(_L("Test %d - RMobileUssdMessaging::SendMessage /EMobileUssdMessagingSendMessageDefaultHandler/ (async & cancel (Request Not Cancelled)) passed"), iTestCount++);
+
 //	test.Next(_L("OK: RMobileUssdMessaging's Receive & Send Message"));
 
 	// Send Message NoFdnCheck
--- a/telephonyserver/etelmultimode/bwins/ETELMMU.def	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserver/etelmultimode/bwins/ETELMMU.def	Thu Oct 07 19:32:01 2010 +0300
@@ -674,3 +674,5 @@
 	?TerminateActiveCalls@RMobilePhone@@QBEXAAVTRequestStatus@@@Z @ 673 NONAME ; void RMobilePhone::TerminateActiveCalls(class TRequestStatus &) const
 	?AcceptIncomingDialogue@RMobileUssdMessaging@@QBEHXZ @ 674 NONAME ; int RMobileUssdMessaging::AcceptIncomingDialogue(void) const
 	?RejectIncomingDialogue@RMobileUssdMessaging@@QBEHXZ @ 675 NONAME ; int RMobileUssdMessaging::RejectIncomingDialogue(void) const
+	?SendMessage@RMobileUssdMessaging@@QBEXAAVTRequestStatus@@ABVTDesC8@@1H@Z @ 676 NONAME ; void RMobileUssdMessaging::SendMessage(class TRequestStatus &, class TDesC8 const &, class TDesC8 const &, int) const
+
--- a/telephonyserver/etelmultimode/group/BLD.INF	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserver/etelmultimode/group/BLD.INF	Thu Oct 07 19:32:01 2010 +0300
@@ -50,3 +50,7 @@
 ../DTsy/Dmmtsy.mmp	support
 ../TETEL/te_EtelMM/TE_EtelMM.mmp manual
 
+// include console USSD test client
+#include "../commontsy/group/bld.inf"
+#include "../mockltsy/group/bld.inf"
+#include "../consoleussdtestclient/group/bld.inf"
Binary file telephonyserver/etelserverandcore/Documentation/platsec/API_Capability_Assignment.xls has changed
--- a/telephonyserver/etelserverandcore/EtelRecorder/playback/inc/tipclookup.h	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserver/etelserverandcore/EtelRecorder/playback/inc/tipclookup.h	Thu Oct 07 19:32:01 2010 +0300
@@ -633,6 +633,7 @@
 		{28000, _L8("EMobilePhoneSendNetworkServiceRequestNoFdnCheck")},
 		{28001, _L8("EMobileUssdMessagingSendMessage")},
 		{28002, _L8("EMobileUssdMessagingSendMessageNoFdnCheck")},
+		{28003, _L8("EMobileUssdMessagingSendMessageDefaultHandler")},
 		{28500, _L8("EMobilePhoneSendNetworkServiceRequestNoFdnCheckCancel")},
 		{28501, _L8("EMobileUssdMessagingSendMessageCancel")},
 		{28502, _L8("EMobileUssdMessagingSendMessageNoFdnCheckCancel")},
--- a/telephonyserver/etelserverandcore/INC/ET_PHONE.H	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserver/etelserverandcore/INC/ET_PHONE.H	Thu Oct 07 19:32:01 2010 +0300
@@ -282,6 +282,7 @@
     TInt ClientsDecision( const RMessage2& aMessage, CTelSession* aSession, TBool aAccepted );
 	void DeletedReqEntry( CReqEntry* aReqEntry );
 	CReqEntry* NewUpdatedReqEntry();
+	CTelObject::TReqMode GetReqMode()const; 
         
 private:
     void ConstructL();
@@ -294,8 +295,7 @@
     void Clear();
 
 public:
-	// TODO temp for testing. Is delivery manager the correct place for these
-	// or should there be a separate data storage object?
+
 	TPhoneClientId iSessionOwner;
 	TBool iSessionReserved;
 
--- a/telephonyserver/etelserverandcore/INC/ET_TSY.H	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserver/etelserverandcore/INC/ET_TSY.H	Thu Oct 07 19:32:01 2010 +0300
@@ -52,6 +52,7 @@
 const TUint KReqModeRePostImmediately=0x00000004;
 const TUint KReqModeMultipleCompletionWithInterestLevel=0x00000008;
 const TUint KReqModeSessionBased=0x00000010;
+const TUint KReqModeTransferToDefaultHandler=0x00000020;  
 
 
 class CTelObject;
--- a/telephonyserver/etelserverandcore/SETEL/ET_CORE.CPP	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserver/etelserverandcore/SETEL/ET_CORE.CPP	Thu Oct 07 19:32:01 2010 +0300
@@ -929,7 +929,6 @@
 	return NULL;
 	}
 
-/*
 EXPORT_C TInt CPhoneBase::FindSessionByTsyHandle(const TTsyReqHandle aTsyReqHandle)
 	{
 	CReqEntry* reqEntry = FindByTsyHandle(aTsyReqHandle);
@@ -952,7 +951,7 @@
 		}
 	return reqEntry->iMessage.Int3();
 	}
-*/
+
 void CPhoneBase::UpdateBuffer(CReqEntry* aUpdatedReqEntry,CReqEntry* aReqEntry)
 //
 //	Is passed both the TSY-updated request entry (which may be multi-buffered or not)
@@ -1357,7 +1356,7 @@
 				SetActive();
 				break;
 			case EInterestCategoryDefault:
-				// wait on default client (no timeout) //TODO: What if the default client doesn't respond? (Neil)
+				// wait on default client (no timeout)
 				break;
 			default:
                 // No more clients
@@ -1461,11 +1460,13 @@
 TBool CMmDeliveryObject::DeliveryInProgress() const
 	{
 	// In the case of delivery to the default client we won't be active when
-	// delivery is carried out as no timeout is used for the default client -
-	// TODO is it correct that the default client should have no timeout?
+	// delivery is carried out as no timeout is used for the default client
 	return (IsActive() || iCurrentReq);
 	}
-
+CTelObject::TReqMode CMmDeliveryObject::GetReqMode()const 
+	{
+	return iReqMode;
+	}
 TInt CMmDeliveryObject::ClientsDecision( const RMessage2& aMessage, CTelSession* aSession, TBool aAccepted )
 	{
 	if (!DeliveryInProgress())
--- a/telephonyserver/etelserverandcore/SETEL/ET_PHONE.CPP	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserver/etelserverandcore/SETEL/ET_PHONE.CPP	Thu Oct 07 19:32:01 2010 +0300
@@ -994,8 +994,8 @@
 
         // If a call is session based then it can only be used
         // when the client is the session owner.
-        if (reqMode&KReqModeSessionBased && IsSessionInProgress() 
-                /*&& aMessage.Int3() != iSessionOwner.iSubSessionId TODO*/)
+        if ( (reqMode&KReqModeSessionBased && IsSessionInProgress()) 
+        		&& (aMessage.Int3() != iDeliveryObject->iSessionOwner.iSubSessionId) )
             {
             // Each type of session only allowed to have one ongoing 'session/dialogue'.
 			RECORD_COMPLETE_SUB(aMessage.Session(), this, aMessage.Int3(), aMessage.Function(), res);
@@ -1354,7 +1354,7 @@
 			}
         }
     
-    CheckAndDestroyDummySubSession(); //TODO
+    CheckAndDestroyDummySubSession();
     }
 
 void CTelObject::RepostRequest(CReqEntry* aUpdatedReqEntry, const TInt aError)
@@ -1389,27 +1389,33 @@
 void CTelObject::SetSessionOwner(TInt aSessionHandle, TInt aSubSessionHandle)
     {
 	iDeliveryObject->iSessionOwner = TPhoneClientId(aSessionHandle, aSubSessionHandle);
-    // TODO notify TSY that the session owner has changed 
     }
 
-// TODO can be used by the TSY to set the session owner to the current request.
+// Can be used by the TSY to set the session owner to the current request.
 // For each request the CTSY is given a TsyReqHandle so this is a sensible thing
 // for it to be dealing with.
-// TODO note that once a session has an owner the reserved state is irrelevant.
+// Note that once a session has an owner the reserved state is irrelevant.
 
 EXPORT_C void CTelObject::SetSessionOwnerByTsyHandle(const TTsyReqHandle aTsyReqHandle)
     {
-//    const TInt owningsession = PhoneOwner()->FindSessionByTsyHandle( aTsyReqHandle );
-//    const TInt owningsubsession = PhoneOwner()->FindSubSessionByTsyHandle( aTsyReqHandle );
 	
-//	iSessionOwner = TPhoneClientId(owningsession, owningsubsession);
-    // TODO notify TSY that the session owner has changed 
+    const TInt owningsession = PhoneOwner()->FindSessionByTsyHandle( aTsyReqHandle );
+    const TInt owningsubsession = PhoneOwner()->FindSubSessionByTsyHandle( aTsyReqHandle );
+    
+        
+    if(iDeliveryObject->GetReqMode() == (KReqModeSessionBased | KReqModeTransferToDefaultHandler)) // transfer to default handler
+    	{
+    	iDeliveryObject->iSessionOwner = TPhoneClientId(KUssdDefaultClientSid, owningsubsession);
+    	}
+    else //not default handler
+    	{
+    	iDeliveryObject->iSessionOwner = TPhoneClientId(owningsession, owningsubsession);
+    	}
     }
 
 
 TBool CTelObject::IsSessionOwner(CReqEntry* aReqEntry) const
     {
-	// TODO Neil's experimental update
     TPhoneClientId clientId(reinterpret_cast<TInt>(aReqEntry->iSession),aReqEntry->iMessage.Int3());
 	return (clientId == iDeliveryObject->iSessionOwner);
     }
@@ -1430,7 +1436,7 @@
 
 EXPORT_C TBool CTelObject::IsSessionInProgress() const
     {
-	// TODO Neil's experimental update
+	//Indicates if there is an ongoing USSD dialogue.
 	if (iDeliveryObject)
 		{
 		return iDeliveryObject->iSessionOwner != TPhoneClientId();
@@ -1440,8 +1446,12 @@
 
 EXPORT_C TInt CTelObject::ReserveSession()
     {
-	// TODO Neil's experimental update
-	ASSERT(iDeliveryObject);
+    // There is no active session so we have to work out who to deliver it to. 
+    if (NULL == iDeliveryObject)
+    	{
+    	iDeliveryObject = CMmDeliveryObject::NewL(*this); 
+    	}
+    //Reserve the session if it is not already reserved
     if (iDeliveryObject->iSessionReserved)
         {
         return KErrInUse;
@@ -1452,21 +1462,32 @@
 
 EXPORT_C TBool CTelObject::IsSessionReserved() const
     {
-	// TODO Neil's experimental update
-    return iDeliveryObject->iSessionReserved;
+	//Check if the USSD session has been reserved
+	if (NULL != iDeliveryObject)
+		{
+		return iDeliveryObject->iSessionReserved;
+		}
+	else
+		{
+		return EFalse;
+		}
     }
 
 EXPORT_C void CTelObject::CancelReserveSession()
     {
-	// TODO Neil's experimental update
-    iDeliveryObject->iSessionReserved = EFalse;
+	if (iDeliveryObject)
+		{
+		iDeliveryObject->iSessionReserved = EFalse;
+		}
     }
 
 EXPORT_C void CTelObject::EndSession()
     {
-	// TODO Neil's experimental update
-    iDeliveryObject->iSessionOwner = TPhoneClientId();
-    iDeliveryObject->iSessionReserved = EFalse;
+	if (iDeliveryObject)
+		{
+		iDeliveryObject->iSessionOwner = TPhoneClientId();
+		iDeliveryObject->iSessionReserved = EFalse;
+		}
     }
 
 TInt CTelObject::ResolveError(CTelSession* aSession, const TInt aError) const
--- a/telephonyserver/etelserverandcore/SETEL/ET_SVR.CPP	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserver/etelserverandcore/SETEL/ET_SVR.CPP	Thu Oct 07 19:32:01 2010 +0300
@@ -674,9 +674,9 @@
 	27500,		//range is 27500-27506 inclusive
 	27507,		//range is 27507-27999 inclusive
 	28000,		//range is 28000-28002 inclusive
-	28003,		//range is 28003-28499 inclusive
+	28004,		//range is 28004-28499 inclusive
 	28500,		//range is 28500-28502 inclusive
-	28503,		//range is 28503-28999 inclusive
+	28504,		//range is 28504-28999 inclusive
 	29000,		//range is 29000-29004 inclusive
 	29005,		//range is 29005-29005 inclusive
 	29006,		//range is 29006
--- a/telephonyserverplugins/common_tsy/commontsy/inc/mmsms/cmmussdtsy.h	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserverplugins/common_tsy/commontsy/inc/mmsms/cmmussdtsy.h	Thu Oct 07 19:32:01 2010 +0300
@@ -46,6 +46,7 @@
             EMultimodeUssdSendRelease,
             EMultimodeUssdNotifyNetworkRelease,            
             EMultimodeUssdSendMessageNoFdnCheck,
+            EMultimodeUssdSendMessageDefaultHandler,
             // ATTENTION: Declare constant for those requests that need
             // own request handle record in iTsyReqHandleStore above the
             // following!
@@ -171,6 +172,14 @@
          * @param aError Completes send message request
          */
         virtual void CompleteSendMessage( TInt aError );
+        
+        /**
+		 * Complete SendMessage to Default Handler
+		 *          
+		 * 
+		 * @param aError Completes send message request
+		 */
+        virtual void CompleteSendMessageDefaultHandler( TInt aError );
 
         /**
          * Complete SendMessageNoFdnCheck
@@ -321,6 +330,15 @@
          * @return KErrNone
          */
         TInt SendMessageCancel( const TTsyReqHandle aTsyReqHandle );
+        
+        /**
+		 * Cancels an outstanding SendMessage request
+		 *          
+		 * 
+		 * @param aTsyReqHandle Request handle
+		 * @return KErrNone
+		 */
+		TInt SendMessageCancelDefaultHandler( const TTsyReqHandle aTsyReqHandle );
               
         /** 
          * Cancels an outstanding SendMessageNoFdnCheck request
@@ -462,6 +480,10 @@
      * Indicating if SendMessageNoFdnCheck request is ongoing                         
      */ 
     TUssdNoFdnCheckStatus iUssdNoFdnCheckFlag;
+    /** 
+	 * Indicating if SendMessage should send request to DefaultHandler                         
+	 */    
+    TBool iSendToDefaultHandler; 
 };
 
 #endif  // CMMUSSDTSY_H
--- a/telephonyserverplugins/common_tsy/commontsy/src/mmsms/cmmussdtsy.cpp	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserverplugins/common_tsy/commontsy/src/mmsms/cmmussdtsy.cpp	Thu Oct 07 19:32:01 2010 +0300
@@ -60,6 +60,7 @@
 
     // Initialize boolean flag
     iUssdNoFdnCheckFlag =  EUssdNoFdnCheckUnknown;
+    iSendToDefaultHandler = EFalse;
     }
 
 CMmUssdTsy* CMmUssdTsy::NewL( 
@@ -189,13 +190,23 @@
         case EMobileUssdMessagingSendMessage:
             {
             iUssdNoFdnCheckFlag = EUssdNoFdnCheckNotUsed;
+            iSendToDefaultHandler = EFalse;
             ret = SendMessageL( 
                 aTsyReqHandle, aPackage.Des1n(), aPackage.Des2n() );
             }
             break;
+        case EMobileUssdMessagingSendMessageDefaultHandler: 
+			{
+			iUssdNoFdnCheckFlag = EUssdNoFdnCheckNotUsed;
+			iSendToDefaultHandler = ETrue;
+			ret = SendMessageL( 
+				aTsyReqHandle, aPackage.Des1n(), aPackage.Des2n() );
+			}
+			break;
         case EMobileUssdMessagingSendMessageNoFdnCheck:
             {
             iUssdNoFdnCheckFlag = EUssdNoFdnCheckUsed;
+            iSendToDefaultHandler = EFalse;
             ret = SendMessageL( 
                 aTsyReqHandle, aPackage.Des1n(), aPackage.Des2n() );                
             }
@@ -252,6 +263,10 @@
             SendMessageCancel( aTsyReqHandle );
             ret = KErrNone;
             break;
+        case EMobileUssdMessagingSendMessageDefaultHandler: 
+        	SendMessageCancelDefaultHandler( aTsyReqHandle );
+        	ret = KErrNone;
+        	break;
         case EMobileUssdMessagingSendMessageNoFdnCheck:
             SendMessageNoFdnCheckCancel( aTsyReqHandle );
             ret = KErrNone;
@@ -298,17 +313,19 @@
                 KReqModeMultipleCompletionWithInterestLevel;
             break;
         // Services handled by TSY
-        case EMobileUssdMessagingSendMessage:
+        case EMobileUssdMessagingSendMessageDefaultHandler: 
+        	ret = KReqModeSessionBased | KReqModeTransferToDefaultHandler;
+        	break;
+        case EMobileUssdMessagingSendMessage:        
         case EMobileUssdMessagingSendMessageNoFdnCheck:
         case EMobileUssdMessagingSendRelease:
-            //ret = KReqModeSessionBased;
-            ret = 0;
+            ret = KReqModeSessionBased;
             break;
         case EMobileUssdMessagingNotifyNetworkRelease:
             // Multiple completion because the clients don't have to own the
             // session in order to be notified that the session has been
             // released.
-            ret = KReqModeMultipleCompletionEnabled;
+            ret = KReqModeRePostImmediately | KReqModeMultipleCompletionEnabled;
             break;
         default:
             User::Leave( KErrNotSupported );
@@ -471,7 +488,6 @@
     	}
 
     ReqCompleted( aTsyReqHandle, ret );
-
     return KErrNone;
     }
 
@@ -536,13 +552,10 @@
     TInt aError, 
 	CMmDataPackage* aDataPackage )
     {
-    // TODO if a session is in progress and this is a notification then we need to send back
-    // a USSD busy code.
-    
 TFLOGSTRING("TSY: CMmUssdTsy::CompleteReceiveMessage.\n" );
     TTsyReqHandle reqHandle = iTsyReqHandleStore->GetTsyReqHandle( 
         EMultimodeUssdReceiveMessage );
-
+        
     if ( ( EMultimodeUssdReqHandleUnknown != reqHandle ) )
         {
         // reset req handle. Returns the deleted req handle
@@ -553,7 +566,7 @@
             { 
             TDes8* unpackedReceiveUssdMessagePtr = NULL;
             RMobileUssdMessaging::TMobileUssdAttributesV1* unpackedReceiveUssdMessageAttributesPtr = NULL;            
-            aDataPackage->UnPackData (&unpackedReceiveUssdMessagePtr, &unpackedReceiveUssdMessageAttributesPtr);           
+            aDataPackage->UnPackData (&unpackedReceiveUssdMessagePtr, &unpackedReceiveUssdMessageAttributesPtr);
                                   
             if(iReceiveUssdMessagePtr->MaxLength() >= unpackedReceiveUssdMessagePtr->Length())
                	{             
@@ -584,6 +597,7 @@
 TFLOGSTRING2("TSY: CMmUssdTsy::SendMessageL: iUssdNoFdnCheckFlag: %d", iUssdNoFdnCheckFlag);  
     TInt ret = KErrNone;
 
+    
     if ( iSsTransactionOngoing )
 	    {
 	    ret = KErrServerBusy;
@@ -603,14 +617,23 @@
             ret = iMmPhone->MessageManager()->HandleRequestL( 
                 EMobileUssdMessagingSendMessageNoFdnCheck, &package );   
             }
-        if ( iUssdNoFdnCheckFlag == EUssdNoFdnCheckNotUsed ) 
+        if ( iUssdNoFdnCheckFlag == EUssdNoFdnCheckNotUsed )
             {
             // Send request to the Domestic OS layer.
-            ret = iMmPhone->MessageManager()->HandleRequestL( 
-                EMobileUssdMessagingSendMessage, &package );            
+        	if(EFalse == iSendToDefaultHandler)
+        		{
+        		ret = iMmPhone->MessageManager()->HandleRequestL( 
+        				EMobileUssdMessagingSendMessage, &package );
+        		}
+        	else //default handler 
+				{
+					ret = iMmPhone->MessageManager()->HandleRequestL( 
+						EMobileUssdMessagingSendMessageDefaultHandler, &package );            
+				}      	
             }
+        
             
-        iSsTransactionOngoing = ETrue;
+        iSsTransactionOngoing = ETrue;        
         }
 
     if ( KErrNone != ret )
@@ -621,7 +644,6 @@
         }
     else
     	{
-/* TODO
         if (!IsSessionInProgress())
             {
             // If a session isn't in progress then reserve the session to
@@ -633,7 +655,7 @@
             // affect the session or dialogue state.
             (void)ReserveSession();
             }
-*/    	
+   	
 #ifdef REQHANDLE_TIMER       
         // Check if NoFdnCheck is used or not
         if ( iUssdNoFdnCheckFlag == EUssdNoFdnCheckUsed )
@@ -642,12 +664,20 @@
             SetTypeOfResponse( EMultimodeUssdSendMessageNoFdnCheck, 
                 aTsyReqHandle );     
             }
-        if ( iUssdNoFdnCheckFlag == EUssdNoFdnCheckNotUsed ) 
+        if ( (iUssdNoFdnCheckFlag == EUssdNoFdnCheckNotUsed) &&
+        	(EFalse == iSendToDefaultHandler)) 
             {
             // Set timer for the request
             SetTypeOfResponse( EMultimodeUssdSendMessage, 
                 aTsyReqHandle );
-            }      
+            }  
+        if ( (iUssdNoFdnCheckFlag == EUssdNoFdnCheckNotUsed) && 
+			(EFalse != iSendToDefaultHandler)) //send to default hadnler 
+			   {
+			   // Set timer for the request
+			   SetTypeOfResponse( EMultimodeUssdSendMessageDefaultHandler, 
+				   aTsyReqHandle );
+			   }  
 #else
         // Check if NoFdnCheck is used or not
         if ( iUssdNoFdnCheckFlag == EUssdNoFdnCheckUsed )
@@ -680,8 +710,31 @@
     {
     // reset the req handle
     iTsyReqHandleStore->ResetTsyReqHandle( EMultimodeUssdSendMessage );
-
-//    CancelReserveSession(); TODO
+    
+    CancelReserveSession();
+    
+    // complete with cancel
+    ReqCompleted( aTsyReqHandle, KErrCancel );
+    iSsTransactionOngoing = EFalse;
+    
+    iUssdNoFdnCheckFlag = EUssdNoFdnCheckUnknown;
+    
+    return KErrNone;
+    }
+   
+// ---------------------------------------------------------------------------
+// CmmUssdTsy::SendMessageCancelDefaultHandler
+// Cancels cancelling of USSD session.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmUssdTsy::SendMessageCancelDefaultHandler(
+    const TTsyReqHandle aTsyReqHandle )
+    {
+    // reset the req handle
+    iTsyReqHandleStore->ResetTsyReqHandle( EMultimodeUssdSendMessageDefaultHandler );
+    
+    CancelReserveSession();
     
     // complete with cancel
     ReqCompleted( aTsyReqHandle, KErrCancel );
@@ -691,7 +744,45 @@
     
     return KErrNone;
     }
-    
+
+// ---------------------------------------------------------------------------
+// CMmUssdTsy::CompleteSendMessageDefaultHandler
+// Complete SendMessage 
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CMmUssdTsy::CompleteSendMessageDefaultHandler(
+    TInt aError )
+    {
+TFLOGSTRING("TSY: CMmUssdTsy::CompleteSendMessage.\n" );
+    TTsyReqHandle reqHandle = iTsyReqHandleStore->GetTsyReqHandle( 
+        /*EMultimodeUssdSendMessage*/EMultimodeUssdSendMessageDefaultHandler );
+	
+    if ( EMultimodeUssdReqHandleUnknown != reqHandle )
+        {
+        // reset req handle. Returns the deleted req handle
+        reqHandle = iTsyReqHandleStore->ResetTsyReqHandle(
+        		/*EMultimodeUssdSendMessage*/EMultimodeUssdSendMessageDefaultHandler );     
+        // If the session is already in progress then no session management
+        // action is required. Otherwise we either promote the reserved
+        // session to an open session or cancel the reservation.
+        if ( !IsSessionInProgress() && IsSessionReserved() )
+            {
+            if ( KErrNone == aError )
+                {
+                SetSessionOwnerByTsyHandle( reqHandle );
+                }
+            else
+                {
+                CancelReserveSession();
+                }
+            }
+       
+        ReqCompleted( reqHandle, aError );
+        iSsTransactionOngoing = EFalse;
+        iUssdNoFdnCheckFlag = EUssdNoFdnCheckUnknown;
+        }
+    }
 // ---------------------------------------------------------------------------
 // CMmUssdTsy::CompleteSendMessage
 // Complete SendMessage 
@@ -709,8 +800,7 @@
         {
         // reset req handle. Returns the deleted req handle
         reqHandle = iTsyReqHandleStore->ResetTsyReqHandle(
-            EMultimodeUssdSendMessage );
-/* TODO        
+        		EMultimodeUssdSendMessage );     
         // If the session is already in progress then no session management
         // action is required. Otherwise we either promote the reserved
         // session to an open session or cancel the reservation.
@@ -725,7 +815,7 @@
                 CancelReserveSession();
                 }
             }
-*/        
+       
         ReqCompleted( reqHandle, aError );
         iSsTransactionOngoing = EFalse;
         iUssdNoFdnCheckFlag = EUssdNoFdnCheckUnknown;
@@ -742,34 +832,34 @@
     const TTsyReqHandle aTsyReqHandle, 
     TDes8* aReturnResult )
     {
-/* TODO
+	
+	//Check if there is a session in progress
     if ( !IsSessionInProgress() )
         {
         // You can't release a dialogue that isn't in progress.
         return KErrDisconnected;
         }
-*/    
+
     TTsyReqHandle sendReleaseHandle = 
         iTsyReqHandleStore->GetTsyReqHandle( EMultimodeUssdSendRelease );
-
+    
     if ( 0 < sendReleaseHandle )
         {
         // The request is already in processing because of previous request
         // Complete request with status value informing the client about 
         // the situation.
-TFLOGSTRING("LTSY: CMmUssdTsy::SendRelease - KErrServerBusy");
-        ReqCompleted( aTsyReqHandle, KErrServerBusy );
+TFLOGSTRING("LTSY: CMmUssdTsy::SendRelease - KErrAccessDenied");
+        ReqCompleted( aTsyReqHandle, KErrAccessDenied );
         }
     else
         {
 TFLOGSTRING("TSY: CMmUssdTsy::SendRelease called");
-
         TInt ret = KErrGeneral;
 
         TPckg<RMobilePhone::TMobilePhoneSendSSRequestV3>* ussdSendSSRequestPckg =
             reinterpret_cast< TPckg<RMobilePhone::TMobilePhoneSendSSRequestV3>* > 
             ( aReturnResult );
-
+        
         if ( sizeof(RMobilePhone::TMobilePhoneSendSSRequestV3) >
                 ussdSendSSRequestPckg->MaxLength() )
             {
@@ -786,7 +876,7 @@
             ret = iMmPhone->MessageManager()->HandleRequestL( 
                 EMobileUssdMessagingSendRelease );
             }
-
+       
         // If ret is not KErrNone
         if ( KErrNone != ret )
             {
@@ -796,6 +886,7 @@
         	{
 #ifdef REQHANDLE_TIMER
             // Set timer for the request
+			//If there is no session in progress this line lead to crash
             SetTypeOfResponse( EMultimodeUssdSendRelease, aTsyReqHandle );
 #else
             // Save SendMessage request handle, set timer
@@ -804,7 +895,6 @@
 #endif // REQHANDLE_TIMER
         	}
         }
-
     return KErrNone;
     }
 
@@ -829,7 +919,7 @@
             {
             aDataPackage->UnPackData ( *iReturnResultPtr );
             }
-//        EndSession();     TODO   
+        EndSession(); 
         ReqCompleted( reqHandle, aErrorCode );
         }  
     }
@@ -867,6 +957,14 @@
     TDes8* aMsgAttributes) // aMsgAttributes may be NULL
     {
 TFLOGSTRING("TSY: CMmUssdTsy::NotifyNetworkRelease" );
+/*
+	//Check if there is a session in progress
+	if ( !IsSessionInProgress() )
+    {
+    // You can't release a dialogue that isn't in progress.
+    return KErrDisconnected;
+    }
+*/
 
 	if (aMsgData->MaxLength() < sizeof(RMobilePhone::TMobilePhoneSendSSRequestV3Pckg))
 		{
@@ -874,6 +972,7 @@
 	    // Complete the request with appropiate error        
 	    return KErrArgument;		
 		}
+
 	if (aMsgAttributes && 
 		aMsgAttributes->MaxLength() < sizeof(RMobileUssdMessaging::TMobileUssdAttributesV1Pckg))
 		{
@@ -881,7 +980,7 @@
 	    // Complete the request with appropiate error        
 	    return KErrArgument;			
 		}
-
+	
 	TPckg<RMobilePhone::TMobilePhoneSendSSRequestV3>* ussdSendSSRequestPckg =
             reinterpret_cast< TPckg<RMobilePhone::TMobilePhoneSendSSRequestV3>* > 
             ( aMsgData );
@@ -890,7 +989,6 @@
             ( *ussdSendSSRequestPckg )();
 
     iReturnNotifyPtr = &msgData;
-
     if (aMsgAttributes != NULL)
     	{
 	    RMobileUssdMessaging::TMobileUssdAttributesV1Pckg* ussdAttributesPckg = 
@@ -903,7 +1001,7 @@
     else
     	{
     	iReturnNotifyUssdMessageAttributesPtr = NULL;
-    	}
+    	}    
 #ifdef REQHANDLE_TIMER
     // Set timer for the request
     SetTypeOfResponse( EMultimodeUssdNotifyNetworkRelease, aTsyReqHandle );
@@ -926,7 +1024,7 @@
     TInt aErrorCode,
     CMmDataPackage* aDataPackage )
     {
-//    EndSession(); TODO
+    EndSession();
 
 TFLOGSTRING2("TSY: CMmUssdTsy::CompleteNotifyNetworkRelease. Error: %d", aErrorCode );
     // reset req handle. Returns the deleted req handle
@@ -1024,6 +1122,7 @@
     iReturnResultPtr = NULL;
     iReturnNotifyPtr = NULL;
     iReturnNotifyUssdMessageAttributesPtr = NULL;    
+    iSendToDefaultHandler = EFalse;
     }
 
 #ifdef REQHANDLE_TIMER
@@ -1044,6 +1143,7 @@
     switch ( aReqHandleType )
         {
         case EMultimodeUssdSendMessage:
+        case EMultimodeUssdSendMessageDefaultHandler: 
             timeOut = KMmUssdSendMessageTimeOut;
             break;
         case EMultimodeUssdSendMessageNoFdnCheck:
@@ -1089,7 +1189,10 @@
         // Cases handled with automatic completion
         case EMultimodeUssdSendMessage:
             CompleteSendMessage( aError );
-            break;
+            break; 
+        case EMultimodeUssdSendMessageDefaultHandler:
+             CompleteSendMessageDefaultHandler( aError );
+             break;
         case EMultimodeUssdSendMessageNoFdnCheck:
             CompleteSendMessageNoFdnCheck( aError );
             break;
@@ -1151,7 +1254,8 @@
 
     switch ( aIpc )
         {
-        case EMobileUssdMessagingSendMessage:      
+        case EMobileUssdMessagingSendMessage:     
+        case EMobileUssdMessagingSendMessageDefaultHandler: 
         case EMobileUssdMessagingSendMessageNoFdnCheck:
         case EMobileUssdMessagingSendRelease:
             isRequestPossible = EFalse;
--- a/telephonyserverplugins/common_tsy/commontsy/src/mmtsy/CMmMessageRouterProxy.cpp	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserverplugins/common_tsy/commontsy/src/mmtsy/CMmMessageRouterProxy.cpp	Thu Oct 07 19:32:01 2010 +0300
@@ -352,6 +352,7 @@
         // USSD functionality
         case EMobileUssdMessagingSendRelease:
         case EMobileUssdMessagingSendMessage:
+        case EMobileUssdMessagingSendMessageDefaultHandler: 
         case EMobileUssdMessagingSendMessageNoFdnCheck:
         case EMobileUssdMessagingReceiveMessage:
         case EMobileUssdMessagingNotifyNetworkRelease:
@@ -376,7 +377,7 @@
         case EMmTsyActivateSmsRouting:
         case EMmTsyDeactivateSmsRouting:
         case EMobileSmsMessagingReceiveMessage:
-        case EMobileSmsMessagingSendMessage:
+        case EMobileSmsMessagingSendMessage:        
         case EMobileSmsMessagingSendMessageNoFdnCheck: 
         case EMmTsySmsSendSatMessage:
         case EMobileSmsMessagingResumeSmsReception:
@@ -1515,7 +1516,11 @@
             case EMobileUssdMessagingSendMessage:                
                 static_cast<CMmUssdTsy*>( mmObject )->
                     CompleteSendMessage( aResult );
-                break;                
+                break;
+            case EMobileUssdMessagingSendMessageDefaultHandler:                 
+				static_cast<CMmUssdTsy*>( mmObject )->
+					CompleteSendMessageDefaultHandler( aResult );
+				break; 
             case EMobileUssdMessagingSendMessageNoFdnCheck:                
                 static_cast<CMmUssdTsy*>( mmObject )->
                     CompleteSendMessageNoFdnCheck( aResult );
--- a/telephonyserverplugins/common_tsy/commontsy/src/mmtsy/cmmphonetsy.cpp	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserverplugins/common_tsy/commontsy/src/mmtsy/cmmphonetsy.cpp	Thu Oct 07 19:32:01 2010 +0300
@@ -190,7 +190,7 @@
     
     //Create the SSM Plugin Handler on creation rather than on demand to avoid problems 
     //with Emergency Calls in Out Of Memory situations.
-    iSystemStatePluginHandler = CCtsySystemStatePluginHandler::NewL();
+    //iSystemStatePluginHandler = CCtsySystemStatePluginHandler::NewL();
 	
 //#ifdef __WINS__  SYMBIAN commented out
 //   iMmPhoneExtInterface->NotifySimStatusReadyL();
--- a/telephonyserverplugins/common_tsy/test/component/group/bld.inf	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserverplugins/common_tsy/test/component/group/bld.inf	Thu Oct 07 19:32:01 2010 +0300
@@ -136,6 +136,7 @@
   
 // include USSD test client
 #include "../ussdtestclient/group/bld.inf"
+#include "../consoleussdtestclient/group/bld.inf"
 
 PRJ_TESTMMPFILES
 //build test components
--- a/telephonyserverplugins/common_tsy/test/component/group/te_ctsy_component.mmp	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserverplugins/common_tsy/test/component/group/te_ctsy_component.mmp	Thu Oct 07 19:32:01 2010 +0300
@@ -24,6 +24,8 @@
 VENDORID 		0x70000001
 CAPABILITY CommDD PowerMgmt ReadDeviceData WriteDeviceData TrustedUI ProtServ NetworkControl NetworkServices LocalServices ReadUserData WriteUserData Location
 
+EPOCHEAPSIZE    0x10000 0x400000
+
 SOURCEPATH		../src
 SOURCE		cctsylbsfu.cpp
 SOURCE		cctsysmsstorefu.cpp
--- a/telephonyserverplugins/common_tsy/test/component/inc/cctsyussdmessagingfu.h	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserverplugins/common_tsy/test/component/inc/cctsyussdmessagingfu.h	Thu Oct 07 19:32:01 2010 +0300
@@ -69,13 +69,18 @@
 	void TestSendMessage0001L();
 	void TestSendMessage0002L();
 	void TestSendMessage0003L();
-	void TestSendMessage0004L();
+	void TestSendMessage0004L();	
 	void TestSendMessage0005L();
+	void TestSendMessage0006L();
 	void TestSendRelease0001L();
 	void TestSendRelease0001bL();
+	void TestSendRelease0001cL();
+	void TestSendRelease0001dL();
 	void TestSendRelease0002L();
+	void TestSendRelease0002bL();
 	void TestSendRelease0003L();
 	void TestSendRelease0004L();
+	void TestSendRelease0004bL();
 	void TestSendRelease0005L();
 	void TestReceiveMessage0001L();
 	void TestReceiveMessage0002L();
@@ -85,7 +90,8 @@
 	void TestReceiveMessage0002eL();
 	void TestReceiveMessage0002fL();
 	void TestReceiveMessage0002gL();
-	void TestReceiveMessage0002hL();	
+	void TestReceiveMessage0002hL();
+	void TestReceiveMessage0002iL();
 	void TestReceiveMessage0003L();
 	void TestReceiveMessage0004L();
 	void TestReceiveMessage0004bL();
@@ -94,9 +100,14 @@
 	void TestReceiveMessage0004eL();
 	void TestReceiveMessage0004fL();
 	void TestNotifyNetworkRelease0001L();
+	void TestNotifyNetworkRelease0001bL();
+	void TestNotifyNetworkRelease0001cL();
+	void TestNotifyNetworkRelease0001dL();
+	void TestNotifyNetworkRelease0001eL();
 	void TestNotifyNetworkRelease0002L();
 	void TestNotifyNetworkRelease0003L();
 	void TestNotifyNetworkRelease0004L();
+	void TestNotifyNetworkRelease0004bL();
 	void TestSendMessageNoFdnCheck0001L();
 	void TestSendMessageNoFdnCheck0002L();
 	void TestSendMessageNoFdnCheck0002bL();
--- a/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/cmmmessagerouter.cpp	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/cmmmessagerouter.cpp	Thu Oct 07 19:32:01 2010 +0300
@@ -358,7 +358,8 @@
         case EMobilePhoneStoreReadAllPhase1:
         case EMobilePhoneStoreWrite:
         case EMmTsySmsSendSatMessage:
-        case EMobileUssdMessagingSendMessage:
+        case EMobileUssdMessagingSendMessageDefaultHandler:
+        case EMobileUssdMessagingSendMessage:        
         case EMobileBroadcastMessagingReceiveMessage:
         case EMobileBroadcastMessagingReceiveMessageCancel:
         case EMobileBroadcastMessagingSetFilterSetting:
--- a/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/cmocksmsmesshandler.cpp	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/cmocksmsmesshandler.cpp	Thu Oct 07 19:32:01 2010 +0300
@@ -115,8 +115,9 @@
 			TMockLtsyData1<TSendSmsDataAndAttributes> data(smsData);
 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc, data);    		
     	    }
+    	case EMobileUssdMessagingSendMessageDefaultHandler:     	
     	case EMobileUssdMessagingSendMessageNoFdnCheck:
-    	case EMobileUssdMessagingSendMessage:
+    	case EMobileUssdMessagingSendMessage:    	
     		{
     		TDes8*  ptr1 = NULL;
     		TDes8** ptr2 = NULL;
--- a/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/ipcnames.cpp	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/ipcnames.cpp	Thu Oct 07 19:32:01 2010 +0300
@@ -595,6 +595,8 @@
 _LIT(KEMobileUssdMessagingSendReleaseCancel, "EMobileUssdMessagingSendReleaseCancel");
 _LIT(KEMobilePhoneSendNetworkServiceRequestNoFdnCheck, "EMobilePhoneSendNetworkServiceRequestNoFdnCheck");
 _LIT(KEMobileUssdMessagingSendMessage, "EMobileUssdMessagingSendMessage");
+_LIT(KEMobileUssdMessagingSendMessageDefaultHandler, "EMobileUssdMessagingSendMessageDefaultHandler");
+_LIT(KEMobileUssdMessagingSendMessageDefaultHandlerCancel, "EMobileUssdMessagingSendMessageDefaultHandlerCancel");
 _LIT(KEMobileUssdMessagingSendMessageNoFdnCheck, "EMobileUssdMessagingSendMessageNoFdnCheck");
 _LIT(KEMobilePhoneSendNetworkServiceRequestNoFdnCheckCancel, "EMobilePhoneSendNetworkServiceRequestNoFdnCheckCancel");
 _LIT(KEMobileUssdMessagingSendMessageCancel, "EMobileUssdMessagingSendMessageCancel");
@@ -1367,6 +1369,8 @@
 	case EMobileUssdMessagingSendReleaseCancel : return KEMobileUssdMessagingSendReleaseCancel;
 	case EMobilePhoneSendNetworkServiceRequestNoFdnCheck : return KEMobilePhoneSendNetworkServiceRequestNoFdnCheck;
 	case EMobileUssdMessagingSendMessage : return KEMobileUssdMessagingSendMessage;
+	case EMobileUssdMessagingSendMessageDefaultHandler : return KEMobileUssdMessagingSendMessageDefaultHandler;
+	case EMobileUssdMessagingSendMessageDefaultHandlerCancel : return KEMobileUssdMessagingSendMessageDefaultHandlerCancel; 
 	case EMobileUssdMessagingSendMessageNoFdnCheck : return KEMobileUssdMessagingSendMessageNoFdnCheck;
 	case EMobilePhoneSendNetworkServiceRequestNoFdnCheckCancel : return KEMobilePhoneSendNetworkServiceRequestNoFdnCheckCancel;
 	case EMobileUssdMessagingSendMessageCancel : return KEMobileUssdMessagingSendMessageCancel;
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_ussdmessaging_individual.script	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_ussdmessaging_individual.script	Thu Oct 07 19:32:01 2010 +0300
@@ -16,280 +16,13 @@
 
 LOAD_SUITE te_ctsy_component
 
-START_TESTCASE BA-CTSY-USSDM-USM-0001
-//!@SYMTestCaseID BA-CTSY-USSDM-USM-0001
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendMessage
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes RMobileUssdMessaging::SendMessage
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendMessage0001L
-END_TESTCASE BA-CTSY-USSDM-USM-0001
-
-START_TESTCASE BA-CTSY-USSDM-USM-0002
-//!@SYMTestCaseID BA-CTSY-USSDM-USM-0002
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileUssdMessaging::SendMessage
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes cancelling of RMobileUssdMessaging::SendMessage
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendMessage0002L
-END_TESTCASE BA-CTSY-USSDM-USM-0002
-
-START_TESTCASE BA-CTSY-USSDM-USM-0003
-//!@SYMTestCaseID BA-CTSY-USSDM-USM-0003
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendMessage with bad parameter data
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes RMobileUssdMessaging::SendMessage with bad parameter data
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendMessage0003L
-END_TESTCASE BA-CTSY-USSDM-USM-0003
-
-START_TESTCASE BA-CTSY-USSDM-USM-0004
-//!@SYMTestCaseID BA-CTSY-USSDM-USM-0004
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::SendMessage
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::SendMessage
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendMessage0004L
-END_TESTCASE BA-CTSY-USSDM-USM-0004
-
-START_TESTCASE BA-CTSY-USSDM-USR-0001
-//!@SYMTestCaseID BA-CTSY-USSDM-USR-0001
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendRelease
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes RMobileUssdMessaging::SendRelease
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendRelease0001L
-END_TESTCASE BA-CTSY-USSDM-USR-0001
-
-START_TESTCASE BA-CTSY-USSDM-USR-0001b
-//!@SYMTestCaseID BA-CTSY-USSDM-USR-0001b
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendRelease
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes RMobileUssdMessaging::SendRelease
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendRelease0001bL
-END_TESTCASE BA-CTSY-USSDM-USR-0001b
-
-START_TESTCASE BA-CTSY-USSDM-USR-0002
-//!@SYMTestCaseID BA-CTSY-USSDM-USR-0002
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileUssdMessaging::SendRelease
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes cancelling of RMobileUssdMessaging::SendRelease
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendRelease0002L
-END_TESTCASE BA-CTSY-USSDM-USR-0002
-
-START_TESTCASE BA-CTSY-USSDM-USR-0003
-//!@SYMTestCaseID BA-CTSY-USSDM-USR-0003
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendRelease with bad parameter data
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes RMobileUssdMessaging::SendRelease with bad parameter data
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendRelease0003L
-END_TESTCASE BA-CTSY-USSDM-USR-0003
-
-START_TESTCASE BA-CTSY-USSDM-USR-0004
-//!@SYMTestCaseID BA-CTSY-USSDM-USR-0004
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::SendRelease
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::SendRelease
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendRelease0004L
-END_TESTCASE BA-CTSY-USSDM-USR-0004
-
-START_TESTCASE BA-CTSY-USSDM-URM-0001
-//!@SYMTestCaseID BA-CTSY-USSDM-URM-0001
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::ReceiveMessage
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes RMobileUssdMessaging::ReceiveMessage
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0001L
-END_TESTCASE BA-CTSY-USSDM-URM-0001
-
-START_TESTCASE BA-CTSY-USSDM-URM-0002
-//!@SYMTestCaseID BA-CTSY-USSDM-URM-0002
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileUssdMessaging::ReceiveMessage
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes cancelling of RMobileUssdMessaging::ReceiveMessage (including via calling Close).
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0002L
-END_TESTCASE BA-CTSY-USSDM-URM-0002
-
-START_TESTCASE BA-CTSY-USSDM-URM-0002b
-//!@SYMTestCaseID BA-CTSY-USSDM-URM-0002b
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test cancelling of ReceiveMessage with multiple interested clients.
-//!@SYMTestPriority High
-//!@SYMTestActions Two clients present, first client calls Cancel before message received.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0002bL
-END_TESTCASE BA-CTSY-USSDM-URM-0002b
+// The USSD test client is copied into new executables with differing SIDs to differentiate
+//  between a priority/default/normal clients.
+//
+RUN_PROGRAM -1 setcap ussdtestclient.exe FFFFFFFE -SID 11111111 ussdtestclient_priority.exe
+RUN_PROGRAM -1 setcap ussdtestclient.exe FFFFFFFE -SID 55555555 ussdtestclient_normal.exe
+RUN_PROGRAM -1 setcap ussdtestclient.exe FFFFFFFE -SID 22222222 ussdtestclient_default.exe
 
-START_TESTCASE BA-CTSY-USSDM-URM-0002c
-//!@SYMTestCaseID BA-CTSY-USSDM-URM-0002c
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test cancelling of ReceiveMessage with multiple interested clients.
-//!@SYMTestPriority High
-//!@SYMTestActions Two clients present, first client calls Cancel AFTER accepting dialogue.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0002cL
-END_TESTCASE BA-CTSY-USSDM-URM-0002c
-
-START_TESTCASE BA-CTSY-USSDM-URM-0002d
-//!@SYMTestCaseID BA-CTSY-USSDM-URM-0002d
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test cancelling of ReceiveMessage with multiple interested clients.
-//!@SYMTestPriority High
-//!@SYMTestActions Two clients present, second client calls Cancel.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0002dL
-END_TESTCASE BA-CTSY-USSDM-URM-0002d
-
-START_TESTCASE BA-CTSY-USSDM-URM-0002e
-//!@SYMTestCaseID BA-CTSY-USSDM-URM-0002e
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test cancelling of ReceiveMessage with multiple interested clients.
-//!@SYMTestPriority High
-//!@SYMTestActions Two clients present, second client calls Close().
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0002eL
-END_TESTCASE BA-CTSY-USSDM-URM-0002e
-
-START_TESTCASE BA-CTSY-USSDM-URM-0002f
-//!@SYMTestCaseID BA-CTSY-USSDM-URM-0002f
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test cancelling of ReceiveMessage with multiple interested clients.
-//!@SYMTestPriority High
-//!@SYMTestActions Cancel one of the clients in the middle of a delivery. 
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0002fL
-END_TESTCASE BA-CTSY-USSDM-URM-0002f
-
-START_TESTCASE BA-CTSY-USSDM-URM-0002g
-//!@SYMTestCaseID BA-CTSY-USSDM-URM-0002g
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test cancelling of ReceiveMessage with multiple interested clients.
-//!@SYMTestPriority High
-//!@SYMTestActions Have two clients. Request offered to 1st. 1st client cancels. 2nd client should now be offered request.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0002gL
-END_TESTCASE BA-CTSY-USSDM-URM-0002g
-
-START_TESTCASE BA-CTSY-USSDM-URM-0002h
-//!@SYMTestCaseID BA-CTSY-USSDM-URM-0002h
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test cancelling of ReceiveMessage with multiple interested clients.
-//!@SYMTestPriority High
-//!@SYMTestActions Have two clients. Request offered to 1st. 1st client cancels. 2nd client should now be offered request.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0002hL
-END_TESTCASE BA-CTSY-USSDM-URM-0002h
-
-START_TESTCASE BA-CTSY-USSDM-URM-0003
-//!@SYMTestCaseID BA-CTSY-USSDM-URM-0003
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::ReceiveMessage with bad parameter data
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes RMobileUssdMessaging::ReceiveMessage with bad parameter data
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0003L
-END_TESTCASE BA-CTSY-USSDM-URM-0003
-
-START_TESTCASE BA-CTSY-USSDM-URM-0004
-//!@SYMTestCaseID BA-CTSY-USSDM-URM-0004
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::ReceiveMessage
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::ReceiveMessage
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0004L
-END_TESTCASE BA-CTSY-USSDM-URM-0004
-
-START_TESTCASE BA-CTSY-USSDM-URM-0004b
-//!@SYMTestCaseID BA-CTSY-USSDM-URM-0004b
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::ReceiveMessage
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::ReceiveMessage
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0004bL
-END_TESTCASE BA-CTSY-USSDM-URM-0004b
-
-START_TESTCASE BA-CTSY-USSDM-URM-0004c
-//!@SYMTestCaseID BA-CTSY-USSDM-URM-0004c
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::ReceiveMessage
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::ReceiveMessage
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0004cL
-END_TESTCASE BA-CTSY-USSDM-URM-0004c
-
-START_TESTCASE BA-CTSY-USSDM-URM-0004d
-//!@SYMTestCaseID BA-CTSY-USSDM-URM-0004d
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::ReceiveMessage
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::ReceiveMessage
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0004dL
-END_TESTCASE BA-CTSY-USSDM-URM-0004d
-
-START_TESTCASE BA-CTSY-USSDM-URM-0004e
-//!@SYMTestCaseID BA-CTSY-USSDM-URM-0004e
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::ReceiveMessage
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::ReceiveMessage
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0004eL
-END_TESTCASE BA-CTSY-USSDM-URM-0004e
-
-START_TESTCASE BA-CTSY-USSDM-URM-0004f
-//!@SYMTestCaseID BA-CTSY-USSDM-URM-0004f
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::ReceiveMessage
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::ReceiveMessage
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0004fL
-END_TESTCASE BA-CTSY-USSDM-URM-0004f
 START_TESTCASE BA-CTSY-USSDM-UNNR-0001
 //!@SYMTestCaseID BA-CTSY-USSDM-UNNR-0001
 //!@SYMComponent telephony_ctsy
@@ -301,27 +34,38 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestNotifyNetworkRelease0001L
 END_TESTCASE BA-CTSY-USSDM-UNNR-0001
 
-START_TESTCASE BA-CTSY-USSDM-UNNR-0002
-//!@SYMTestCaseID BA-CTSY-USSDM-UNNR-0002
+START_TESTCASE BA-CTSY-USSDM-UNNR-0001e
+//!@SYMTestCaseID BA-CTSY-USSDM-UNNR-0001e
 //!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileUssdMessaging::NotifyNetworkRelease
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::NotifyNetworkRelease
 //!@SYMTestPriority High
-//!@SYMTestActions Invokes cancelling of RMobileUssdMessaging::NotifyNetworkRelease
+//!@SYMTestActions Invokes RMobileUssdMessaging::NotifyNetworkRelease
 //!@SYMTestExpectedResults Pass
 //!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestNotifyNetworkRelease0002L
-END_TESTCASE BA-CTSY-USSDM-UNNR-0002
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestNotifyNetworkRelease0001eL
+END_TESTCASE BA-CTSY-USSDM-UNNR-0001e
 
-START_TESTCASE BA-CTSY-USSDM-UNNR-0003
-//!@SYMTestCaseID BA-CTSY-USSDM-UNNR-0003
+START_TESTCASE BA-CTSY-USSDM-UNNR-0001c
+//!@SYMTestCaseID BA-CTSY-USSDM-UNNR-0001c
 //!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::NotifyNetworkRelease with bad parameter data
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::NotifyNetworkRelease
 //!@SYMTestPriority High
-//!@SYMTestActions Invokes RMobileUssdMessaging::NotifyNetworkRelease with bad parameter data
+//!@SYMTestActions Invokes RMobileUssdMessaging::NotifyNetworkRelease
 //!@SYMTestExpectedResults Pass
 //!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestNotifyNetworkRelease0003L
-END_TESTCASE BA-CTSY-USSDM-UNNR-0003
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestNotifyNetworkRelease0001cL
+END_TESTCASE BA-CTSY-USSDM-UNNR-0001c
+
+START_TESTCASE BA-CTSY-USSDM-UNNR-0001d
+//!@SYMTestCaseID BA-CTSY-USSDM-UNNR-0001d
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::NotifyNetworkRelease before accepting a dialogue
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::NotifyNetworkRelease
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestNotifyNetworkRelease0001dL
+END_TESTCASE BA-CTSY-USSDM-UNNR-0001d
 
 START_TESTCASE BA-CTSY-USSDM-UNNR-0004
 //!@SYMTestCaseID BA-CTSY-USSDM-UNNR-0004
@@ -334,78 +78,16 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestNotifyNetworkRelease0004L
 END_TESTCASE BA-CTSY-USSDM-UNNR-0004
 
-START_TESTCASE BA-CTSY-USSDM-USMNFC-0001
-//!@SYMTestCaseID BA-CTSY-USSDM-USMNFC-0001
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendMessageNoFdnCheck
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes RMobileUssdMessaging::SendMessageNoFdnCheck
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendMessageNoFdnCheck0001L
-END_TESTCASE BA-CTSY-USSDM-USMNFC-0001
-
-START_TESTCASE BA-CTSY-USSDM-USMNFC-0002
-//!@SYMTestCaseID BA-CTSY-USSDM-USMNFC-0002
+START_TESTCASE BA-CTSY-USSDM-UNNR-0004b
+//!@SYMTestCaseID BA-CTSY-USSDM-UNNR-0004b
 //!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileUssdMessaging::SendMessageNoFdnCheck
+//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::NotifyNetworkRelease
 //!@SYMTestPriority High
-//!@SYMTestActions Invokes cancelling of RMobileUssdMessaging::SendMessageNoFdnCheck
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendMessageNoFdnCheck0002L
-END_TESTCASE BA-CTSY-USSDM-USMNFC-0002
-
-START_TESTCASE BA-CTSY-USSDM-USMNFC-0003
-//!@SYMTestCaseID BA-CTSY-USSDM-USMNFC-0003
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendMessageNoFdnCheck with bad parameter data
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes RMobileUssdMessaging::SendMessageNoFdnCheck with bad parameter data
+//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::NotifyNetworkRelease
 //!@SYMTestExpectedResults Pass
 //!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendMessageNoFdnCheck0003L
-END_TESTCASE BA-CTSY-USSDM-USMNFC-0003
-
-START_TESTCASE BA-CTSY-USSDM-USMNFC-0004
-//!@SYMTestCaseID BA-CTSY-USSDM-USMNFC-0004
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::SendMessageNoFdnCheck
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::SendMessageNoFdnCheck
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendMessageNoFdnCheck0004L
-END_TESTCASE BA-CTSY-USSDM-USMNFC-0004
-
-START_TESTCASE BA-CTSY-USSDM-UGC-0001
-//!@SYMTestCaseID BA-CTSY-USSDM-UGC-0001
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::GetCaps
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes RMobileUssdMessaging::GetCaps
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestGetCaps0001L
-END_TESTCASE BA-CTSY-USSDM-UGC-0001
-
-START_TESTCASE BA-CTSY-USSDM-UGC-0003
-//!@SYMTestCaseID BA-CTSY-USSDM-UGC-0003
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::GetCaps with bad parameter data
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes RMobileUssdMessaging::GetCaps with bad parameter data
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
-RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestGetCaps0003L
-END_TESTCASE BA-CTSY-USSDM-UGC-0003
-
-// The USSD test client is copied into new executables with differing SIDs to differentiate
-//  between a priority/default/normal clients.
-//
-RUN_PROGRAM -1 setcap ussdtestclient.exe FFFFFFFE -SID 11111111 ussdtestclient_priority.exe
-RUN_PROGRAM -1 setcap ussdtestclient.exe FFFFFFFE -SID 55555555 ussdtestclient_normal.exe
-RUN_PROGRAM -1 setcap ussdtestclient.exe FFFFFFFE -SID 22222222 ussdtestclient_default.exe
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestNotifyNetworkRelease0004bL
+END_TESTCASE BA-CTSY-USSDM-UNNR-0004b
 
 START_TESTCASE BA-CTSY-USSDM-URM-0005
 //!@SYMTestCaseID BA-CTSY-USSDM-URM-0005
@@ -568,6 +250,41 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessageWithTestClient0016L
 END_TESTCASE BA-CTSY-USSDM-URM-0020
 
+START_TESTCASE BA-CTSY-USSDM-URM-0021
+//!@SYMTestCaseID BA-CTSY-USSDM-URM-0021
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test ReceiveMessage with multiple clients.
+//!@SYMTestPriority High
+//!@SYMTestActions Two clients, both call ReceiveMessage. 
+// A message is received. First client offered message. Both clients call Close.
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessageWithTestClient0017L
+END_TESTCASE BA-CTSY-USSDM-URM-0021
+
+START_TESTCASE BA-CTSY-USSDM-UGC-0001
+//!@SYMTestCaseID BA-CTSY-USSDM-UGC-0001
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::GetCaps
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::GetCaps
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestGetCaps0001L
+END_TESTCASE BA-CTSY-USSDM-UGC-0001
+
+START_TESTCASE BA-CTSY-USSDM-UGC-0003
+//!@SYMTestCaseID BA-CTSY-USSDM-UGC-0003
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::GetCaps with bad parameter data
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::GetCaps with bad parameter data
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestGetCaps0003L
+END_TESTCASE BA-CTSY-USSDM-UGC-0003
+
+START_TESTCASE BA-CTSY-USSDM-UARM-0001
 //!@SYMComponent telephony_ctsy
 //!@SYMTestCaseDesc Test calling accept and reject before a session has been created
 //!@SYMTestPriority High
@@ -598,3 +315,457 @@
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestMultipleIncomingUssdMessages0001L
 END_TESTCASE BA-CTSY-USSDM-MIUM-0001
+
+START_TESTCASE BA-CTSY-USSDM-USMNFC-0001
+//!@SYMTestCaseID BA-CTSY-USSDM-USMNFC-0001
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendMessageNoFdnCheck
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::SendMessageNoFdnCheck
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendMessageNoFdnCheck0001L
+END_TESTCASE BA-CTSY-USSDM-USMNFC-0001
+
+START_TESTCASE BA-CTSY-USSDM-USMNFC-0002
+//!@SYMTestCaseID BA-CTSY-USSDM-USMNFC-0002
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileUssdMessaging::SendMessageNoFdnCheck
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes cancelling of RMobileUssdMessaging::SendMessageNoFdnCheck
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendMessageNoFdnCheck0002L
+END_TESTCASE BA-CTSY-USSDM-USMNFC-0002
+
+START_TESTCASE BA-CTSY-USSDM-USMNFC-0003
+//!@SYMTestCaseID BA-CTSY-USSDM-USMNFC-0003
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendMessageNoFdnCheck with bad parameter data
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::SendMessageNoFdnCheck with bad parameter data
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendMessageNoFdnCheck0003L
+END_TESTCASE BA-CTSY-USSDM-USMNFC-0003
+
+START_TESTCASE BA-CTSY-USSDM-USMNFC-0004
+//!@SYMTestCaseID BA-CTSY-USSDM-USMNFC-0004
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::SendMessageNoFdnCheck
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::SendMessageNoFdnCheck
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendMessageNoFdnCheck0004L
+END_TESTCASE BA-CTSY-USSDM-USMNFC-0004
+
+START_TESTCASE BA-CTSY-USSDM-USM-0001
+//!@SYMTestCaseID BA-CTSY-USSDM-USM-0001
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendMessage
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::SendMessage
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendMessage0001L
+END_TESTCASE BA-CTSY-USSDM-USM-0001
+
+START_TESTCASE BA-CTSY-USSDM-USM-0002
+//!@SYMTestCaseID BA-CTSY-USSDM-USM-0002
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileUssdMessaging::SendMessage
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes cancelling of RMobileUssdMessaging::SendMessage
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendMessage0002L
+END_TESTCASE BA-CTSY-USSDM-USM-0002
+
+START_TESTCASE BA-CTSY-USSDM-USM-0003
+//!@SYMTestCaseID BA-CTSY-USSDM-USM-0003
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendMessage with bad parameter data
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::SendMessage with bad parameter data
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendMessage0003L
+END_TESTCASE BA-CTSY-USSDM-USM-0003
+
+START_TESTCASE BA-CTSY-USSDM-USM-0004
+//!@SYMTestCaseID BA-CTSY-USSDM-USM-0004
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::SendMessage
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::SendMessage
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendMessage0004L
+END_TESTCASE BA-CTSY-USSDM-USM-0004
+
+START_TESTCASE BA-CTSY-USSDM-USM-0005
+//!@SYMTestCaseID BA-CTSY-USSDM-USM-0005
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendMessage
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::SendMessage
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendMessage0005L
+END_TESTCASE BA-CTSY-USSDM-USM-0005
+
+START_TESTCASE BA-CTSY-USSDM-USM-0006
+//!@SYMTestCaseID BA-CTSY-USSDM-USM-0006
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendMessage DefaultHandler
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::SendMessage DefaultHandler
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendMessage0006L
+END_TESTCASE BA-CTSY-USSDM-USM-0006
+
+START_TESTCASE BA-CTSY-USSDM-USR-0001
+//!@SYMTestCaseID BA-CTSY-USSDM-USR-0001
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendRelease
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::SendRelease
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendRelease0001L
+END_TESTCASE BA-CTSY-USSDM-USR-0001
+
+START_TESTCASE BA-CTSY-USSDM-USR-0001b
+//!@SYMTestCaseID BA-CTSY-USSDM-USR-0001b
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendRelease
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::SendRelease
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendRelease0001bL
+END_TESTCASE BA-CTSY-USSDM-USR-0001b
+
+START_TESTCASE BA-CTSY-USSDM-USR-0001c
+//!@SYMTestCaseID BA-CTSY-USSDM-USR-0001c
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendRelease  without USSD session in progress
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::SendRelease
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendRelease0001cL
+END_TESTCASE BA-CTSY-USSDM-USR-0001c
+
+START_TESTCASE BA-CTSY-USSDM-USR-0001d
+//!@SYMTestCaseID BA-CTSY-USSDM-USR-0001d
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for failure on completion of pending comRMobileUssdMessaging::SendRelease request from LTSY->CTSY
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::SendRelease
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendRelease0001dL
+END_TESTCASE BA-CTSY-USSDM-USR-0001d
+
+START_TESTCASE BA-CTSY-USSDM-USR-0002
+//!@SYMTestCaseID BA-CTSY-USSDM-USR-0002
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileUssdMessaging::SendRelease
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes cancelling of RMobileUssdMessaging::SendRelease
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendRelease0002L
+END_TESTCASE BA-CTSY-USSDM-USR-0002
+
+START_TESTCASE BA-CTSY-USSDM-USR-0002b
+//!@SYMTestCaseID BA-CTSY-USSDM-USR-0002b
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileUssdMessaging::SendRelease
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes cancelling of RMobileUssdMessaging::SendRelease
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendRelease0002bL
+END_TESTCASE BA-CTSY-USSDM-USR-0002b
+
+START_TESTCASE BA-CTSY-USSDM-USR-0003
+//!@SYMTestCaseID BA-CTSY-USSDM-USR-0003
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendRelease with bad parameter data
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::SendRelease with bad parameter data
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendRelease0003L
+END_TESTCASE BA-CTSY-USSDM-USR-0003
+
+START_TESTCASE BA-CTSY-USSDM-USR-0004
+//!@SYMTestCaseID BA-CTSY-USSDM-USR-0004
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::SendRelease
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::SendRelease
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendRelease0004L
+END_TESTCASE BA-CTSY-USSDM-USR-0004
+
+START_TESTCASE BA-CTSY-USSDM-USR-0004b
+//!@SYMTestCaseID BA-CTSY-USSDM-USR-0004b
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::SendRelease
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::SendRelease
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendRelease0004bL
+END_TESTCASE BA-CTSY-USSDM-USR-0004b
+
+START_TESTCASE BA-CTSY-USSDM-USR-0005
+//!@SYMTestCaseID BA-CTSY-USSDM-USR-0005
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc est support in CTSY for RMobileUssdMessaging::SendRelease with timeout
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::SendRelease and tests for timeout
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestSendRelease0005L
+END_TESTCASE BA-CTSY-USSDM-USR-0005
+
+START_TESTCASE BA-CTSY-USSDM-UNNR-0001
+//!@SYMTestCaseID BA-CTSY-USSDM-UNNR-0001
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::NotifyNetworkRelease
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::NotifyNetworkRelease
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestNotifyNetworkRelease0001L
+END_TESTCASE BA-CTSY-USSDM-UNNR-0001
+
+START_TESTCASE BA-CTSY-USSDM-UNNR-0001b
+//!@SYMTestCaseID BA-CTSY-USSDM-UNNR-0001b
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::NotifyNetworkRelease with optional paramter
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::NotifyNetworkRelease
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestNotifyNetworkRelease0001bL
+END_TESTCASE BA-CTSY-USSDM-UNNR-0001b
+
+START_TESTCASE BA-CTSY-USSDM-UNNR-0002
+//!@SYMTestCaseID BA-CTSY-USSDM-UNNR-0002
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileUssdMessaging::NotifyNetworkRelease
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes cancelling of RMobileUssdMessaging::NotifyNetworkRelease
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestNotifyNetworkRelease0002L
+END_TESTCASE BA-CTSY-USSDM-UNNR-0002
+
+START_TESTCASE BA-CTSY-USSDM-UNNR-0003
+//!@SYMTestCaseID BA-CTSY-USSDM-UNNR-0003
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::NotifyNetworkRelease with bad parameter data
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::NotifyNetworkRelease with bad parameter data
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestNotifyNetworkRelease0003L
+END_TESTCASE BA-CTSY-USSDM-UNNR-0003
+
+START_TESTCASE BA-CTSY-USSDM-URM-0001
+//!@SYMTestCaseID BA-CTSY-USSDM-URM-0001
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::ReceiveMessage
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::ReceiveMessage
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0001L
+END_TESTCASE BA-CTSY-USSDM-URM-0001
+
+START_TESTCASE BA-CTSY-USSDM-URM-0002
+//!@SYMTestCaseID BA-CTSY-USSDM-URM-0002
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileUssdMessaging::ReceiveMessage
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes cancelling of RMobileUssdMessaging::ReceiveMessage (including via calling Close).
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0002L
+END_TESTCASE BA-CTSY-USSDM-URM-0002
+
+START_TESTCASE BA-CTSY-USSDM-URM-0002b
+//!@SYMTestCaseID BA-CTSY-USSDM-URM-0002b
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test cancelling of ReceiveMessage with multiple interested clients.
+//!@SYMTestPriority High
+//!@SYMTestActions Two clients present, first client calls Cancel before message received.
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0002bL
+END_TESTCASE BA-CTSY-USSDM-URM-0002b
+
+START_TESTCASE BA-CTSY-USSDM-URM-0002c
+//!@SYMTestCaseID BA-CTSY-USSDM-URM-0002c
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test cancelling of ReceiveMessage with multiple interested clients.
+//!@SYMTestPriority High
+//!@SYMTestActions Two clients present, first client calls Cancel AFTER accepting dialogue.
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0002cL
+END_TESTCASE BA-CTSY-USSDM-URM-0002c
+
+START_TESTCASE BA-CTSY-USSDM-URM-0002d
+//!@SYMTestCaseID BA-CTSY-USSDM-URM-0002d
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test cancelling of ReceiveMessage with multiple interested clients.
+//!@SYMTestPriority High
+//!@SYMTestActions Two clients present, second client calls Cancel.
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0002dL
+END_TESTCASE BA-CTSY-USSDM-URM-0002d
+
+START_TESTCASE BA-CTSY-USSDM-URM-0002e
+//!@SYMTestCaseID BA-CTSY-USSDM-URM-0002e
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test cancelling of ReceiveMessage with multiple interested clients.
+//!@SYMTestPriority High
+//!@SYMTestActions Two clients present, second client calls Close().
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0002eL
+END_TESTCASE BA-CTSY-USSDM-URM-0002e
+
+START_TESTCASE BA-CTSY-USSDM-URM-0002f
+//!@SYMTestCaseID BA-CTSY-USSDM-URM-0002f
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test cancelling of ReceiveMessage with multiple interested clients.
+//!@SYMTestPriority High
+//!@SYMTestActions Cancel one of the clients in the middle of a delivery. 
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0002fL
+END_TESTCASE BA-CTSY-USSDM-URM-0002f
+
+START_TESTCASE BA-CTSY-USSDM-URM-0002g
+//!@SYMTestCaseID BA-CTSY-USSDM-URM-0002g
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test cancelling of ReceiveMessage with multiple interested clients.
+//!@SYMTestPriority High
+//!@SYMTestActions Have two clients. Request offered to 1st. 1st client cancels. 2nd client should now be offered request.
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0002gL
+END_TESTCASE BA-CTSY-USSDM-URM-0002g
+
+START_TESTCASE BA-CTSY-USSDM-URM-0002h
+//!@SYMTestCaseID BA-CTSY-USSDM-URM-0002h
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test cancelling of ReceiveMessage with multiple interested clients.
+//!@SYMTestPriority High
+//!@SYMTestActions Have two clients. Request offered to 1st. 1st client cancels. 2nd client should now be offered request.
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0002hL
+END_TESTCASE BA-CTSY-USSDM-URM-0002h
+
+START_TESTCASE BA-CTSY-USSDM-URM-0002i
+//!@SYMTestCaseID BA-CTSY-USSDM-URM-0002i
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support of RMobileUssdMessaging::ReceiveMessage for consecutive reception of two USSD dialogues/messages by two different clients. 
+//!@SYMTestPriority High
+//!@SYMTestActions Two clients present, first client calls Cancel before message received.
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0002iL
+END_TESTCASE BA-CTSY-USSDM-URM-0002i
+
+START_TESTCASE BA-CTSY-USSDM-URM-0003
+//!@SYMTestCaseID BA-CTSY-USSDM-URM-0003
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::ReceiveMessage with bad parameter data
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes RMobileUssdMessaging::ReceiveMessage with bad parameter data
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0003L
+END_TESTCASE BA-CTSY-USSDM-URM-0003
+
+START_TESTCASE BA-CTSY-USSDM-URM-0004
+//!@SYMTestCaseID BA-CTSY-USSDM-URM-0004
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::ReceiveMessage
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::ReceiveMessage
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0004L
+END_TESTCASE BA-CTSY-USSDM-URM-0004
+
+START_TESTCASE BA-CTSY-USSDM-URM-0004b
+//!@SYMTestCaseID BA-CTSY-USSDM-URM-0004b
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::ReceiveMessage
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::ReceiveMessage
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0004bL
+END_TESTCASE BA-CTSY-USSDM-URM-0004b
+
+START_TESTCASE BA-CTSY-USSDM-URM-0004c
+//!@SYMTestCaseID BA-CTSY-USSDM-URM-0004c
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::ReceiveMessage
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::ReceiveMessage
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0004cL
+END_TESTCASE BA-CTSY-USSDM-URM-0004c
+
+START_TESTCASE BA-CTSY-USSDM-URM-0004d
+//!@SYMTestCaseID BA-CTSY-USSDM-URM-0004d
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::ReceiveMessage
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::ReceiveMessage
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0004dL
+END_TESTCASE BA-CTSY-USSDM-URM-0004d
+
+START_TESTCASE BA-CTSY-USSDM-URM-0004e
+//!@SYMTestCaseID BA-CTSY-USSDM-URM-0004e
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::ReceiveMessage
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::ReceiveMessage
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0004eL
+END_TESTCASE BA-CTSY-USSDM-URM-0004e
+
+START_TESTCASE BA-CTSY-USSDM-URM-0004f
+//!@SYMTestCaseID BA-CTSY-USSDM-URM-0004f
+//!@SYMComponent telephony_ctsy
+//!@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::ReceiveMessage
+//!@SYMTestPriority High
+//!@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::ReceiveMessage
+//!@SYMTestExpectedResults Pass
+//!@SYMTestType CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestReceiveMessage0004fL
+END_TESTCASE BA-CTSY-USSDM-URM-0004f
+
+
+
--- a/telephonyserverplugins/common_tsy/test/component/src/cctsyussdmessagingfu.cpp	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserverplugins/common_tsy/test/component/src/cctsyussdmessagingfu.cpp	Thu Oct 07 19:32:01 2010 +0300
@@ -32,17 +32,21 @@
 CTestSuite* CCTsyUssdMessagingFU::CreateSuiteL(const TDesC& aName)
 	{
 	SUB_SUITE;
-
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestSendMessage0001L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestSendMessage0002L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestSendMessage0003L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestSendMessage0004L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestSendMessage0005L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestSendMessage0006L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestSendRelease0001L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestSendRelease0001bL);
+	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestSendRelease0001cL);
+	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestSendRelease0001dL);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestSendRelease0002L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestSendRelease0002bL);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestSendRelease0003L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestSendRelease0004L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestSendRelease0004bL);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestSendRelease0005L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestReceiveMessage0001L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestReceiveMessage0002L);
@@ -53,17 +57,23 @@
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestReceiveMessage0002fL);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestReceiveMessage0002gL);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestReceiveMessage0002hL);
+	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestReceiveMessage0002iL);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestReceiveMessage0003L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestReceiveMessage0004L);
-	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestReceiveMessage0004bL);
+	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestReceiveMessage0004bL);	
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestReceiveMessage0004cL);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestReceiveMessage0004dL);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestReceiveMessage0004eL);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestReceiveMessage0004fL);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestNotifyNetworkRelease0001L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestNotifyNetworkRelease0001eL);
+	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestNotifyNetworkRelease0001bL);
+	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestNotifyNetworkRelease0001cL);
+	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestNotifyNetworkRelease0001dL);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestNotifyNetworkRelease0002L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestNotifyNetworkRelease0003L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestNotifyNetworkRelease0004L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestNotifyNetworkRelease0004bL);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestSendMessageNoFdnCheck0001L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestSendMessageNoFdnCheck0002L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestSendMessageNoFdnCheck0003L);
@@ -89,8 +99,8 @@
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestAcceptRejectMisuse0001L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestAcceptRejectMisuse0002L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyUssdMessagingFU, TestMultipleIncomingUssdMessages0001L);
-
 	END_SUITE;
+	
 	}
 
 
@@ -230,7 +240,6 @@
 
 	}
 
-
 /**
 @SYMTestCaseID BA-CTSY-USSDM-USM-0002
 @SYMComponent  telephony_ctsy
@@ -443,12 +452,42 @@
 
 	TMockLtsyData2<TName, RMobileUssdMessaging::TMobileUssdAttributesV1> 
 		mockData2(name1, attributes1);
+	mockData2.SerialiseL(data);
+
+	RBuf8 data3;
+	CleanupClosePushL(data3);
+
+	RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+	    TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+	    
+	RMobileUssdMessaging::TGsmUssdMessageData name;
+
+	//-------------------------------------------------------------------------
+
+	RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttributes;
+
+	completeAttributes.iFlags  = flags;
+	completeAttributes.iFormat = format;
+	completeAttributes.iType   = type;
+	completeAttributes.iDcs    = dcs;
+	
+	TBuf8<KMaxName> completeName = _L8("Name1");
+
+	TMockLtsyData2<TBuf8<KMaxName>, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+		mockData3(completeName, completeAttributes);
+	mockData3.SerialiseL(data3);
 
 	//-------------------------------------------------------------------------
 	// Test A: Test multiple clients requesting RMobileUssdMessaging::SendMessage
  	//-------------------------------------------------------------------------
-
-	mockData2.SerialiseL(data);
+	iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data3);
+
+	ussdMessaging1.ReceiveMessage(requestStatus1, name, msgAttributes);   
+	User::WaitForRequest(requestStatus1);        
+	ret = requestStatus1.Int();
+	ASSERT_EQUALS(KErrNone, ret);
+	ussdMessaging1.AcceptIncomingDialogue();
+	
     iMockLTSY.ExpectL(EMobileUssdMessagingSendMessage, data);
     iMockLTSY.CompleteL(EMobileUssdMessagingSendMessage, KErrNone, 10);
 	ussdMessaging1.SendMessage(requestStatus1, msgData1, msgAttributes1);
@@ -462,8 +501,8 @@
 	AssertMockLtsyStatusL();
 	ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());	
 
-	CleanupStack::PopAndDestroy(6, this); // phone2, telServer2, data, this, 
-	                                      // ussdMessaging1, ussdMessaging2
+	CleanupStack::PopAndDestroy(7, this); // phone2, telServer2, data, this, 
+	                                      // ussdMessaging1, ussdMessaging2, data3
 
 	}
 
@@ -536,17 +575,16 @@
 
 	}
 
-
 /**
-@SYMTestCaseID BA-CTSY-USSDM-USR-0001
+@SYMTestCaseID BA-CTSY-USSDM-USM-0006
 @SYMComponent  telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendRelease
+@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendMessage DefaultHandler
 @SYMTestPriority High
-@SYMTestActions Invokes RMobileUssdMessaging::SendRelease
+@SYMTestActions Invokes RMobileUssdMessaging::SendMessage DefaultHandler
 @SYMTestExpectedResults Pass
 @SYMTestType CT
 */
-void CCTsyUssdMessagingFU::TestSendRelease0001L()
+void CCTsyUssdMessagingFU::TestSendMessage0006L()
 	{
 
 	OpenEtelServerL(EUseExtendedError);
@@ -561,46 +599,214 @@
 	ASSERT_EQUALS(KErrNone, ret);
 	CleanupClosePushL(ussdMessaging);
 	
+	TRequestStatus requestStatus;
+
+	TUint32 flags = 100;
+	RMobileUssdMessaging::TMobileUssdDataFormat format = RMobileUssdMessaging::EFormatUnspecified;
+	RMobileUssdMessaging::TMobileUssdMessageType type  = RMobileUssdMessaging::EUssdMORequest;
+	TUint8 dcs = 200;
+
+ 	//-------------------------------------------------------------------------
+	// function parameters
+
+	RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+	TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+	
+	attributes.iFlags  = flags;
+	attributes.iFormat = format;
+	attributes.iType   = type;
+	attributes.iDcs   = dcs;
+	
+	TName name = _L("Name1");
+	TPckg<TName> msgData(name);
+
+ 	//-------------------------------------------------------------------------
+
+	TMockLtsyData2<TName, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+		mockData2(name, attributes);
+	mockData2.SerialiseL(data);
+	
+ 	//-------------------------------------------------------------------------
+	// TEST A: failure to dispatch request to LTSY
+ 	//-------------------------------------------------------------------------
+	
+	
+    iMockLTSY.ExpectL(EMobileUssdMessagingSendMessageDefaultHandler, data, KErrNotSupported);
+
+	ussdMessaging.SendMessage(requestStatus, msgData, msgAttributes, RMobileUssdMessaging::ETransferToDefaultHandler);
+	
+    User::WaitForRequest(requestStatus);        
+	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());	
+	
+	//-------------------------------------------------------------------------
+	// TEST B: failure on completion of pending request from LTSY->CTSY
+ 	//-------------------------------------------------------------------------
+
+    iMockLTSY.ExpectL(EMobileUssdMessagingSendMessageDefaultHandler, data);
+    iMockLTSY.CompleteL(EMobileUssdMessagingSendMessageDefaultHandler, KErrGeneral);
+
+	ussdMessaging.SendMessage(requestStatus, msgData, msgAttributes, RMobileUssdMessaging::ETransferToDefaultHandler);
+	
+    User::WaitForRequest(requestStatus);        
+	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrGeneral, requestStatus.Int());	
+	
+ 	//-------------------------------------------------------------------------
+	// TEST C: Successful completion request of
+	// RMobileUssdMessaging::SendMessage when result is not cached.
+ 	//-------------------------------------------------------------------------
+
+    iMockLTSY.ExpectL(EMobileUssdMessagingSendMessageDefaultHandler, data);
+    iMockLTSY.CompleteL(EMobileUssdMessagingSendMessageDefaultHandler, KErrNone);
+
+	ussdMessaging.SendMessage(requestStatus, msgData, msgAttributes, RMobileUssdMessaging::ETransferToDefaultHandler);
+	
+    User::WaitForRequest(requestStatus);        
+	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrNone, requestStatus.Int());	
+	
+ 	//-------------------------------------------------------------------------
+	// TEST E: Unsolicited completion of RMobileUssdMessaging::SendMessage
+	// from LTSY.
+ 	//-------------------------------------------------------------------------
+
     TRequestStatus mockLtsyStatus;
-	TRequestStatus requestStatus;
-
+
+	iMockLTSY.NotifyTerminated(mockLtsyStatus);
+	iMockLTSY.CompleteL(EMobileUssdMessagingSendMessageDefaultHandler, KErrNone);
+	User::WaitForRequest(mockLtsyStatus);
+	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ 	//-------------------------------------------------------------------------
+	// TEST : to increase CMmUssdTsy::ExtFunc coverage
+	// covers "if ( ERfsStateInfoInactive == iMmPhone->GetRfStateInfo() && 
+	// ( !IsRequestPossibleInOffline( aIpc ) ) )" condition
+ 	//-------------------------------------------------------------------------
+
+	iMockLTSY.NotifyTerminated(mockLtsyStatus);
+	TRfStateInfo rfInfo = ERfsStateInfoInactive;
+	TMockLtsyData1<TRfStateInfo> mockData1(rfInfo);
+	
+	data.Close();
+	mockData1.SerialiseL(data);
+
+	iMockLTSY.CompleteL(EMmTsyBootGetRFStatusIPC, KErrNone, data);
+	User::WaitForRequest(mockLtsyStatus);
+	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+	ussdMessaging.SendMessage(requestStatus, msgData, msgAttributes);
+
+	User::WaitForRequest(requestStatus);        
+	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrGsmOfflineOpNotAllowed, requestStatus.Int());	
+	
+	CleanupStack::PopAndDestroy(3, this); // data, this, ussdMessaging
+
+	}
+
+/**
+@SYMTestCaseID BA-CTSY-USSDM-USR-0001
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendRelease
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileUssdMessaging::SendRelease
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyUssdMessagingFU::TestSendRelease0001L()
+	{
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    RMobileUssdMessaging ussdMessaging;
+    TInt ret = ussdMessaging.Open(iPhone);
+    ASSERT_EQUALS(KErrNone, ret);
+    CleanupClosePushL(ussdMessaging);
+    
+    //-------------------------------------------------------------------------
+    // Setup: This block is taken from TestReceiveMessage0001L. All we want to
+    // do is to initiate a dialogue and then end it. Once the dialogue has ended
+    // then we can call Accept and Reject.
+    //------------------------------------------------------------------------- 
+    
+    TRequestStatus requestStatus;
+        
+    TRequestStatus mockLtsyStatus;
+
+    TUint32 flags = 100;
+    RMobileUssdMessaging::TMobileUssdDataFormat format = RMobileUssdMessaging::EFormatUnspecified;
+    RMobileUssdMessaging::TMobileUssdMessageType type  = RMobileUssdMessaging::EUssdMORequest;
+    TUint8 dcs = 200;
+
+    //-------------------------------------------------------------------------
+    // function parameters
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+    TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+    
+    RMobileUssdMessaging::TGsmUssdMessageData name;
+
+    //-------------------------------------------------------------------------
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttributes;
+
+    completeAttributes.iFlags  = flags;
+    completeAttributes.iFormat = format;
+    completeAttributes.iType   = type;
+    completeAttributes.iDcs    = dcs;
+    
+    TBuf8<KMaxName> completeName = _L8("Name1");
+
+    TMockLtsyData2<TBuf8<KMaxName>, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+        mockData2(completeName, completeAttributes);
+    mockData2.SerialiseL(data);
+    
+    iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data);
+
+    ussdMessaging.ReceiveMessage(requestStatus, name, msgAttributes);   
+    User::WaitForRequest(requestStatus);        
+    ret = requestStatus.Int();
+    ASSERT_EQUALS(KErrNone, ret);
+    ussdMessaging.AcceptIncomingDialogue();
+    
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+    
+    //-------------------------------------------------------------------------
+    // Release the dialogue
+    //------------------------------------------------------------------------- 
+    
  	//-------------------------------------------------------------------------
 	// function parameters
 	
 	RMobilePhone::TMobilePhoneSendSSRequestV3 sendV3;
 	TPckg<RMobilePhone::TMobilePhoneSendSSRequestV3> pckgSendV3(sendV3);
-	
+		
  	//-------------------------------------------------------------------------
 
 	RMobilePhone::TMobilePhoneSendSSRequestV3 completeSendV3;
-
+	
 	TUint8 opCode = 100;
 	_LIT(KAdditionalInfo1, "additionalInfo1");
-	
+		
 	completeSendV3.iOpCode         = opCode;
 	completeSendV3.iAdditionalInfo = KAdditionalInfo1;
-
-	TMockLtsyData1< RMobilePhone::TMobilePhoneSendSSRequestV3 > mockData1(completeSendV3);
-
+	
+	TMockLtsyData1< RMobilePhone::TMobilePhoneSendSSRequestV3 > mockData1(completeSendV3);	
 	mockData1.SerialiseL(data);
-
-	//-------------------------------------------------------------------------
-	// TEST B: failure on completion of pending request from LTSY->CTSY
- 	//-------------------------------------------------------------------------
-
-    iMockLTSY.ExpectL(EMobileUssdMessagingSendRelease);
-    iMockLTSY.CompleteL(EMobileUssdMessagingSendRelease, KErrGeneral, data);
-	ussdMessaging.SendRelease(requestStatus, pckgSendV3);
-	
-    User::WaitForRequest(requestStatus);        
-	AssertMockLtsyStatusL();
-	ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
+	
  	//-------------------------------------------------------------------------
 	// TEST C: Successful completion request of
 	// RMobileUssdMessaging::SendRelease when result is not cached.
  	//-------------------------------------------------------------------------
-
+	
 	iMockLTSY.ExpectL(EMobileUssdMessagingSendRelease);
 	iMockLTSY.CompleteL(EMobileUssdMessagingSendRelease, KErrNone, data);
 	ussdMessaging.SendRelease(requestStatus, pckgSendV3);
@@ -608,9 +814,10 @@
     User::WaitForRequest(requestStatus);        
 	AssertMockLtsyStatusL();
 	ASSERT_EQUALS(KErrNone, requestStatus.Int());	
+	
 	ASSERT_EQUALS(opCode, sendV3.iOpCode);	
-	ASSERT_EQUALS(0, completeSendV3.iAdditionalInfo.Compare(sendV3.iAdditionalInfo));	
-
+	ASSERT_EQUALS(0, completeSendV3.iAdditionalInfo.Compare(sendV3.iAdditionalInfo));
+	
 	//-------------------------------------------------------------------------
 	// TEST E: Unsolicited completion of RMobileUssdMessaging::SendRelease
 	// from LTSY.
@@ -621,9 +828,8 @@
 	User::WaitForRequest(mockLtsyStatus);
 	AssertMockLtsyStatusL();
 	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
-	CleanupStack::PopAndDestroy(3, this); // data, this, ussdMessaging
-	
+	
+    CleanupStack::PopAndDestroy(3, this); // data, this, ussdMessaging, dataTest
 	}
 
 /**
@@ -637,21 +843,70 @@
 */
 void CCTsyUssdMessagingFU::TestSendRelease0001bL()
 	{
-	OpenEtelServerL(EUseExtendedError);
-	CleanupStack::PushL(TCleanupItem(Cleanup,this));
-	OpenPhoneL();
-
-	RBuf8 data;
-	CleanupClosePushL(data);
-
-	TRequestStatus mockLtsyStatus;
-	TRequestStatus requestStatus;
-
-	RMobileUssdMessaging ussdMessaging;
-	TInt ret = ussdMessaging.Open(iPhone);
-	ASSERT_EQUALS(KErrNone, ret);
-	CleanupClosePushL(ussdMessaging);
-
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    RMobileUssdMessaging ussdMessaging;
+    TInt ret = ussdMessaging.Open(iPhone);
+    ASSERT_EQUALS(KErrNone, ret);
+    CleanupClosePushL(ussdMessaging);
+    
+    //-------------------------------------------------------------------------
+    // Setup: This block is taken from TestReceiveMessage0001L. All we want to
+    // do is to initiate a dialogue and then end it. Once the dialogue has ended
+    // then we can call Accept and Reject.
+    //------------------------------------------------------------------------- 
+    
+    TRequestStatus requestStatus;
+    TRequestStatus mockLtsyStatus;
+
+    TUint32 flags = 100;
+    RMobileUssdMessaging::TMobileUssdDataFormat format = RMobileUssdMessaging::EFormatUnspecified;
+    RMobileUssdMessaging::TMobileUssdMessageType type  = RMobileUssdMessaging::EUssdMORequest;
+    TUint8 dcs = 200;
+
+    //-------------------------------------------------------------------------
+    // function parameters
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+    TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+    
+    RMobileUssdMessaging::TGsmUssdMessageData name;
+
+    //-------------------------------------------------------------------------
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttributes;
+
+    completeAttributes.iFlags  = flags;
+    completeAttributes.iFormat = format;
+    completeAttributes.iType   = type;
+    completeAttributes.iDcs    = dcs;
+    
+    TBuf8<KMaxName> completeName = _L8("Name1");
+
+    TMockLtsyData2<TBuf8<KMaxName>, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+        mockData2(completeName, completeAttributes);
+    mockData2.SerialiseL(data);
+    
+    iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data);
+
+    ussdMessaging.ReceiveMessage(requestStatus, name, msgAttributes);   
+    User::WaitForRequest(requestStatus);        
+    ret = requestStatus.Int();
+    ASSERT_EQUALS(KErrNone, ret);
+    ussdMessaging.AcceptIncomingDialogue();
+    
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+    
+    //-------------------------------------------------------------------------
+    // Release the dialogue
+    //------------------------------------------------------------------------- 
+	
  	//-------------------------------------------------------------------------
 	// function parameters
 	
@@ -679,7 +934,7 @@
     iMockLTSY.ExpectL(EMobileUssdMessagingSendRelease, KErrNotSupported);
 	ussdMessaging.SendRelease(requestStatus, pckgSendV3);
 	
-    User::WaitForRequest(requestStatus);        
+    User::WaitForRequest(requestStatus);
 	AssertMockLtsyStatusL();
 	ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
 
@@ -696,7 +951,176 @@
 	AssertMockLtsyStatusL();
 
 	CleanupStack::PopAndDestroy(3); // data, this, ussdMessaging
-
+	}
+
+/**
+@SYMTestCaseID BA-CTSY-USSDM-USR-0006
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendRelease without USSD session in progress
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileUssdMessaging::SendRelease
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyUssdMessagingFU::TestSendRelease0001cL()
+	{
+		
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+
+	RMobileUssdMessaging ussdMessaging;
+	TInt ret = ussdMessaging.Open(iPhone);
+	ASSERT_EQUALS(KErrNone, ret);
+	CleanupClosePushL(ussdMessaging);
+		
+    TRequestStatus mockLtsyStatus;
+	TRequestStatus requestStatus;
+		
+ 	//-------------------------------------------------------------------------
+	// function parameters
+	
+	RMobilePhone::TMobilePhoneSendSSRequestV3 sendV3;
+	TPckg<RMobilePhone::TMobilePhoneSendSSRequestV3> pckgSendV3(sendV3);
+		
+ 	//-------------------------------------------------------------------------
+
+	RMobilePhone::TMobilePhoneSendSSRequestV3 completeSendV3;
+
+	TUint8 opCode = 100;
+	_LIT(KAdditionalInfo1, "additionalInfo1");
+		
+	completeSendV3.iOpCode         = opCode;
+	completeSendV3.iAdditionalInfo = KAdditionalInfo1;
+	
+	TMockLtsyData1< RMobilePhone::TMobilePhoneSendSSRequestV3 > mockData1(completeSendV3);	
+	mockData1.SerialiseL(data);
+		
+	//-------------------------------------------------------------------------
+	// TEST A: failure because there is no USSD session in progress
+ 	//-------------------------------------------------------------------------
+	
+	ussdMessaging.SendRelease(requestStatus, pckgSendV3);
+		
+    User::WaitForRequest(requestStatus);
+	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrDisconnected, requestStatus.Int());
+		
+	CleanupStack::PopAndDestroy(3, this); // data, this, ussdMessaging
+	
+	}
+
+/**
+@SYMTestCaseID BA-CTSY-USSDM-USR-0001d
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for failure on completion of pending comRMobileUssdMessaging::SendRelease request from LTSY->CTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileUssdMessaging::SendRelease
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyUssdMessagingFU::TestSendRelease0001dL()
+	{
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    RMobileUssdMessaging ussdMessaging;
+    TInt ret = ussdMessaging.Open(iPhone);
+    ASSERT_EQUALS(KErrNone, ret);
+    CleanupClosePushL(ussdMessaging);
+    
+    //-------------------------------------------------------------------------
+    // Setup: This block is taken from TestReceiveMessage0001L. All we want to
+    // do is to initiate a dialogue and then end it. Once the dialogue has ended
+    // then we can call Accept and Reject.
+    //------------------------------------------------------------------------- 
+    
+    TRequestStatus requestStatus;
+        
+    TRequestStatus mockLtsyStatus;
+
+    TUint32 flags = 100;
+    RMobileUssdMessaging::TMobileUssdDataFormat format = RMobileUssdMessaging::EFormatUnspecified;
+    RMobileUssdMessaging::TMobileUssdMessageType type  = RMobileUssdMessaging::EUssdMORequest;
+    TUint8 dcs = 200;
+
+    //-------------------------------------------------------------------------
+    // function parameters
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+    TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+    
+    RMobileUssdMessaging::TGsmUssdMessageData name;
+
+    //-------------------------------------------------------------------------
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttributes;
+
+    completeAttributes.iFlags  = flags;
+    completeAttributes.iFormat = format;
+    completeAttributes.iType   = type;
+    completeAttributes.iDcs    = dcs;
+    
+    TBuf8<KMaxName> completeName = _L8("Name1");
+
+    TMockLtsyData2<TBuf8<KMaxName>, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+        mockData2(completeName, completeAttributes);
+    mockData2.SerialiseL(data);
+    
+    iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data);
+
+    ussdMessaging.ReceiveMessage(requestStatus, name, msgAttributes);   
+    User::WaitForRequest(requestStatus);        
+    ret = requestStatus.Int();
+    ASSERT_EQUALS(KErrNone, ret);
+    ussdMessaging.AcceptIncomingDialogue();
+    
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+    
+    //-------------------------------------------------------------------------
+    // Release the dialogue
+    //------------------------------------------------------------------------- 
+    
+ 	//-------------------------------------------------------------------------
+	// function parameters
+	
+	RMobilePhone::TMobilePhoneSendSSRequestV3 sendV3;
+	TPckg<RMobilePhone::TMobilePhoneSendSSRequestV3> pckgSendV3(sendV3);
+		
+ 	//-------------------------------------------------------------------------
+
+	RMobilePhone::TMobilePhoneSendSSRequestV3 completeSendV3;
+	
+	TUint8 opCode = 100;
+	_LIT(KAdditionalInfo1, "additionalInfo1");
+		
+	completeSendV3.iOpCode         = opCode;
+	completeSendV3.iAdditionalInfo = KAdditionalInfo1;
+	
+	TMockLtsyData1< RMobilePhone::TMobilePhoneSendSSRequestV3 > mockData1(completeSendV3);	
+	mockData1.SerialiseL(data);
+	
+	//-------------------------------------------------------------------------
+	// Failure on completion of pending request from LTSY->CTSY
+ 	//-------------------------------------------------------------------------
+	
+    iMockLTSY.ExpectL(EMobileUssdMessagingSendRelease);
+    iMockLTSY.CompleteL(EMobileUssdMessagingSendRelease, KErrGeneral, data);
+	ussdMessaging.SendRelease(requestStatus, pckgSendV3);
+		
+    User::WaitForRequest(requestStatus);
+	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+	
+    CleanupStack::PopAndDestroy(3, this); // data, this, ussdMessaging, dataTest
 	}
 
 /**
@@ -710,22 +1134,70 @@
 */
 void CCTsyUssdMessagingFU::TestSendRelease0002L()
 	{
-
-	OpenEtelServerL(EUseExtendedError);
-	CleanupStack::PushL(TCleanupItem(Cleanup,this));
-	OpenPhoneL();
-
-	RBuf8 data;
-	CleanupClosePushL(data);
-
-	TRequestStatus mockLtsyStatus;
-	TRequestStatus requestStatus;
-
-	RMobileUssdMessaging ussdMessaging;
-	TInt ret = ussdMessaging.Open(iPhone);
-	ASSERT_EQUALS(KErrNone, ret);
-	CleanupClosePushL(ussdMessaging);
-
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    RMobileUssdMessaging ussdMessaging;
+    TInt ret = ussdMessaging.Open(iPhone);
+    ASSERT_EQUALS(KErrNone, ret);
+    CleanupClosePushL(ussdMessaging);
+    
+    //-------------------------------------------------------------------------
+    // Setup: This block is taken from TestReceiveMessage0001L. All we want to
+    // do is to initiate a dialogue and then end it. Once the dialogue has ended
+    // then we can call Accept and Reject.
+    //------------------------------------------------------------------------- 
+    
+    TRequestStatus requestStatus;
+    TRequestStatus mockLtsyStatus;
+
+    TUint32 flags = 100;
+    RMobileUssdMessaging::TMobileUssdDataFormat format = RMobileUssdMessaging::EFormatUnspecified;
+    RMobileUssdMessaging::TMobileUssdMessageType type  = RMobileUssdMessaging::EUssdMORequest;
+    TUint8 dcs = 200;
+
+    //-------------------------------------------------------------------------
+    // function parameters
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+    TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+    
+    RMobileUssdMessaging::TGsmUssdMessageData name;
+
+    //-------------------------------------------------------------------------
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttributes;
+
+    completeAttributes.iFlags  = flags;
+    completeAttributes.iFormat = format;
+    completeAttributes.iType   = type;
+    completeAttributes.iDcs    = dcs;
+    
+    TBuf8<KMaxName> completeName = _L8("Name1");
+
+    TMockLtsyData2<TBuf8<KMaxName>, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+        mockData2(completeName, completeAttributes);
+    mockData2.SerialiseL(data);
+    
+    iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data);
+
+    ussdMessaging.ReceiveMessage(requestStatus, name, msgAttributes);   
+    User::WaitForRequest(requestStatus);        
+    ret = requestStatus.Int();
+    ASSERT_EQUALS(KErrNone, ret);
+    ussdMessaging.AcceptIncomingDialogue();
+    
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+    
+    //-------------------------------------------------------------------------
+    // Release the dialogue
+    //------------------------------------------------------------------------- 
+	
  	//-------------------------------------------------------------------------
 	// function parameters
 	
@@ -771,6 +1243,111 @@
 
 
 /**
+@SYMTestCaseID BA-CTSY-USSDM-USR-0002b
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileUssdMessaging::SendRelease
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RMobileUssdMessaging::SendRelease
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyUssdMessagingFU::TestSendRelease0002bL()
+	{
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+
+	RMobileUssdMessaging ussdMessaging;
+	TInt ret = ussdMessaging.Open(iPhone);
+	ASSERT_EQUALS(KErrNone, ret);
+	CleanupClosePushL(ussdMessaging);
+	
+	//-------------------------------------------------------------------------
+	// Setup: This block is taken from TestReceiveMessage0001L. All we want to
+	// do is to initiate a dialogue and then end it. Once the dialogue has ended
+	// then we can call Accept and Reject.
+	//------------------------------------------------------------------------- 
+	
+	TRequestStatus requestStatus;
+	TRequestStatus mockLtsyStatus;
+
+	TUint32 flags = 100;
+	RMobileUssdMessaging::TMobileUssdDataFormat format = RMobileUssdMessaging::EFormatUnspecified;
+	RMobileUssdMessaging::TMobileUssdMessageType type  = RMobileUssdMessaging::EUssdMTRequest;
+	TUint8 dcs = 200;
+
+	//-------------------------------------------------------------------------
+	// function parameters
+
+	RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+	TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+	
+	RMobileUssdMessaging::TGsmUssdMessageData name;
+
+	//-------------------------------------------------------------------------
+
+	RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttributes;
+
+	completeAttributes.iFlags  = flags;
+	completeAttributes.iFormat = format;
+	completeAttributes.iType   = type;
+	completeAttributes.iDcs    = dcs;
+	
+	TBuf8<KMaxName> completeName = _L8("Name1");
+
+	TMockLtsyData2<TBuf8<KMaxName>, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+		mockData2(completeName, completeAttributes);
+	mockData2.SerialiseL(data);
+	
+	iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data);
+
+	ussdMessaging.ReceiveMessage(requestStatus, name, msgAttributes);   
+	User::WaitForRequest(requestStatus);        
+	ret = requestStatus.Int();
+	ASSERT_EQUALS(KErrNone, ret);
+			
+	//-------------------------------------------------------------------------
+	// Release the dialogue
+	//------------------------------------------------------------------------- 
+	
+	//-------------------------------------------------------------------------
+	// function parameters
+	
+	RMobilePhone::TMobilePhoneSendSSRequestV3 sendV3;
+	TPckg<RMobilePhone::TMobilePhoneSendSSRequestV3> pckgSendV3(sendV3);
+	
+	//-------------------------------------------------------------------------
+
+	RMobilePhone::TMobilePhoneSendSSRequestV3 completeSendV3;
+
+	TUint8 opCode = 100;
+	_LIT(KAdditionalInfo1, "additionalInfo1");
+	
+	completeSendV3.iOpCode         = opCode;
+	completeSendV3.iAdditionalInfo = KAdditionalInfo1;
+
+	TMockLtsyData1< RMobilePhone::TMobilePhoneSendSSRequestV3 > mockData1(completeSendV3);
+
+	mockData1.SerialiseL(data);
+	
+	//-------------------------------------------------------------------------
+
+	ussdMessaging.SendRelease(requestStatus, pckgSendV3);
+	
+	ussdMessaging.AcceptIncomingDialogue();		    
+	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrDisconnected, requestStatus.Int());
+
+	CleanupStack::PopAndDestroy(3); // data, this, ussdMessaging
+	
+	}
+
+
+
+/**
 @SYMTestCaseID BA-CTSY-USSDM-USR-0003
 @SYMComponent  telephony_ctsy
 @SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::SendRelease with bad parameter data
@@ -781,21 +1358,70 @@
 */
 void CCTsyUssdMessagingFU::TestSendRelease0003L()
 	{
-
-	OpenEtelServerL(EUseExtendedError);
-	CleanupStack::PushL(TCleanupItem(Cleanup,this));
-	OpenPhoneL();
-
-	RBuf8 data;
-	CleanupClosePushL(data);
-
-	TRequestStatus requestStatus;
-
-	RMobileUssdMessaging ussdMessaging;
-	TInt ret = ussdMessaging.Open(iPhone);
-	ASSERT_EQUALS(KErrNone, ret);
-	CleanupClosePushL(ussdMessaging);
-
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    RMobileUssdMessaging ussdMessaging;
+    TInt ret = ussdMessaging.Open(iPhone);
+    ASSERT_EQUALS(KErrNone, ret);
+    CleanupClosePushL(ussdMessaging);
+    
+    //-------------------------------------------------------------------------
+    // Setup: This block is taken from TestReceiveMessage0001L. All we want to
+    // do is to initiate a dialogue and then end it. Once the dialogue has ended
+    // then we can call Accept and Reject.
+    //------------------------------------------------------------------------- 
+    
+    TRequestStatus requestStatus;
+    TRequestStatus mockLtsyStatus;
+
+    TUint32 flags = 100;
+    RMobileUssdMessaging::TMobileUssdDataFormat format = RMobileUssdMessaging::EFormatUnspecified;
+    RMobileUssdMessaging::TMobileUssdMessageType type  = RMobileUssdMessaging::EUssdMORequest;
+    TUint8 dcs = 200;
+
+    //-------------------------------------------------------------------------
+    // function parameters
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+    TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+    
+    RMobileUssdMessaging::TGsmUssdMessageData name;
+
+    //-------------------------------------------------------------------------
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttributes;
+
+    completeAttributes.iFlags  = flags;
+    completeAttributes.iFormat = format;
+    completeAttributes.iType   = type;
+    completeAttributes.iDcs    = dcs;
+    
+    TBuf8<KMaxName> completeName = _L8("Name1");
+
+    TMockLtsyData2<TBuf8<KMaxName>, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+        mockData2(completeName, completeAttributes);
+    mockData2.SerialiseL(data);
+    
+    iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data);
+
+    ussdMessaging.ReceiveMessage(requestStatus, name, msgAttributes);   
+    User::WaitForRequest(requestStatus);        
+    ret = requestStatus.Int();
+    ASSERT_EQUALS(KErrNone, ret);
+    ussdMessaging.AcceptIncomingDialogue();
+    
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+    
+    //-------------------------------------------------------------------------
+    // Release the dialogue
+    //------------------------------------------------------------------------- 
+    
  	//-------------------------------------------------------------------------
 
 	RMobilePhone::TMobilePhoneSendSSRequestV3 completeSendV3;
@@ -822,7 +1448,7 @@
 	ASSERT_EQUALS(KErrArgument, requestStatus.Int());
 	
 	CleanupStack::PopAndDestroy(3, this); // data, this, ussdMessaging
-
+	
 	}
 
 
@@ -837,27 +1463,81 @@
 */
 void CCTsyUssdMessagingFU::TestSendRelease0004L()
 	{
-
-	OpenEtelServerL(EUseExtendedError);
-	CleanupStack::PushL(TCleanupItem(Cleanup,this));
-	OpenPhoneL();
-
-	// Open second client
-	RTelServer telServer2;
-	TInt ret = telServer2.Connect();
-	ASSERT_EQUALS(KErrNone, ret);
-	CleanupClosePushL(telServer2);
-
-	RMobilePhone phone2;
-	ret = phone2.Open(telServer2,KMmTsyPhoneName);
-	ASSERT_EQUALS(KErrNone, ret);
-	CleanupClosePushL(phone2);
-
-	RMobileUssdMessaging ussdMessaging1;
-	ret = ussdMessaging1.Open(iPhone);
-	ASSERT_EQUALS(KErrNone, ret);
-	CleanupClosePushL(ussdMessaging1);
-
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    RMobileUssdMessaging ussdMessaging;
+    TInt ret = ussdMessaging.Open(iPhone);
+    ASSERT_EQUALS(KErrNone, ret);
+    CleanupClosePushL(ussdMessaging);
+    
+    //-------------------------------------------------------------------------
+    // Setup: This block is taken from TestReceiveMessage0001L. All we want to
+    // do is to initiate a dialogue and then end it. Once the dialogue has ended
+    // then we can call Accept and Reject.
+    //------------------------------------------------------------------------- 
+    
+    TRequestStatus requestStatus;
+    TRequestStatus mockLtsyStatus;
+
+    TUint32 flags = 100;
+    RMobileUssdMessaging::TMobileUssdDataFormat format = RMobileUssdMessaging::EFormatUnspecified;
+    RMobileUssdMessaging::TMobileUssdMessageType type  = RMobileUssdMessaging::EUssdMORequest;
+    TUint8 dcs = 200;
+
+    //-------------------------------------------------------------------------
+    // function parameters
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+    TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+    
+    RMobileUssdMessaging::TGsmUssdMessageData name;
+
+    //-------------------------------------------------------------------------
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttributes;
+
+    completeAttributes.iFlags  = flags;
+    completeAttributes.iFormat = format;
+    completeAttributes.iType   = type;
+    completeAttributes.iDcs    = dcs;
+    
+    TBuf8<KMaxName> completeName = _L8("Name1");
+
+    TMockLtsyData2<TBuf8<KMaxName>, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+        mockData2(completeName, completeAttributes);
+    mockData2.SerialiseL(data);
+    
+    iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data);
+
+    ussdMessaging.ReceiveMessage(requestStatus, name, msgAttributes);   
+    User::WaitForRequest(requestStatus);        
+    ret = requestStatus.Int();
+    ASSERT_EQUALS(KErrNone, ret);
+    ussdMessaging.AcceptIncomingDialogue();
+    
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+    
+    //-------------------------------------------------------------------------
+    // Release the dialogue
+    //------------------------------------------------------------------------- 
+
+    // Open second client
+    RTelServer telServer2;
+	ret = telServer2.Connect();
+    ASSERT_EQUALS(KErrNone, ret);
+    CleanupClosePushL(telServer2);
+
+    RMobilePhone phone2;
+    ret = phone2.Open(telServer2,KMmTsyPhoneName);
+    ASSERT_EQUALS(KErrNone, ret);
+    CleanupClosePushL(phone2);
+    
 	RMobileUssdMessaging ussdMessaging2;
 	ret = ussdMessaging2.Open(phone2);
 	ASSERT_EQUALS(KErrNone, ret);
@@ -894,28 +1574,152 @@
 	// Test A: Test multiple clients requesting RMobileUssdMessaging::SendRelease
  	//-------------------------------------------------------------------------
 	
-	RBuf8 data;
-	CleanupClosePushL(data); // PUSH
 	mockData11.SerialiseL(data);
 	iMockLTSY.ExpectL(EMobileUssdMessagingSendRelease);
 	iMockLTSY.CompleteL(EMobileUssdMessagingSendRelease, KErrNone, data, 10);
-	ussdMessaging1.SendRelease(requestStatus1, pckgSendV31);
+	ussdMessaging.SendRelease(requestStatus, pckgSendV31);
 
 	ussdMessaging2.SendRelease(requestStatus2, pckgSendV32);
 	
-    User::WaitForRequest(requestStatus1);        
-	ASSERT_EQUALS(KErrNone, requestStatus1.Int());	
-
-    User::WaitForRequest(requestStatus2);        
-	ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());	
+    User::WaitForRequest(requestStatus);        
+	ASSERT_EQUALS(KErrNone, requestStatus.Int());	
+
+    User::WaitForRequest(requestStatus2);  
+	ASSERT_EQUALS(KErrAccessDenied, requestStatus2.Int());	
 	ASSERT_EQUALS(opCode, sendV31.iOpCode);	
 	ASSERT_EQUALS(0, sendV31.iAdditionalInfo.Compare(KAdditionalInfo1));	
-
+	 
 	AssertMockLtsyStatusL();
-	CleanupStack::PopAndDestroy(6, this); // data, ussdMessaging2, ussdMessaging1,
-										  // phone2, telServer2, this                                   
+	CleanupStack::PopAndDestroy(6, this); // data, ussdMessaging2, ussdMessaging,
+										  // phone2, telServer2, this
 	}
 
+/**
+@SYMTestCaseID BA-CTSY-USSDM-USR-0004a
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::SendRelease
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::SendRelease
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyUssdMessagingFU::TestSendRelease0004bL()
+	{
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+	
+	RBuf8 data;
+	CleanupClosePushL(data);
+	
+	RMobileUssdMessaging ussdMessaging;
+	TInt ret = ussdMessaging.Open(iPhone);
+	ASSERT_EQUALS(KErrNone, ret);
+	CleanupClosePushL(ussdMessaging);
+	
+	//-------------------------------------------------------------------------
+	// Setup: This block is taken from TestReceiveMessage0001L. All we want to
+	// do is to initiate a dialogue and then end it. Once the dialogue has ended
+	// then we can call Accept and Reject.
+	//------------------------------------------------------------------------- 
+	
+	TRequestStatus requestStatus;
+	TRequestStatus mockLtsyStatus;
+	
+	TUint32 flags = 100;
+	RMobileUssdMessaging::TMobileUssdDataFormat format = RMobileUssdMessaging::EFormatUnspecified;
+	RMobileUssdMessaging::TMobileUssdMessageType type  = RMobileUssdMessaging::EUssdMTRequest;
+	TUint8 dcs = 200;
+	
+	//-------------------------------------------------------------------------
+	// function parameters
+	
+	RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+	TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+	
+	RMobileUssdMessaging::TGsmUssdMessageData name;
+	
+	//-------------------------------------------------------------------------
+	
+	RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttributes;
+	
+	completeAttributes.iFlags  = flags;
+	completeAttributes.iFormat = format;
+	completeAttributes.iType   = type;
+	completeAttributes.iDcs    = dcs;
+	
+	TBuf8<KMaxName> completeName = _L8("Name1");
+	
+	TMockLtsyData2<TBuf8<KMaxName>, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+		mockData2(completeName, completeAttributes);
+	mockData2.SerialiseL(data);
+	
+	iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data);
+	
+	ussdMessaging.ReceiveMessage(requestStatus, name, msgAttributes);   
+	User::WaitForRequest(requestStatus);        
+	ret = requestStatus.Int();
+	ASSERT_EQUALS(KErrNone, ret);
+	ussdMessaging.AcceptIncomingDialogue();
+	
+	AssertMockLtsyStatusL();
+	
+	//-------------------------------------------------------------------------
+	// Try to release the dialogue
+	//------------------------------------------------------------------------- 
+	
+	// Open second client
+	RTelServer telServer2;
+	ret = telServer2.Connect();
+	ASSERT_EQUALS(KErrNone, ret);
+	CleanupClosePushL(telServer2);
+	
+	RMobilePhone phone2;
+	ret = phone2.Open(telServer2,KMmTsyPhoneName);
+	ASSERT_EQUALS(KErrNone, ret);
+	CleanupClosePushL(phone2);
+	
+	RMobileUssdMessaging ussdMessaging2;
+	ret = ussdMessaging2.Open(phone2);
+	ASSERT_EQUALS(KErrNone, ret);
+	CleanupClosePushL(ussdMessaging2);
+	
+	//-------------------------------------------------------------------------
+	// function parameters
+	
+	RMobilePhone::TMobilePhoneSendSSRequestV3 sendV3;
+	TPckg<RMobilePhone::TMobilePhoneSendSSRequestV3> pckgSendV3(sendV3);
+		
+	//-------------------------------------------------------------------------
+	
+	RMobilePhone::TMobilePhoneSendSSRequestV3 completeSendV3;
+	
+	TUint8 opCode = 100;
+	_LIT(KAdditionalInfo1, "additionalInfo1");
+		
+	completeSendV3.iOpCode         = opCode;
+	completeSendV3.iAdditionalInfo = KAdditionalInfo1;
+	
+	TMockLtsyData1< RMobilePhone::TMobilePhoneSendSSRequestV3 > mockData1(completeSendV3);	
+	mockData1.SerialiseL(data);
+	
+	//-------------------------------------------------------------------------
+	// Test: The second client requests RMobileUssdMessaging::SendRelease
+	//-------------------------------------------------------------------------
+	
+	iMockLTSY.ExpectL(EMobileUssdMessagingSendRelease);
+	iMockLTSY.CompleteL(EMobileUssdMessagingSendRelease, KErrDisconnected, data, 10);
+	
+	TRequestStatus requestStatus2;
+	ussdMessaging2.SendRelease(requestStatus2, pckgSendV3);
+	
+	User::WaitForRequest(requestStatus2);  
+	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrDisconnected, requestStatus2.Int());	
+		 
+	CleanupStack::PopAndDestroy(6, this); // data, ussdMessaging2, ussdMessaging,
+										  // phone2, telServer2, this
+	}
 
 /**
 @SYMTestCaseID BA-CTSY-USSDM-USR-0005
@@ -928,20 +1732,69 @@
 */
 void CCTsyUssdMessagingFU::TestSendRelease0005L()
 	{
-
-	OpenEtelServerL(EUseExtendedError);
-	CleanupStack::PushL(TCleanupItem(Cleanup,this));
-	OpenPhoneL();
-
-	RBuf8 data;
-	CleanupClosePushL(data);
-
-	RMobileUssdMessaging ussdMessaging;
-	TInt ret = ussdMessaging.Open(iPhone);
-	ASSERT_EQUALS(KErrNone, ret);
-	CleanupClosePushL(ussdMessaging);
-	
-	TRequestStatus requestStatus;
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    RMobileUssdMessaging ussdMessaging;
+    TInt ret = ussdMessaging.Open(iPhone);
+    ASSERT_EQUALS(KErrNone, ret);
+    CleanupClosePushL(ussdMessaging);
+    
+    //-------------------------------------------------------------------------
+    // Setup: This block is taken from TestReceiveMessage0001L. All we want to
+    // do is to initiate a dialogue and then end it. Once the dialogue has ended
+    // then we can call Accept and Reject.
+    //------------------------------------------------------------------------- 
+    
+    TRequestStatus requestStatus;
+    TRequestStatus mockLtsyStatus;
+
+    TUint32 flags = 100;
+    RMobileUssdMessaging::TMobileUssdDataFormat format = RMobileUssdMessaging::EFormatUnspecified;
+    RMobileUssdMessaging::TMobileUssdMessageType type  = RMobileUssdMessaging::EUssdMORequest;
+    TUint8 dcs = 200;
+
+    //-------------------------------------------------------------------------
+    // function parameters
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+    TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+    
+    RMobileUssdMessaging::TGsmUssdMessageData name;
+
+    //-------------------------------------------------------------------------
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttributes;
+
+    completeAttributes.iFlags  = flags;
+    completeAttributes.iFormat = format;
+    completeAttributes.iType   = type;
+    completeAttributes.iDcs    = dcs;
+    
+    TBuf8<KMaxName> completeName = _L8("Name1");
+
+    TMockLtsyData2<TBuf8<KMaxName>, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+        mockData2(completeName, completeAttributes);
+    mockData2.SerialiseL(data);
+    
+    iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data);
+
+    ussdMessaging.ReceiveMessage(requestStatus, name, msgAttributes);   
+    User::WaitForRequest(requestStatus);        
+    ret = requestStatus.Int();
+    ASSERT_EQUALS(KErrNone, ret);
+    ussdMessaging.AcceptIncomingDialogue();
+    
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+    
+    //-------------------------------------------------------------------------
+    // Release the dialogue
+    //------------------------------------------------------------------------- 
 
  	//-------------------------------------------------------------------------
 	// function parameters
@@ -956,12 +1809,11 @@
 	iMockLTSY.ExpectL(EMobileUssdMessagingSendRelease);
 	ussdMessaging.SendRelease(requestStatus, pckgSendV3);
 	
-    User::WaitForRequest(requestStatus);        
+    User::WaitForRequest(requestStatus); 
 	AssertMockLtsyStatusL();
-	ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());	
+	ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
 
 	CleanupStack::PopAndDestroy(3, this); // data, this, ussdMessaging
-
 	}
 
 
@@ -1289,8 +2141,9 @@
 	ASSERT_EQUALS(KErrNone, requestStatus1.Int());
 	ussd1.AcceptIncomingDialogue();
 	User::After(1000000);	
-	ussd1.CancelAsyncRequest(EMobileUssdMessagingReceiveMessage);
-
+	ussd1.CancelAsyncRequest(EMobileUssdMessagingReceiveMessage);	
+	ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+	
 	CleanupStack::PopAndDestroy(4, this); //  this, data, ussd1, ussd2
 	}
 	
@@ -1545,6 +2398,8 @@
 	ASSERT_EQUALS(KErrCancel, requestStatus2.Int());
 
 	// dialogue offered to third client
+	ussd3.AcceptIncomingDialogue();
+	User::WaitForRequest(requestStatus3);
 	ASSERT_EQUALS(KErrNone, requestStatus3.Int());
 
 	CleanupStack::PopAndDestroy(5, this); //  this, data, ussd1, ussd2, ussd3
@@ -1615,10 +2470,7 @@
 	//-------------------------------------------------------------------------
 	// TEST : Have two clients. 1) Request offered to 1st. 2) 1st client cancels.
 	// 3) 2nd client should now be offered request.
-	//-------------------------------------------------------------------------
-	ret1 = ussd1.Open(iPhone);
-	ASSERT_EQUALS(KErrNone, ret1);
-
+	//-------------------------------------------------------------------------	
 	ussd1.ReceiveMessage(requestStatus1 ,name, msgAttributes);
 	ussd2.ReceiveMessage(requestStatus2 ,name, msgAttributes);	
     iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data);
@@ -1629,14 +2481,16 @@
 	// Offered to first client
 	ASSERT_EQUALS(KErrNone, requestStatus1.Int());	
 	
-	// Cancel first client
-	ussd1.CancelAsyncRequest(EMobileUssdMessagingReceiveMessage);
-
+	// Cancel first client	
+	ussd2.CancelAsyncRequest(EMobileUssdMessagingReceiveMessage);
+	
+	User::WaitForRequest(requestStatus2);
+	ASSERT_EQUALS(KErrCancel, requestStatus2.Int());
+		
 	// dialogue offered to second client
-	User::WaitForRequest(requestStatus2);
-	ASSERT_EQUALS(KErrNone, requestStatus2.Int());
-
-
+	ussd1.RejectIncomingDialogue();	
+	ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+	
 	CleanupStack::PopAndDestroy(4, this); //  this, data, ussd1, ussd2
 	}
 
@@ -1737,7 +2591,95 @@
  
 	CleanupStack::PopAndDestroy(5, this); //  this, data, ussd1, ussd2, ussd3
 	}
-	
+
+/**
+@SYMTestCaseID BA-CTSY-USSDM-URM-0002i
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support of RMobileUssdMessaging::ReceiveMessage for consecutive reception of two USSD dialogues/messages by two different clients. 
+@SYMTestPriority High
+@SYMTestActions Two clients present, second client calls Cancel.
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyUssdMessagingFU::TestReceiveMessage0002iL()
+	{
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+
+	RMobileUssdMessaging ussd1;
+	RMobileUssdMessaging ussd2;
+	TInt ret1 = ussd1.Open(iPhone);
+	TInt ret2 = ussd2.Open(iPhone);
+	ASSERT_EQUALS(KErrNone, ret1);
+	ASSERT_EQUALS(KErrNone, ret2);
+	CleanupClosePushL(ussd1);
+	CleanupClosePushL(ussd2);
+
+	TRequestStatus requestStatus1;
+	TRequestStatus requestStatus2;
+
+ 	//-------------------------------------------------------------------------
+	TUint32 flags = 100;
+	RMobileUssdMessaging::TMobileUssdDataFormat format = RMobileUssdMessaging::EFormatUnspecified;
+	RMobileUssdMessaging::TMobileUssdMessageType type  = RMobileUssdMessaging::EUssdMTNotify;
+	TUint8 dcs = 200;
+
+	// function parameters
+
+	RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+	TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+	
+	RMobileUssdMessaging::TGsmUssdMessageData name;
+
+ 	//-------------------------------------------------------------------------
+
+	RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttributes;
+
+	completeAttributes.iFlags  = flags;
+	completeAttributes.iFormat = format;
+	completeAttributes.iType   = type;
+	completeAttributes.iDcs    = dcs;
+	
+	TBuf8<KMaxName> completeName = _L8("Name1");
+
+	TMockLtsyData2<TBuf8<KMaxName>, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+		mockData2(completeName, completeAttributes);
+
+	mockData2.SerialiseL(data);	
+
+	//-------------------------------------------------------------------------
+	// TEST: The first client accepts the first USSD notification.
+	// The SECOND client accepts the second USSD notification.
+	//-------------------------------------------------------------------------
+	
+	//first notification
+	ussd1.ReceiveMessage(requestStatus1, name, msgAttributes);
+    iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data);
+
+    User::WaitForRequest(requestStatus1);
+	AssertMockLtsyStatusL();
+
+	ASSERT_EQUALS(KErrNone, requestStatus1.Int());	
+	ussd1.AcceptIncomingDialogue();
+	
+	//second notification
+	ussd2.ReceiveMessage(requestStatus2, name, msgAttributes);	
+    iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data);
+
+    User::WaitForRequest(requestStatus2);
+	AssertMockLtsyStatusL();
+
+	ASSERT_EQUALS(KErrNone, requestStatus2.Int());
+	ussd2.AcceptIncomingDialogue();
+	
+	CleanupStack::PopAndDestroy(4, this); //  this, data, ussd1, ussd2
+	}
+
+
 /**
 @SYMTestCaseID BA-CTSY-USSDM-URM-0003
 @SYMComponent  telephony_ctsy
@@ -1949,7 +2891,6 @@
 */
 void CCTsyUssdMessagingFU::TestReceiveMessage0004cL()
 	{
-
     OpenEtelServerL(EUseExtendedError);
     CleanupStack::PushL(TCleanupItem(Cleanup,this));
     OpenPhoneL();
@@ -1995,6 +2936,7 @@
 	thread1.Close();
 	thread2.Close();
 	CleanupStack::PopAndDestroy(this); // this
+	
 	}
 
 /**
@@ -2008,7 +2950,6 @@
 */
 void CCTsyUssdMessagingFU::TestReceiveMessage0004dL()
 	{
-
     OpenEtelServerL(EUseExtendedError);
     CleanupStack::PushL(TCleanupItem(Cleanup,this));
     OpenPhoneL();
@@ -2066,7 +3007,6 @@
 */
 void CCTsyUssdMessagingFU::TestReceiveMessage0004eL()
 	{
-
     OpenEtelServerL(EUseExtendedError);
     CleanupStack::PushL(TCleanupItem(Cleanup,this));
     OpenPhoneL();
@@ -2123,7 +3063,6 @@
 */
 void CCTsyUssdMessagingFU::TestReceiveMessage0004fL()
 	{
-
     OpenEtelServerL(EUseExtendedError);
     CleanupStack::PushL(TCleanupItem(Cleanup,this));
     OpenPhoneL();
@@ -2214,22 +3153,344 @@
 */
 void CCTsyUssdMessagingFU::TestNotifyNetworkRelease0001L()
 	{
-
-	OpenEtelServerL(EUseExtendedError);
-	CleanupStack::PushL(TCleanupItem(Cleanup,this));
-	OpenPhoneL();
-
-	TRequestStatus requestStatus;
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    RMobileUssdMessaging ussdMessaging;
+    TInt ret = ussdMessaging.Open(iPhone);
+    ASSERT_EQUALS(KErrNone, ret);
+    CleanupClosePushL(ussdMessaging);
+    
+    //-------------------------------------------------------------------------
+    // Setup: This block is taken from TestReceiveMessage0001L. All we want to
+    // do is to initiate a dialogue and then end it. Once the dialogue has ended
+    // then we can call Accept and Reject.
+    //------------------------------------------------------------------------- 
+    
+    TRequestStatus requestStatus;
+        
+    TRequestStatus mockLtsyStatus;
+
+    TUint32 flags = 100;
+    RMobileUssdMessaging::TMobileUssdDataFormat format = RMobileUssdMessaging::EFormatUnspecified;
+    RMobileUssdMessaging::TMobileUssdMessageType type  = RMobileUssdMessaging::EUssdMORequest;
+    TUint8 dcs = 200;
+
+    //-------------------------------------------------------------------------
+    // function parameters
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+    TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+    
+    RMobileUssdMessaging::TGsmUssdMessageData name;
+
+    //-------------------------------------------------------------------------
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttributes;
+
+    completeAttributes.iFlags  = flags;
+    completeAttributes.iFormat = format;
+    completeAttributes.iType   = type;
+    completeAttributes.iDcs    = dcs;
+    
+    TBuf8<KMaxName> completeName = _L8("Name1");
+
+    TMockLtsyData2<TBuf8<KMaxName>, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+        mockData2(completeName, completeAttributes);
+    mockData2.SerialiseL(data);
+    
+    iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data);
+
+    ussdMessaging.ReceiveMessage(requestStatus, name, msgAttributes);   
+    User::WaitForRequest(requestStatus);        
+    ret = requestStatus.Int();
+    ASSERT_EQUALS(KErrNone, ret);
+    ussdMessaging.AcceptIncomingDialogue();
+    
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+    
+    //-------------------------------------------------------------------------
+    // Terminate the dialogue
+    //------------------------------------------------------------------------- 
+    
+ 	//-------------------------------------------------------------------------
+	// function parameters
+	
+	RMobilePhone::TMobilePhoneSendSSRequestV3 sendV3;
+	TPckg<RMobilePhone::TMobilePhoneSendSSRequestV3> pckgSendV3(sendV3);
+	
+	// optional parameter
+	RMobileUssdMessaging::TMobileUssdAttributesV1 attrV1;
+	RMobileUssdMessaging::TMobileUssdAttributesV1Pckg pckgAttrV1(attrV1);
+ 	//-------------------------------------------------------------------------
+
+	RMobilePhone::TMobilePhoneSendSSRequestV3 completeSendV3;
+	
+	TUint8 opCode = 100;
+	_LIT(KAdditionalInfo1, "additionalInfo1");
+	
+	completeSendV3.iOpCode         = opCode;
+	completeSendV3.iAdditionalInfo = KAdditionalInfo1;
+
+	TMockLtsyData1< RMobilePhone::TMobilePhoneSendSSRequestV3 > mockData1(completeSendV3);
+	mockData1.SerialiseL(data);
+
+	// optional parameter
+	RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttrV1;
+	completeAttrV1.iFlags = RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageType;
+	completeAttrV1.iFormat = RMobileUssdMessaging::EFormatPackedString;
+	completeAttrV1.iType = RMobileUssdMessaging::EUssdMOAcknowledgement;
+	
+	TMockLtsyData2< RMobilePhone::TMobilePhoneSendSSRequestV3, 
+					RMobileUssdMessaging::TMobileUssdAttributesV1 > 
+					mockData2Release(completeSendV3,completeAttrV1);
+	
+	RBuf8 data2;
+	CleanupClosePushL(data2);
+	mockData2Release.SerialiseL(data2);
+		
+ 	//-------------------------------------------------------------------------
+	// TEST C: Successful completion request of
+	// RMobileUssdMessaging::NotifyNetworkRelease when result is not cached.
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.CompleteL(EMobileUssdMessagingNotifyNetworkRelease, KErrNone, data);
+	ussdMessaging.NotifyNetworkRelease(requestStatus, pckgSendV3);
+
+	
+    User::WaitForRequest(requestStatus); 
+	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrNone, requestStatus.Int());
+	
+	ASSERT_EQUALS(opCode, sendV3.iOpCode);	
+	ASSERT_EQUALS(0, sendV3.iAdditionalInfo.Compare(KAdditionalInfo1));	
+
+	//-------------------------------------------------------------------------
+	// TEST E: Unsolicited completion of RMobileUssdMessaging::NotifyNetworkRelease
+	// from LTSY.
+ 	//-------------------------------------------------------------------------
+	
+	iMockLTSY.NotifyTerminated(mockLtsyStatus);
+	iMockLTSY.CompleteL(EMobileUssdMessagingNotifyNetworkRelease, KErrNone, data);
+	
+	// other version of API (with optional TMobileUssdAttributesV1 parameter)
+	
+	iMockLTSY.CompleteL(EMobileUssdMessagingNotifyNetworkRelease, KErrNone, data2);
+	User::WaitForRequest(mockLtsyStatus);
+	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+	
+	CleanupStack::PopAndDestroy(4, this); // data2, ussdMessaging, data, this,
+	
+	}
+
+/**
+@SYMTestCaseID BA-CTSY-USSDM-UNNR-0001a
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for failure on completion of pending comRMobileUssdMessaging::SendRelease request from LTSY->CTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileUssdMessaging::NotifyNetworkRelease
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyUssdMessagingFU::TestNotifyNetworkRelease0001eL()
+	{
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    RMobileUssdMessaging ussdMessaging;
+    TInt ret = ussdMessaging.Open(iPhone);
+    ASSERT_EQUALS(KErrNone, ret);
+    CleanupClosePushL(ussdMessaging);
+    
+    //-------------------------------------------------------------------------
+    // Setup: This block is taken from TestReceiveMessage0001L. All we want to
+    // do is to initiate a dialogue and then end it. Once the dialogue has ended
+    // then we can call Accept and Reject.
+    //------------------------------------------------------------------------- 
+    
+    TRequestStatus requestStatus;
+        
     TRequestStatus mockLtsyStatus;
 
-	RBuf8 data;
-	CleanupClosePushL(data);
-
-	RMobileUssdMessaging ussdMessaging;
-	TInt ret = ussdMessaging.Open(iPhone);
-	ASSERT_EQUALS(KErrNone, ret);
-	CleanupClosePushL(ussdMessaging);
-
+    TUint32 flags = 100;
+    RMobileUssdMessaging::TMobileUssdDataFormat format = RMobileUssdMessaging::EFormatUnspecified;
+    RMobileUssdMessaging::TMobileUssdMessageType type  = RMobileUssdMessaging::EUssdMORequest;
+    TUint8 dcs = 200;
+
+    //-------------------------------------------------------------------------
+    // function parameters
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+    TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+    
+    RMobileUssdMessaging::TGsmUssdMessageData name;
+
+    //-------------------------------------------------------------------------
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttributes;
+
+    completeAttributes.iFlags  = flags;
+    completeAttributes.iFormat = format;
+    completeAttributes.iType   = type;
+    completeAttributes.iDcs    = dcs;
+    
+    TBuf8<KMaxName> completeName = _L8("Name1");
+
+    TMockLtsyData2<TBuf8<KMaxName>, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+        mockData2(completeName, completeAttributes);
+    mockData2.SerialiseL(data);
+    
+    iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data);
+
+    ussdMessaging.ReceiveMessage(requestStatus, name, msgAttributes);   
+    User::WaitForRequest(requestStatus);        
+    ret = requestStatus.Int();
+    ASSERT_EQUALS(KErrNone, ret);
+    ussdMessaging.AcceptIncomingDialogue();
+    
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+    
+    //-------------------------------------------------------------------------
+    // Terminate the dialogue
+    //------------------------------------------------------------------------- 
+    
+ 	//-------------------------------------------------------------------------
+	// function parameters
+	
+	RMobilePhone::TMobilePhoneSendSSRequestV3 sendV3;
+	TPckg<RMobilePhone::TMobilePhoneSendSSRequestV3> pckgSendV3(sendV3);
+	
+	// optional parameter
+	RMobileUssdMessaging::TMobileUssdAttributesV1 attrV1;
+	RMobileUssdMessaging::TMobileUssdAttributesV1Pckg pckgAttrV1(attrV1);
+ 	//-------------------------------------------------------------------------
+
+	RMobilePhone::TMobilePhoneSendSSRequestV3 completeSendV3;
+	
+	TUint8 opCode = 100;
+	_LIT(KAdditionalInfo1, "additionalInfo1");
+	
+	completeSendV3.iOpCode         = opCode;
+	completeSendV3.iAdditionalInfo = KAdditionalInfo1;
+
+	TMockLtsyData1< RMobilePhone::TMobilePhoneSendSSRequestV3 > mockData1(completeSendV3);
+	mockData1.SerialiseL(data);
+
+	// optional parameter
+	RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttrV1;
+	completeAttrV1.iFlags = RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageType;
+	completeAttrV1.iFormat = RMobileUssdMessaging::EFormatPackedString;
+	completeAttrV1.iType = RMobileUssdMessaging::EUssdMOAcknowledgement;
+	
+	TMockLtsyData2< RMobilePhone::TMobilePhoneSendSSRequestV3, 
+					RMobileUssdMessaging::TMobileUssdAttributesV1 > 
+					mockData2Release(completeSendV3,completeAttrV1);
+	
+	RBuf8 data2;
+	CleanupClosePushL(data2);
+	mockData2Release.SerialiseL(data2);
+	
+	//-------------------------------------------------------------------------
+	// TEST B: failure on completion of pending request from LTSY->CTSY
+ 	//-------------------------------------------------------------------------
+		
+	iMockLTSY.CompleteL(EMobileUssdMessagingNotifyNetworkRelease, KErrGeneral, data);
+	ussdMessaging.NotifyNetworkRelease(requestStatus, pckgSendV3);
+
+	User::WaitForRequest(requestStatus);   
+	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrGeneral, requestStatus.Int());	
+	
+	CleanupStack::PopAndDestroy(4, this); // data2, ussdMessaging, data, this
+	
+	}
+
+/**
+@SYMTestCaseID BA-CTSY-USSDM-UNNR-0001b
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::NotifyNetworkRelease  with optional paramter
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileUssdMessaging::NotifyNetworkRelease
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyUssdMessagingFU::TestNotifyNetworkRelease0001bL()
+	{
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    RMobileUssdMessaging ussdMessaging;
+    TInt ret = ussdMessaging.Open(iPhone);
+    ASSERT_EQUALS(KErrNone, ret);
+    CleanupClosePushL(ussdMessaging);
+    
+    //-------------------------------------------------------------------------
+    // Setup: This block is taken from TestReceiveMessage0001L. All we want to
+    // do is to initiate a dialogue and then end it. Once the dialogue has ended
+    // then we can call Accept and Reject.
+    //------------------------------------------------------------------------- 
+    
+    TRequestStatus requestStatus;
+        
+    TRequestStatus mockLtsyStatus;
+
+    TUint32 flags = 100;
+    RMobileUssdMessaging::TMobileUssdDataFormat format = RMobileUssdMessaging::EFormatUnspecified;
+    RMobileUssdMessaging::TMobileUssdMessageType type  = RMobileUssdMessaging::EUssdMORequest;
+    TUint8 dcs = 200;
+
+    //-------------------------------------------------------------------------
+    // function parameters
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+    TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+    
+    RMobileUssdMessaging::TGsmUssdMessageData name;
+
+    //-------------------------------------------------------------------------
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttributes;
+
+    completeAttributes.iFlags  = flags;
+    completeAttributes.iFormat = format;
+    completeAttributes.iType   = type;
+    completeAttributes.iDcs    = dcs;
+    
+    TBuf8<KMaxName> completeName = _L8("Name1");
+
+    TMockLtsyData2<TBuf8<KMaxName>, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+        mockData2(completeName, completeAttributes);
+    mockData2.SerialiseL(data);
+    
+    iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data);
+
+    ussdMessaging.ReceiveMessage(requestStatus, name, msgAttributes);   
+    User::WaitForRequest(requestStatus);        
+    ret = requestStatus.Int();
+    ASSERT_EQUALS(KErrNone, ret);
+    ussdMessaging.AcceptIncomingDialogue();
+    
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+    
+    //-------------------------------------------------------------------------
+    // Terminate the dialogue
+    //------------------------------------------------------------------------- 
+    
  	//-------------------------------------------------------------------------
 	// function parameters
 	
@@ -2260,74 +3521,23 @@
 	
 	TMockLtsyData2< RMobilePhone::TMobilePhoneSendSSRequestV3, 
 					RMobileUssdMessaging::TMobileUssdAttributesV1 > 
-					mockData2(completeSendV3,completeAttrV1);
+					mockData2Release(completeSendV3,completeAttrV1);
 	
 	RBuf8 data2;
 	CleanupClosePushL(data2);
-	mockData2.SerialiseL(data2);
-	
-	//-------------------------------------------------------------------------
-	// TEST B: failure on completion of pending request from LTSY->CTSY
+	mockData2Release.SerialiseL(data2);
+	
  	//-------------------------------------------------------------------------
-	iMockLTSY.CompleteL(EMobileUssdMessagingNotifyNetworkRelease, KErrGeneral, data);
-	ussdMessaging.NotifyNetworkRelease(requestStatus, pckgSendV3);
-
-    User::WaitForRequest(requestStatus);        
-	AssertMockLtsyStatusL();
-	ASSERT_EQUALS(KErrGeneral, requestStatus.Int());	
-
-	
+	// TEST C: Successful completion request of
+	// RMobileUssdMessaging::NotifyNetworkRelease when result is not cached.
 	// other version of API (with optional TMobileUssdAttributesV1 parameter)
-	
-	iMockLTSY.CompleteL(EMobileUssdMessagingNotifyNetworkRelease, KErrNotReady, data2);
+ 	//-------------------------------------------------------------------------
+	
+	iMockLTSY.CompleteL(EMobileUssdMessagingNotifyNetworkRelease, KErrNone, data2);
 	ussdMessaging.NotifyNetworkRelease(requestStatus, pckgSendV3, pckgAttrV1);
 
     User::WaitForRequest(requestStatus);
 	AssertMockLtsyStatusL();
-	ASSERT_EQUALS(KErrNotReady, requestStatus.Int());	
-
- 	//-------------------------------------------------------------------------
-	// TEST E: Unsolicited completion of RMobileUssdMessaging::NotifyNetworkRelease
-	// from LTSY.
- 	//-------------------------------------------------------------------------
-
-	iMockLTSY.NotifyTerminated(mockLtsyStatus);
-	iMockLTSY.CompleteL(EMobileUssdMessagingNotifyNetworkRelease, KErrNone, data);
-	
-	// other version of API (with optional TMobileUssdAttributesV1 parameter)
-	
-	iMockLTSY.CompleteL(EMobileUssdMessagingNotifyNetworkRelease, KErrNone, data2);
-	User::WaitForRequest(mockLtsyStatus);
-	AssertMockLtsyStatusL();
-	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- 	//-------------------------------------------------------------------------
-	// TEST C: Successful completion request of
-	// RMobileUssdMessaging::NotifyNetworkRelease when result is not cached.
- 	//-------------------------------------------------------------------------
-
-	iMockLTSY.CompleteL(EMobileUssdMessagingNotifyNetworkRelease, KErrNone, data);
-	ussdMessaging.NotifyNetworkRelease(requestStatus, pckgSendV3);
-
-    User::WaitForRequest(requestStatus);        
-	AssertMockLtsyStatusL();
-	ASSERT_EQUALS(KErrNone, requestStatus.Int());	
-	
-	ASSERT_EQUALS(opCode, sendV3.iOpCode);	
-	ASSERT_EQUALS(0, sendV3.iAdditionalInfo.Compare(KAdditionalInfo1));	
-
-	
-	// other version of API (with optional TMobileUssdAttributesV1 parameter)
-	
-	ussdMessaging.Close();
-	ret = ussdMessaging.Open(iPhone);
-	ASSERT_EQUALS(KErrNone, ret);
-	
-	iMockLTSY.CompleteL(EMobileUssdMessagingNotifyNetworkRelease, KErrNone, data2);
-	ussdMessaging.NotifyNetworkRelease(requestStatus, pckgSendV3, pckgAttrV1);
-
-    User::WaitForRequest(requestStatus);        
-	AssertMockLtsyStatusL();
 	ASSERT_EQUALS(KErrNone, requestStatus.Int());	
 	
 	ASSERT_EQUALS(opCode, sendV3.iOpCode);	
@@ -2336,11 +3546,262 @@
 	ASSERT_EQUALS(completeAttrV1.iFlags ,attrV1.iFlags);
 	ASSERT_EQUALS(completeAttrV1.iFormat ,attrV1.iFormat);
 	ASSERT_EQUALS(completeAttrV1.iType ,attrV1.iType);
-
-	CleanupStack::PopAndDestroy(4, this); // data2, ussdMessaging, data, this, 
+		
+	CleanupStack::PopAndDestroy(4, this); // data2, ussdMessaging, data, this,
 	
 	}
 
+/**
+@SYMTestCaseID BA-CTSY-USSDM-UNNR-0001c
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::NotifyNetworkRelease
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileUssdMessaging::NotifyNetworkRelease
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyUssdMessagingFU::TestNotifyNetworkRelease0001cL()
+	{
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    RMobileUssdMessaging ussdMessaging;
+    TInt ret = ussdMessaging.Open(iPhone);
+    ASSERT_EQUALS(KErrNone, ret);
+    CleanupClosePushL(ussdMessaging);
+    
+    //-------------------------------------------------------------------------
+    // Setup: This block is taken from TestReceiveMessage0001L. All we want to
+    // do is to initiate a dialogue and then end it. Once the dialogue has ended
+    // then we can call Accept and Reject.
+    //------------------------------------------------------------------------- 
+    
+    TRequestStatus requestStatus;
+        
+    TRequestStatus mockLtsyStatus;
+
+    TUint32 flags = 100;
+    RMobileUssdMessaging::TMobileUssdDataFormat format = RMobileUssdMessaging::EFormatUnspecified;
+    RMobileUssdMessaging::TMobileUssdMessageType type  = RMobileUssdMessaging::EUssdMORequest;
+    TUint8 dcs = 200;
+
+    //-------------------------------------------------------------------------
+    // function parameters
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+    TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+    
+    RMobileUssdMessaging::TGsmUssdMessageData name;
+
+    //-------------------------------------------------------------------------
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttributes;
+
+    completeAttributes.iFlags  = flags;
+    completeAttributes.iFormat = format;
+    completeAttributes.iType   = type;
+    completeAttributes.iDcs    = dcs;
+    
+    TBuf8<KMaxName> completeName = _L8("Name1");
+
+    TMockLtsyData2<TBuf8<KMaxName>, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+        mockData2(completeName, completeAttributes);
+    mockData2.SerialiseL(data);
+    
+    iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data);
+
+    ussdMessaging.ReceiveMessage(requestStatus, name, msgAttributes);   
+    User::WaitForRequest(requestStatus);        
+    ret = requestStatus.Int();
+    ASSERT_EQUALS(KErrNone, ret);
+    ussdMessaging.AcceptIncomingDialogue();
+    
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+    
+    //-------------------------------------------------------------------------
+    // Terminate the dialogue
+    //------------------------------------------------------------------------- 
+    
+ 	//-------------------------------------------------------------------------
+	// function parameters
+	
+	RMobilePhone::TMobilePhoneSendSSRequestV3 sendV3;
+	TPckg<RMobilePhone::TMobilePhoneSendSSRequestV3> pckgSendV3(sendV3);
+	
+	// optional parameter
+	RMobileUssdMessaging::TMobileUssdAttributesV1 attrV1;
+	RMobileUssdMessaging::TMobileUssdAttributesV1Pckg pckgAttrV1(attrV1);
+ 	//-------------------------------------------------------------------------
+
+	RMobilePhone::TMobilePhoneSendSSRequestV3 completeSendV3;
+	
+	TUint8 opCode = 100;
+	_LIT(KAdditionalInfo1, "additionalInfo1");
+	
+	completeSendV3.iOpCode         = opCode;
+	completeSendV3.iAdditionalInfo = KAdditionalInfo1;
+
+	TMockLtsyData1< RMobilePhone::TMobilePhoneSendSSRequestV3 > mockData1(completeSendV3);
+	mockData1.SerialiseL(data);
+
+	// optional parameter
+	RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttrV1;
+	completeAttrV1.iFlags = RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageType;
+	completeAttrV1.iFormat = RMobileUssdMessaging::EFormatPackedString;
+	completeAttrV1.iType = RMobileUssdMessaging::EUssdMOAcknowledgement;
+	
+	TMockLtsyData2< RMobilePhone::TMobilePhoneSendSSRequestV3, 
+					RMobileUssdMessaging::TMobileUssdAttributesV1 > 
+					mockData2Release(completeSendV3,completeAttrV1);
+	
+	RBuf8 data2;
+	CleanupClosePushL(data2);
+	mockData2Release.SerialiseL(data2);
+	
+	//-------------------------------------------------------------------------
+	// TEST B: failure on completion of pending request from LTSY->CTSY
+ 	//-------------------------------------------------------------------------
+		
+	// other version of API (with optional TMobileUssdAttributesV1 parameter)	
+	iMockLTSY.CompleteL(EMobileUssdMessagingNotifyNetworkRelease, KErrNotReady, data2);
+	ussdMessaging.NotifyNetworkRelease(requestStatus, pckgSendV3, pckgAttrV1);
+
+    User::WaitForRequest(requestStatus);
+	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrNotReady, requestStatus.Int());
+	
+	CleanupStack::PopAndDestroy(4, this); // data2, ussdMessaging, data, this,
+	
+	}
+
+/**
+@SYMTestCaseID BA-CTSY-USSDM-UNNR-0001d
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileUssdMessaging::NotifyNetworkRelease before accepting a dialogue
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileUssdMessaging::NotifyNetworkRelease
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyUssdMessagingFU::TestNotifyNetworkRelease0001dL()
+	{
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    RMobileUssdMessaging ussdMessaging;
+    TInt ret = ussdMessaging.Open(iPhone);
+    ASSERT_EQUALS(KErrNone, ret);
+    CleanupClosePushL(ussdMessaging);
+    
+    //-------------------------------------------------------------------------
+    // Setup: This block is taken from TestReceiveMessage0001L. All we want to
+    // do is to initiate a dialogue and then end it. Once the dialogue has ended
+    // then we can call Accept and Reject.
+    //------------------------------------------------------------------------- 
+    
+    TRequestStatus requestStatus;
+        
+    TRequestStatus mockLtsyStatus;
+
+    TUint32 flags = 100;
+    RMobileUssdMessaging::TMobileUssdDataFormat format = RMobileUssdMessaging::EFormatUnspecified;
+    RMobileUssdMessaging::TMobileUssdMessageType type  = RMobileUssdMessaging::EUssdMORequest;
+    TUint8 dcs = 200;
+
+    //-------------------------------------------------------------------------
+    // function parameters
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+    TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+    
+    RMobileUssdMessaging::TGsmUssdMessageData name;
+
+    //-------------------------------------------------------------------------
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttributes;
+
+    completeAttributes.iFlags  = flags;
+    completeAttributes.iFormat = format;
+    completeAttributes.iType   = type;
+    completeAttributes.iDcs    = dcs;
+    
+    TBuf8<KMaxName> completeName = _L8("Name1");
+
+    TMockLtsyData2<TBuf8<KMaxName>, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+        mockData2(completeName, completeAttributes);
+    mockData2.SerialiseL(data);
+    
+    iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data);
+
+    ussdMessaging.ReceiveMessage(requestStatus, name, msgAttributes);   
+    User::WaitForRequest(requestStatus);        
+    ret = requestStatus.Int();
+    ASSERT_EQUALS(KErrNone, ret);
+    
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+    
+    //-------------------------------------------------------------------------
+    // Terminate the dialogue
+    //------------------------------------------------------------------------- 
+    
+ 	//-------------------------------------------------------------------------
+	// function parameters
+	
+	RMobilePhone::TMobilePhoneSendSSRequestV3 sendV3;
+	TPckg<RMobilePhone::TMobilePhoneSendSSRequestV3> pckgSendV3(sendV3);
+	
+	// optional parameter
+	RMobileUssdMessaging::TMobileUssdAttributesV1 attrV1;
+	RMobileUssdMessaging::TMobileUssdAttributesV1Pckg pckgAttrV1(attrV1);
+ 	//-------------------------------------------------------------------------
+
+	RMobilePhone::TMobilePhoneSendSSRequestV3 completeSendV3;
+	
+	TUint8 opCode = 100;
+	_LIT(KAdditionalInfo1, "additionalInfo1");
+	
+	completeSendV3.iOpCode         = opCode;
+	completeSendV3.iAdditionalInfo = KAdditionalInfo1;
+
+	TMockLtsyData1< RMobilePhone::TMobilePhoneSendSSRequestV3 > mockData1(completeSendV3);
+	mockData1.SerialiseL(data);
+
+	// optional parameter
+	RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttrV1;
+	completeAttrV1.iFlags = RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageType;
+	completeAttrV1.iFormat = RMobileUssdMessaging::EFormatPackedString;
+	completeAttrV1.iType = RMobileUssdMessaging::EUssdMOAcknowledgement;
+	
+	TMockLtsyData2< RMobilePhone::TMobilePhoneSendSSRequestV3, 
+					RMobileUssdMessaging::TMobileUssdAttributesV1 > 
+					mockData2Release(completeSendV3,completeAttrV1);
+	
+	RBuf8 data2;
+	CleanupClosePushL(data2);
+	mockData2Release.SerialiseL(data2);
+	
+	//Testing NotifyNetworkRelease() before accepting the dialogue, 
+	//so that the requests are not always very sequential
+	ussdMessaging.NotifyNetworkRelease(requestStatus, pckgSendV3, pckgAttrV1);
+	ussdMessaging.AcceptIncomingDialogue();
+
+    User::WaitForRequest(requestStatus);
+	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrDisconnected, requestStatus.Int());
+	
+	CleanupStack::PopAndDestroy(4, this); // data2, ussdMessaging, data, this
+	
+	}
 
 /**
 @SYMTestCaseID BA-CTSY-USSDM-UNNR-0002
@@ -2353,24 +3814,78 @@
 */
 void CCTsyUssdMessagingFU::TestNotifyNetworkRelease0002L()
 	{
-	OpenEtelServerL(EUseExtendedError);
-	CleanupStack::PushL(TCleanupItem(Cleanup,this));
-	OpenPhoneL();
-
-	TRequestStatus requestStatus;
-
-	RMobileUssdMessaging ussdMessaging;
-	TInt ret = ussdMessaging.Open(iPhone);
-	ASSERT_EQUALS(KErrNone, ret);
-	CleanupClosePushL(ussdMessaging);
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    RMobileUssdMessaging ussdMessaging;
+    TInt ret = ussdMessaging.Open(iPhone);
+    ASSERT_EQUALS(KErrNone, ret);
+    CleanupClosePushL(ussdMessaging);
+    
+    //-------------------------------------------------------------------------
+    // Setup: This block is taken from TestReceiveMessage0001L. All we want to
+    // do is to initiate a dialogue and then end it. Once the dialogue has ended
+    // then we can call Accept and Reject.
+    //------------------------------------------------------------------------- 
+    
+    TRequestStatus requestStatus;
+        
+    TRequestStatus mockLtsyStatus;
+
+    TUint32 flags = 100;
+    RMobileUssdMessaging::TMobileUssdDataFormat format = RMobileUssdMessaging::EFormatUnspecified;
+    RMobileUssdMessaging::TMobileUssdMessageType type  = RMobileUssdMessaging::EUssdMORequest;
+    TUint8 dcs = 200;
+
+    //-------------------------------------------------------------------------
+    // function parameters
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+    TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+    
+    RMobileUssdMessaging::TGsmUssdMessageData name;
+
+    //-------------------------------------------------------------------------
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttributes;
+
+    completeAttributes.iFlags  = flags;
+    completeAttributes.iFormat = format;
+    completeAttributes.iType   = type;
+    completeAttributes.iDcs    = dcs;
+    
+    TBuf8<KMaxName> completeName = _L8("Name1");
+
+    TMockLtsyData2<TBuf8<KMaxName>, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+        mockData2(completeName, completeAttributes);
+    mockData2.SerialiseL(data);
+    
+    iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data);
+
+    ussdMessaging.ReceiveMessage(requestStatus, name, msgAttributes);   
+    User::WaitForRequest(requestStatus);        
+    ret = requestStatus.Int();
+    ASSERT_EQUALS(KErrNone, ret);
+    ussdMessaging.AcceptIncomingDialogue();
+    
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+    
+    //-------------------------------------------------------------------------
+    // Terminate the dialogue
+    //------------------------------------------------------------------------- 
 
 	RMobilePhone::TMobilePhoneSendSSRequestV3 sendV3;
 	TPckg<RMobilePhone::TMobilePhoneSendSSRequestV3> pckgSendV3(sendV3);
-
+	
  	//-------------------------------------------------------------------------
 	// Test cancelling of RMobileUssdMessaging::NotifyNetworkRelease
  	//-------------------------------------------------------------------------
- 	
+	
 	ussdMessaging.NotifyNetworkRelease(requestStatus, pckgSendV3);
 	ussdMessaging.CancelAsyncRequest(EMobileUssdMessagingNotifyNetworkRelease);
 
@@ -2380,18 +3895,19 @@
 	AssertMockLtsyStatusL();
 	
 	// again with the optional parameter
+	
 	RMobileUssdMessaging::TMobileUssdAttributesV1 attrV1;
 	RMobileUssdMessaging::TMobileUssdAttributesV1Pckg pckgAttrV1(attrV1);
 	
 	ussdMessaging.NotifyNetworkRelease(requestStatus, pckgSendV3, pckgAttrV1);
 	ussdMessaging.CancelAsyncRequest(EMobileUssdMessagingNotifyNetworkRelease);
-
+	
 	User::WaitForRequest(requestStatus);
 	ASSERT_EQUALS(KErrCancel, requestStatus.Int());
 
-	AssertMockLtsyStatusL();	
-	CleanupStack::PopAndDestroy(2); // this, ussdMessaging
-	
+	AssertMockLtsyStatusL();
+	
+	CleanupStack::PopAndDestroy(3); // this, ussdMessaging, data
 	}
 
 /**
@@ -2405,19 +3921,70 @@
 */
 void CCTsyUssdMessagingFU::TestNotifyNetworkRelease0003L()
 	{
-	OpenEtelServerL(EUseExtendedError);
-	CleanupStack::PushL(TCleanupItem(Cleanup,this));
-	OpenPhoneL();
-
-	RBuf8 data;
-	CleanupClosePushL(data);
-
-	TRequestStatus requestStatus;
-
-	RMobileUssdMessaging ussdMessaging;
-	TInt ret = ussdMessaging.Open(iPhone);
-	ASSERT_EQUALS(KErrNone, ret);
-	CleanupClosePushL(ussdMessaging);
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    RMobileUssdMessaging ussdMessaging;
+    TInt ret = ussdMessaging.Open(iPhone);
+    ASSERT_EQUALS(KErrNone, ret);
+    CleanupClosePushL(ussdMessaging);
+    
+    //-------------------------------------------------------------------------
+    // Setup: This block is taken from TestReceiveMessage0001L. All we want to
+    // do is to initiate a dialogue and then end it. Once the dialogue has ended
+    // then we can call Accept and Reject.
+    //------------------------------------------------------------------------- 
+    
+    TRequestStatus requestStatus;
+        
+    TRequestStatus mockLtsyStatus;
+
+    TUint32 flags = 100;
+    RMobileUssdMessaging::TMobileUssdDataFormat format = RMobileUssdMessaging::EFormatUnspecified;
+    RMobileUssdMessaging::TMobileUssdMessageType type  = RMobileUssdMessaging::EUssdMORequest;
+    TUint8 dcs = 200;
+
+    //-------------------------------------------------------------------------
+    // function parameters
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+    TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+    
+    RMobileUssdMessaging::TGsmUssdMessageData name;
+
+    //-------------------------------------------------------------------------
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttributes;
+
+    completeAttributes.iFlags  = flags;
+    completeAttributes.iFormat = format;
+    completeAttributes.iType   = type;
+    completeAttributes.iDcs    = dcs;
+    
+    TBuf8<KMaxName> completeName = _L8("Name1");
+
+    TMockLtsyData2<TBuf8<KMaxName>, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+        mockData2(completeName, completeAttributes);
+    mockData2.SerialiseL(data);
+    
+    iMockLTSY.CompleteL(EMobileUssdMessagingReceiveMessage, KErrNone, data);
+
+    ussdMessaging.ReceiveMessage(requestStatus, name, msgAttributes);   
+    User::WaitForRequest(requestStatus);        
+    ret = requestStatus.Int();
+    ASSERT_EQUALS(KErrNone, ret);
+    ussdMessaging.AcceptIncomingDialogue();
+    
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+    
+    //-------------------------------------------------------------------------
+    // Terminate the dialogue
+    //------------------------------------------------------------------------- 
 
 	//-------------------------------------------------------------------------
 	// Test B: Test passing wrong descriptor size to parameter in
@@ -2442,6 +4009,7 @@
 	ASSERT_EQUALS(KErrArgument, requestStatus.Int());
 	
 	CleanupStack::PopAndDestroy(3); // this, ussdMessaging, data
+	
 	}
 
 /**
@@ -2517,7 +4085,7 @@
     User::WaitForRequest(requestStatus1);        
     AssertMockLtsyStatusL();
     ASSERT_EQUALS(KErrNone, requestStatus1.Int());
-	
+    	
  	//-------------------------------------------------------------------------
 	// parameters for first function
 	
@@ -2545,6 +4113,7 @@
 					RMobileUssdMessaging::TMobileUssdAttributesV1 > 
 					mockData2(completeSendV31,completeAttrV1);
 	
+	
 	RBuf8 data2;
 	CleanupClosePushL(data2);
 	mockData2.SerialiseL(data2);
@@ -2559,8 +4128,8 @@
 	// Test A: Test multiple clients requesting RMobileUssdMessaging::NotifyNetworkRelease
  	//-------------------------------------------------------------------------
 
-	mockData11.SerialiseL(data);
-	iMockLTSY.CompleteL(EMobileUssdMessagingNotifyNetworkRelease, KErrNone, data, 10);
+	mockData11.SerialiseL(data2);
+	iMockLTSY.CompleteL(EMobileUssdMessagingNotifyNetworkRelease, KErrNone, data2, 10);
 	ussdMessaging1.NotifyNetworkRelease(requestStatus1, pckgSendV31);
 
 	ussdMessaging2.NotifyNetworkRelease(requestStatus2, pckgSendV32);
@@ -2576,14 +4145,131 @@
 
 	ASSERT_EQUALS(opCode1, sendV32.iOpCode);	
 	ASSERT_EQUALS(0, sendV32.iAdditionalInfo.Compare(KAdditionalInfo1));	
-
-
 	
 	AssertMockLtsyStatusL();
-	
-	//
-	// repeat tests with optional second parameter
-	// 
+
+	CleanupStack::PopAndDestroy(7, this); // phone2, telServer2, data, this
+	                                      // ussdMessaging1, ussdMessaging2, data2 (inv. order)
+	}
+
+////
+/**
+@SYMTestCaseID BA-CTSY-USSDM-UNNR-0004b
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileUssdMessaging::NotifyNetworkRelease
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RMobileUssdMessaging::NotifyNetworkRelease
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyUssdMessagingFU::TestNotifyNetworkRelease0004bL()
+	{
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	TRequestStatus requestStatus1;
+	TRequestStatus requestStatus2;
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+
+	// Open second client
+	RTelServer telServer2;
+	TInt ret = telServer2.Connect();
+	ASSERT_EQUALS(KErrNone, ret);
+	CleanupClosePushL(telServer2);
+
+	RMobilePhone phone2;
+	ret = phone2.Open(telServer2,KMmTsyPhoneName);
+	ASSERT_EQUALS(KErrNone, ret);
+	CleanupClosePushL(phone2);
+
+	RMobileUssdMessaging ussdMessaging1;
+	ret = ussdMessaging1.Open(iPhone);
+	ASSERT_EQUALS(KErrNone, ret);
+	CleanupClosePushL(ussdMessaging1);
+
+	RMobileUssdMessaging ussdMessaging2;
+	ret = ussdMessaging2.Open(iPhone);
+	ASSERT_EQUALS(KErrNone, ret);
+	CleanupClosePushL(ussdMessaging2);
+
+	//-------------------------------------------------------------------------
+	// The first client needs to send a message. This will cause a session to be opened
+	// which will be owned by the first client.
+	TUint32 flags = 100;
+    RMobileUssdMessaging::TMobileUssdDataFormat format = RMobileUssdMessaging::EFormatUnspecified;
+    RMobileUssdMessaging::TMobileUssdMessageType type  = RMobileUssdMessaging::EUssdMORequest;
+    TUint8 dcs = 200;
+
+    RMobileUssdMessaging::TMobileUssdAttributesV1 attributes;
+    TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(attributes);
+    
+    attributes.iFlags  = flags;
+    attributes.iFormat = format;
+    attributes.iType   = type;
+    attributes.iDcs   = dcs;
+    
+    TName name = _L("Name1");
+    TPckg<TName> msgData(name);
+
+    TMockLtsyData2<TName, RMobileUssdMessaging::TMobileUssdAttributesV1> 
+        mockSendData2(name, attributes);
+    mockSendData2.SerialiseL(data);
+
+    iMockLTSY.ExpectL(EMobileUssdMessagingSendMessage, data);
+    iMockLTSY.CompleteL(EMobileUssdMessagingSendMessage, KErrNone);
+
+    ussdMessaging1.SendMessage(requestStatus1, msgData, msgAttributes);
+    
+    User::WaitForRequest(requestStatus1);        
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+    	
+ 	//-------------------------------------------------------------------------
+	// parameters for first function
+	
+	RMobilePhone::TMobilePhoneSendSSRequestV3 sendV31;
+	TPckg<RMobilePhone::TMobilePhoneSendSSRequestV3> pckgSendV31(sendV31);
+
+ 	//-------------------------------------------------------------------------
+
+	RMobilePhone::TMobilePhoneSendSSRequestV3 completeSendV31;
+
+	TUint8 opCode1 = 100;
+	_LIT(KAdditionalInfo1, "additionalInfo1");
+	
+	completeSendV31.iOpCode         = opCode1;
+	completeSendV31.iAdditionalInfo = KAdditionalInfo1;
+
+	TMockLtsyData1< RMobilePhone::TMobilePhoneSendSSRequestV3 > mockData11(completeSendV31);
+
+	RMobileUssdMessaging::TMobileUssdAttributesV1 completeAttrV1;
+	completeAttrV1.iFlags = RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageType;
+	completeAttrV1.iFormat = RMobileUssdMessaging::EFormatPackedString;
+	completeAttrV1.iType = RMobileUssdMessaging::EUssdMTRequest;
+	
+	TMockLtsyData2< RMobilePhone::TMobilePhoneSendSSRequestV3, 
+					RMobileUssdMessaging::TMobileUssdAttributesV1 > 
+					mockData2(completeSendV31,completeAttrV1);
+	
+	
+	RBuf8 data2;
+	CleanupClosePushL(data2);
+	mockData2.SerialiseL(data2);
+		
+	//-------------------------------------------------------------------------
+	// parameters for second function
+	
+	RMobilePhone::TMobilePhoneSendSSRequestV3 sendV32;
+	TPckg<RMobilePhone::TMobilePhoneSendSSRequestV3> pckgSendV32(sendV32);
+
+	//-------------------------------------------------------------------------
+	// Test B: Test multiple clients requesting RMobileUssdMessaging::NotifyNetworkRelease
+	// with optional second parameter
+ 	//-------------------------------------------------------------------------
+	 
 	ussdMessaging1.Close();
 	ret = ussdMessaging1.Open(iPhone);
 	ASSERT_EQUALS(KErrNone, ret);
@@ -2601,17 +4287,17 @@
 	ussdMessaging1.NotifyNetworkRelease(requestStatus1, pckgSendV31, pckgAttrV1);
 	ussdMessaging2.NotifyNetworkRelease(requestStatus2, pckgSendV32, pckgAttrV12);	
 	
-    User::WaitForRequest(requestStatus1);        
+    User::WaitForRequest(requestStatus1);  
 	ASSERT_EQUALS(KErrNone, requestStatus1.Int());	
 
-    User::WaitForRequest(requestStatus2);        
+    User::WaitForRequest(requestStatus2);  
 	ASSERT_EQUALS(KErrNone, requestStatus2.Int());	
-
+	
 	ASSERT_EQUALS(opCode1, sendV31.iOpCode);	
 	ASSERT_EQUALS(0, sendV31.iAdditionalInfo.Compare(KAdditionalInfo1));	
 
 	ASSERT_EQUALS(opCode1, sendV32.iOpCode);	
-	ASSERT_EQUALS(0, sendV32.iAdditionalInfo.Compare(KAdditionalInfo1));		
+	ASSERT_EQUALS(0, sendV32.iAdditionalInfo.Compare(KAdditionalInfo1));	
 	
 	ASSERT_EQUALS(completeAttrV1.iFlags ,attrV1.iFlags);
 	ASSERT_EQUALS(completeAttrV1.iFormat ,attrV1.iFormat);
@@ -2620,11 +4306,11 @@
 	ASSERT_EQUALS(completeAttrV1.iFlags ,attrV12.iFlags);
 	ASSERT_EQUALS(completeAttrV1.iFormat ,attrV12.iFormat);
 	ASSERT_EQUALS(completeAttrV1.iType ,attrV12.iType);		
-	
+		
 	CleanupStack::PopAndDestroy(7, this); // phone2, telServer2, data, this
 	                                      // ussdMessaging1, ussdMessaging2, data2 (inv. order)
-
 	}
+////
 
 /**
 @SYMTestCaseID BA-CTSY-USSDM-USMNFC-0001
@@ -2697,12 +4383,10 @@
 
 	ussdMessaging.SendMessageNoFdnCheck(requestStatus, msgData, msgAttributes);
 
-	/*
-	 * Wrong IPC is passed to ResetTsyReqHandle() EMultimodeUssdSendMessage 
-	 * instead of EMultimodeUssdSendMessageNoFdnCheck by call of 
-	 * CMmUssdTsy::CompleteSendMessageNoFdnCheck(). This reduces to panic 
-	 * with EEtelFaultNotRecognisedTsyHandle.
-	 */
+	//Wrong IPC is passed to ResetTsyReqHandle() EMultimodeUssdSendMessage 
+	//instead of EMultimodeUssdSendMessageNoFdnCheck by call of 
+	//CMmUssdTsy::CompleteSendMessageNoFdnCheck(). This reduces to panic 
+	//with EEtelFaultNotRecognisedTsyHandle.
 
 	User::WaitForRequest(requestStatus);
 	AssertMockLtsyStatusL();
@@ -2750,6 +4434,7 @@
 */
 void CCTsyUssdMessagingFU::TestSendMessageNoFdnCheck0002L()
 	{
+
 	OpenEtelServerL(EUseExtendedError);
 	CleanupStack::PushL(TCleanupItem(Cleanup,this));
 	OpenPhoneL();
@@ -2825,7 +4510,6 @@
 */
 void CCTsyUssdMessagingFU::TestSendMessageNoFdnCheck0003L()
 	{
-
 	OpenEtelServerL(EUseExtendedError);
 	CleanupStack::PushL(TCleanupItem(Cleanup,this));
 	OpenPhoneL();
@@ -2860,7 +4544,6 @@
 	ASSERT_EQUALS(KErrArgument, requestStatus.Int());	
 	
 	CleanupStack::PopAndDestroy(3, this); // data, this, ussdMessaging, ussdMessaging
-
 	}
 
 /**
@@ -2874,8 +4557,6 @@
 */
 void CCTsyUssdMessagingFU::TestSendMessageNoFdnCheck0004L()
 	{
-
-					
 	OpenEtelServerL(EUseExtendedError);
 	CleanupStack::PushL(TCleanupItem(Cleanup,this));
 	OpenPhoneL();
@@ -2970,7 +4651,6 @@
 
 	CleanupStack::PopAndDestroy(6, this); // phone2, telServer2, data, this, 
 	                                      // ussdMessaging1, ussdMessaging2
-
 	}
 
 /**
@@ -2984,8 +4664,6 @@
 */
 void CCTsyUssdMessagingFU::TestSendMessageNoFdnCheck0005L()
 	{
-
-
 	OpenEtelServerL(EUseExtendedError);
 	CleanupStack::PushL(TCleanupItem(Cleanup,this));
 	OpenPhoneL();
@@ -3038,7 +4716,6 @@
 	ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());	
 
 	CleanupStack::PopAndDestroy(3, this); // data, this, ussdMessaging
-
 	}
 
 /**
@@ -3051,8 +4728,7 @@
 @SYMTestType CT
 */
 void CCTsyUssdMessagingFU::TestGetCaps0001L()
-	{
-
+	{	
 	OpenEtelServerL(EUseExtendedError);
 	CleanupStack::PushL(TCleanupItem(Cleanup,this));
 	OpenPhoneL();
@@ -3061,11 +4737,11 @@
 	TInt ret = ussdMessaging.Open(iPhone);
 	ASSERT_EQUALS(KErrNone, ret);
 	CleanupClosePushL(ussdMessaging);
-	
+
 	TUint32 format = RMobileUssdMessaging::KCapsPackedString;
 	TUint32 types  = KUssdTypeCaps;
-		
- 	//-------------------------------------------------------------------------
+
+	//-------------------------------------------------------------------------
 	// TEST C: Successful completion request of
 	// RMobileUssdMessaging::GetCaps when result is not cached.
  	//-------------------------------------------------------------------------
@@ -3074,12 +4750,10 @@
 	TPckg<RMobileUssdMessaging::TMobileUssdCapsV1> pckg(capsV1);
 	ret = ussdMessaging.GetCaps(pckg);
 	ASSERT_EQUALS(KErrNone, ret);
-	
 	ASSERT_EQUALS(format, capsV1.iUssdFormat); // hard coded value
 	ASSERT_EQUALS(types , capsV1.iUssdTypes ); // hard coded value
 
 	CleanupStack::PopAndDestroy(2, this); // this, ussdMessaging
-	
 	}
 
 /**
@@ -3093,7 +4767,7 @@
 */
 void CCTsyUssdMessagingFU::TestGetCaps0003L()
 	{
-
+	
 	OpenEtelServerL(EUseExtendedError);
 	CleanupStack::PushL(TCleanupItem(Cleanup,this));
 	OpenPhoneL();
@@ -3114,7 +4788,7 @@
 	ASSERT_EQUALS(KErrArgument, ret);
 
 	CleanupStack::PopAndDestroy(2, this); // this, ussdMessaging
-
+	
 	}
 
 
@@ -3293,6 +4967,7 @@
 
 void CCTsyUssdMessagingFU::TestReceiveMessageWithTestClientL(RArray<TUssdClientTestData> & aClientTestData, TBool aRandomLoopingTest)
     {
+	
     OpenEtelServerL(EUseExtendedError);
     CleanupStack::PushL(TCleanupItem(Cleanup,this));
     OpenPhoneL();
@@ -3337,7 +5012,7 @@
         // Fail the test if any client has not been created properly
         ASSERT_EQUALS(err, KErrNone);
         }
-
+    
     // All processes created successfully, start their execution
     for (TInt i = 0; i < numClients; i++)
         {
@@ -3347,7 +5022,7 @@
         // Resolves timing issues in WDP/SMP.
         User::After(500000);
         }
-
+    
     if (aRandomLoopingTest)
         {
         // Special case just for TestReceiveMessageWithTestClient0017L
@@ -3697,7 +5372,7 @@
     }
 
 /*
-@SYMTestCaseID BA-CTSY-USSDM-URM-0020
+@SYMTestCaseID BA-CTSY-USSDM-URM-0021
 @SYMComponent telephony_ctsy
 @SYMTestCaseDesc Test ReceiveMessage with multiple clients.
 @SYMTestPriority High
@@ -3728,8 +5403,7 @@
 @SYMTestType CT
 */
 void CCTsyUssdMessagingFU::TestAcceptRejectMisuse0001L()
-    {
-
+    {	
     OpenEtelServerL(EUseExtendedError);
     CleanupStack::PushL(TCleanupItem(Cleanup,this));
     OpenPhoneL();
@@ -3750,6 +5424,7 @@
     AssertMockLtsyStatusL();
     
     CleanupStack::PopAndDestroy(2, this); // this, ussdMessaging
+    
     }
 
 /**
@@ -3763,7 +5438,7 @@
 */
 void CCTsyUssdMessagingFU::TestAcceptRejectMisuse0002L()
     {
-
+	
     OpenEtelServerL(EUseExtendedError);
     CleanupStack::PushL(TCleanupItem(Cleanup,this));
     OpenPhoneL();
@@ -3862,14 +5537,15 @@
     AssertMockLtsyStatusL();
     
     CleanupStack::PopAndDestroy(3, this); // data, this, ussdMessaging
+    
     }
 
 /**
 @SYMTestCaseID BA-CTSY-USSDM-MIUM-0001
 @SYMComponent  telephony_ctsy
-@SYMTestCaseDesc xxx
+@SYMTestCaseDesc BA-CTSY-USSDM-MIUM-0001
 @SYMTestPriority High
-@SYMTestActions xxx
+@SYMTestActions Client calls ReceiveMessage. First USSD message arrives and is offered to client.
 @SYMTestExpectedResults Pass
 @SYMTestType CT
 */
@@ -3938,5 +5614,6 @@
     AssertMockLtsyStatusL();
  
 	CleanupStack::PopAndDestroy(3, this); // data, this, ussdMessaging
+	
 	}
 	
--- a/telephonyserverplugins/ctsydispatchlayer/inc/csupplementaryservicesdispatcher.h	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserverplugins/ctsydispatchlayer/inc/csupplementaryservicesdispatcher.h	Thu Oct 07 19:32:01 2010 +0300
@@ -91,6 +91,7 @@
 	TInt DispatchSetSsPasswordL(const CMmDataPackage* aDataPackage);
 	TInt DispatchGetCallForwardingStatusL(const CMmDataPackage* aDataPackage);
 	TInt DispatchSendUssdMessageL(const CMmDataPackage* aDataPackage);
+	TInt DispatchSendUssdMessageDefaultHandlerL(const CMmDataPackage* aDataPackage);
 	TInt DispatchSendUssdMessageNoFdnCheckL(const CMmDataPackage* aDataPackage);
 	TInt DispatchSendUssdReleaseL();
 	TInt DispatchClearBlacklistL();
--- a/telephonyserverplugins/ctsydispatchlayer/src/cmessagerouter.cpp	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserverplugins/ctsydispatchlayer/src/cmessagerouter.cpp	Thu Oct 07 19:32:01 2010 +0300
@@ -867,7 +867,10 @@
 		break;
 	case EMobileUssdMessagingSendMessage:
 	    ret = iCtsyDispatcherSupplementaryServicesDispatcher->DispatchSendUssdMessageL(aDataPackage);
-	    break;
+	    break;	
+	case EMobileUssdMessagingSendMessageDefaultHandler:
+		ret = iCtsyDispatcherSupplementaryServicesDispatcher->DispatchSendUssdMessageDefaultHandlerL(aDataPackage);
+		break;
 	case EMobileUssdMessagingSendMessageNoFdnCheck:
 	    ret = iCtsyDispatcherSupplementaryServicesDispatcher->DispatchSendUssdMessageNoFdnCheckL(aDataPackage);
 		break;
--- a/telephonyserverplugins/ctsydispatchlayer/src/csupplementaryservicesdispatcher.cpp	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserverplugins/ctsydispatchlayer/src/csupplementaryservicesdispatcher.cpp	Thu Oct 07 19:32:01 2010 +0300
@@ -519,6 +519,42 @@
 	return TSYLOGSETEXITERR(ret);
 	} // CSupplementaryServicesDispatcher::DispatchSendUssdMessageL
 
+TInt CSupplementaryServicesDispatcher::DispatchSendUssdMessageDefaultHandlerL(const CMmDataPackage* aDataPackage)
+/**
+ * Unpack data related to EMobileUssdMessagingSendMessage
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+
+	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
+
+	// Call Handle... method in Licensee LTSY
+	if (iLtsyDispatchSupplementaryServicesSendUssdMessage)
+		{
+		RMobileUssdMessaging::TMobileUssdAttributesV1Pckg** attributesPckg = NULL;
+		RMobileUssdMessaging::TGsmUssdMessageData* data = NULL;
+		aDataPackage->UnPackData(&data, &attributesPckg);
+			
+		__ASSERT_DEBUG(attributesPckg, CtsyDispatcherPanic(EInvalidNullPtr));
+		__ASSERT_DEBUG(data, CtsyDispatcherPanic(EInvalidNullPtr));
+			
+		const RMobileUssdMessaging::TMobileUssdAttributesV1& attributes =(**attributesPckg)();			
+				
+		ret = iLtsyDispatchSupplementaryServicesSendUssdMessage->HandleSendUssdMessageReqL(*data,
+				attributes.iDcs,
+				attributes.iFormat,
+				attributes.iType);
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSupplementaryServicesDispatcher::DispatchSendUssdMessageL
+
+
 TInt CSupplementaryServicesDispatcher::DispatchSendUssdMessageNoFdnCheckL(const CMmDataPackage* aDataPackage)
 /**
  * Unpack data related to EMobileUssdMessagingSendMessageNoFdnCheck
--- a/telephonyserverplugins/licenseetsystub/licensee_tsy_stub/src/cmmmockmesshandler.cpp	Fri Jun 04 13:03:15 2010 +0100
+++ b/telephonyserverplugins/licenseetsystub/licensee_tsy_stub/src/cmmmockmesshandler.cpp	Thu Oct 07 19:32:01 2010 +0300
@@ -109,6 +109,7 @@
         case EMobilePhoneStoreWrite:
         case EMobileBroadcastMessagingReceiveMessage:
         case EMobileUssdMessagingSendMessage:
+        case EMobileUssdMessagingSendMessageDefaultHandler:
         case EMobileSmsMessagingGetMessageStoreInfo: 
         case EMobileSmsMessagingGetSmspListPhase1:
         case EMobilePhoneStoreReadAllPhase1: